Pessoal,
Um assunto que em alguns situações não é tão simples de escolhermos ou sabermos o que ganhamos ou perdemos com o uso, trata-se de manipular as classes CRM usando early bound (classes tipadas) ou late bound (classes não tipadas).
Assim decide escrever este post para colocar as vantagens e desvantagens de cada opção.
Early Bound
Utilizamos o aplicativo CrmSvcUtil (dentro da pasta bin do SDK), com as devidas configurações e execução conseguimos obter um “mapa” contendo todas as entidades que nossa organização de CRM possui em forma de classes tipadas, ou seja, temos objetos .Net que refletem as entidades CRM.
Vantagens:
- Melhor aproveitamento do Intellisense do Visual Studio, a sintaxe é testada em tempo de compilação;
- Aumento de produtividade para criar códigos, por temos classes tipadas que assessoram o desenvolvimento;
- Menor curva de aprendizado para não desenvolvedores de Dynamics CRM, pois irão consumir classes, métodos e atributos;
Desvantagens:
- Ter conhecimento de como parametrizar e executar o CrmSvcUtil;
- Manipulação de várias entidades, atributos e relacionamentos para que sejam realizados os desenvolvimentos;
- Não é possível manipular objetos que não existam no CRM, pois todos são tipados;
- Todas vez que tivermos qualquer alteração em relação a estrutura entidades do CRM, como novas entidades, atributos, relacionamentos, precisamos executar novamente o CrmSvcUtil, isso é um trabalho que pode ser constante (dependendo da fase do projeto) e que pode impactar em várias áreas do projeto;
Late Bound
Fazemos uso da classe “Entity” que é tipadas por nós mesmos de acordo com nossa utilização, deste modo, nossa sintaxe será realmente testada apenas em momento de execução.
Vantagens:
- Manipulação de uma única classe (Entity) para realizar os desenvolvimentos;
- Podemos manipular objetos que não existam no CRM, como por exemplo criar um atributo em tempo de execução e depois utilizá-lo no código;
- Por não tipar as classes é menos afetado as mudanças nas entidades do CRM;
Desvantagens:
- Requer uma maior conhecimento na estrutura de entidades do CRM;
- Pouco aproveitamento do Intellisense do Visual Studio, a sintaxe é testada apenas em tempo de execução;
Bom espero que tenha clareado alguns pontos que estavam “abertos”, até o momento procurei não expressar minha opinião quanto a utilização, mas com algum tempo realizando desenvolvimentos para o CRM 2011, acredito que o caminho para a maioria dos casos seja o uso de Late Bound, apesar de ser factível à erros, temos que nos preocupar com apenas uma única interface de acesso e acho válido termos o conhecimento das entidade do CRM, podemos criar melhor com esta abordagem.
[]’s,
Tiago Cardoso