Ola Pessoas,E impressionante como a cada dia a plataforma Dynamics CRM ganha mais forca entre a comunidade de desenvolvedores. Abaixo duas novas fontes de pesquisas: Microsoft Dynamics CRM Developer Center on MSDNMicrosoft Dynamics CRM code samples on MSDN Boa diversao![]'sRicardo Cunha Ola Pessoas,Semana passada tive a oportunidade de conhecer uma personalidade da comunidade brasileira de Dynamics CRM, trata-se de Hamilton Oliveira.O Hamilton e Microsoft Developer Evangelist focado em Dynamics CRM e recentemente inaugurou seu blog para contribuir ainda mais com a comunidade aqui no Brasil.E a comunidade dinamica ganhando cada vez mais forca na terra do samba.Boa sorte Hamilton![]'sRicardo Cunha Ola Pessoas,Desde muito tempo sou amante dos Design Patterns e, por conta disto, sempre que tenho contato com uma aplicacao de software tento de alguma maneira identifica-los para aperfeicoar cada vez mais meus conhecimentos quanto a suas aplicacoes.Quando desenvolvemos para o Microsoft Dynamics CRM temos acesso ha um Pattern chamado Dependecy Injection que e extremamente util e complexo, mas que, na maioria dos casos, os desenvolvedores nem sabem que estao utilizando tal conceito. Claro que na pratica isto nao importa muito, mas para nosso crescimento e aperfeicoamento como desenvolvedores ter o conhecimento de tal mecanismo, ao menos na minha otica, pode ser fundamental.O Pattern Dependecy Injection, como o proprio nome sugere, permite que voce injete uma dependencia dinamica a sua aplicacao, a fim de prover uma certa "inversao de controle", pois esta "dependencia externa" pode alterar completamente o comportamento do seu sistema.No Microsoft Dynamics CRM nos vemos a implementacao deste pattern atraves do mecanismo de Plug-ins.Quando implementamos a interface IPlugin estamos criando a dependencia externa citada na definicao do pattern.Veja o Exemplo Abaixo:namespace MyPlugins {public class PluginImplementation : IPlugin {public void Execute(IPluginExecutionContext context) {// implementacao do seu metodo;}}}Apos implementar a classe acima e registra-la no MS CRM o PluginRegistration Tool encarrega-se de criar os registros nas tabelas PluginAssemblyBase, para armazenar o nome do assembly gerado "MyPlugins.dll", e na tabela PluginTypeBase, para armazenar o caminho completo ate a classe que implementa a interface IPlugin, no nosso caso MyPlugins.PluginImplementation.Apos a pesquisa dos dados do assembly que voce registrou no banco de dados sera executado no kernel do MS CRM um trecho de codigo conforme apresentado nas linhas abaixo:// O codigo abaixo executado pelo kernel do MS CRM.// Criando a instancia do plugin registrado pela ferramenta. IPlugin plugin = (IPlugin) Assembly.Load("MyPlugin.dll").CreateInstance("MyPlugin.PluginImplementation");// Disparando o metodo Execute da classe PluginImplementation, criado por voce. plugin.Execute("Instancia da interface IPluginExecutionContext");Com isto temos a "inversao de controle", conforme citado anteriormente, pois neste momento a execucao do metodo "Execute()", que ocorre no kernel do MS CRM, passa a estar totalmente sob seu controle e assim vemos a utilizacao do pattern Dependency Inection. Simples nao e?Um outra arquitetura que explora muito este pattern e o proprio ASP.NET, aonde temos a possibilidade de fazer inumeras configuracoes no web.config e machine.config, como HttpModules, HttpHandler, MembershipProvider, etc.Se analisarmos bem estamos cercados pelos Design Patterns, so precisamos estar atentos para identificar suas vantagens e a partir dai utiliza-los da melhor forma possivel em nossas aplicacoes.[]'sRicardo Cunha Oi,Desde que iniciei minhas atividades na Tridea tenho sido chamado de