CRM 2013 – Tipos de Consultas, qual a melhor?


Pessoal,

Um assunto não exaustivo e acredito que possa sempre ser um motivo de conversar entre desenvolvedores de Dynamics CRM. As “benditas” formas de se realizar consultas! rs

Mesmo tendo uma preferência, decidi “começar do zero”, ter o detalhamento de cada tipo e suas características. Assim, fui ao SDK…

Choose your development style for managed code

PS: O material está de ótima valia, apenas senti falta de uma menção ao uso das Views…

Bom, vamos aos tipos de consultas existentes na versão 2013:

  • FetchXML
    • Prós:
      • Baseado em marcações XML;
      • Permite agrupamentos (multi entidades em uma mesma consulta) e agregações (sum, avg, count, etc);
      • O próprio Dynamics CRM pode ser usado para facilitar as construções das queries, através de uma Localização Avançada > Baixar Buscar XML;
      • É a única forma de realizar queries em um relatório (Reporting Services) de um Dynamics CRM Online. Assim, o uso constante no dia-a-dia trás familiaridade com o formato;
      • Podemos recuperar queries salvas no próprio Dynamics e executá-las via codificação;
      • Simples codificação, pois enviamos uma string para o método Execute do OrganizationSevice;
      • Usamos a mesma sintaxe para linguagem Client (JScript) e Server (C#);
    • Contras:
      • Apenas podemos usar fetchXML quando estamos trabalhando com código Late-Bound (não tipado), pois o retorno é uma EntityCollection;
      • Performance prejudicada por conta das conversões internas;
      • Possui algumas limitações quando temos uma grande quantidade de dados ou resultados;
  • Linq
    • Prós:
      • Grande facilidade na codificação, pois usamos linguagem .Net nativa;
    • Contras:
      • Mesmo utilizando linguagem nativa .Net, internamente existe uma conversão para QueryExpression, assim “herda” as limitações;
  • QueryExpression
    • Prós:
      • Possui a maioria das funcionalidades do FetchXML (*);
      • Possui suporte para Early-Bound (tipado) e Late-Bound (não tipado);
      • Performance é potencializada por usarmos linguagem “tipada”;
    • Contras:
      • (*)Não permite agrupamentos (apenas uma única entidade por consulta) e agregações;
      • Não temos uma IDE para acelerar a codificação;
      • Não conseguimos usá-lo em um relatório, devido ser um objeto C#;
      • Codificação complexa, pois temos uma composição de objetos da QueryExpression que precisam ser compreendidos para realizarmos as consultas (ColumnSet, ConditionExpression, FilterExpression, OrderExpression);
      • Possui algumas limitações quando temos uma grande quantidade de dados ou resultados;
  • Views da Base de Dados
    • Prós:
      • Familiaridade para desenvolvedores “não Dynamics CRM”, pois fazemos as consultas vias T-SQL;
      • Trabalha muito bem com grande quantidade de dados e resultados;
      • É altamente recomendado para desenvolvimentos de migrações, integrações em larga escala;
    • Contras:
      • Como qualquer aplicação que precisa acessar um banco de dados diretamente, precisamos fazer uma conexão com o banco do Dynamics CRM, algo não muito indicado;
      • Não são suportadas para o Dynamics CRM Online;

Bom acima temos alguns pontos para ponderar o uso de um o outro tipo de consulta, lembrando que podemos usar todos (ou a maioria) em um mesmo projeto, mesmo que pareça errado. Tudo depende do que precisa ser feito e as políticas de desenvolvimentos adotadas por sua empresa.

Espero ter ajudado na desmitificação dos tipos diferentes que temos.

PS: Caso eu tenha esquecido de algum ponto de indicação ou contra indicação, me ajudem a inserir, por favor!

[]’s,

Tiago Cardoso

3 comentários em “CRM 2013 – Tipos de Consultas, qual a melhor?

    1. Erick,

      Para projetos onde temos profissionais que já trabalham com CRM algum tempo, prefiro FetchXML é certamente o que mais abrange cenários de utilização e facilidades. Quando temos uma equipe mais junior, o uso do Linq ajuda por conta do .Net.

      []’s,
      Tiago Cardoso

      Curtir

Deixe um comentário

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.