Ola Pessoas, Atualmente quando analiso desenvolvimentos para o MS CRM vejo uma tendencia muito grande dos desenvolvedores acreditarem que XML e ASP.NET Web Services sao os unicos recursos para um acesso remoto aos Servicos do CRM, quando estamos customizando um Formulario ou um botao ISV via Java Script. Contudo se analisarmos o cenario mais friamente chegaremos a conclusao de que nem XML, muito menos Web Services serao a melhor solucao quando estamos pensando em ganhos de desempenho (por conta do empacotamento e envio destes formatos que causam um overhead consideravel no trafego da rede), muito menos simplicidade na arquitetura, porque certamente voce precisara pensar uma camada so para tratar o retorno de chamadas que sao realizadas atraves de Java Script, a fim de manipular os dados no formato XML, que convenhamos, da uma baita dor de cabeca quando temos cenarios mais complexos de envio e recebimento de informacoes. Algumas das alternativas para sanar problemas como os citados acima sao o WCF e o formato JSON que, juntos, aliam ganho de performance e maior simplicidade no design na aplicacao.Abaixo segue um exemplo da utilizacao destes dois recursos:Importante: Estou considerando neste exemplo que voce ja possui os conhecimentos de como criar um projeto WCF, publica-lo para acesso atraves de HTTP e referenciar o SDK do Microsoft Dynamics CRM ao seu projeto.1. Definicao do contrato do Servico[ServiceContract]public interface IClienteService {[OperationContract]account Obter(Guid accountId);}2. Implementacao do contratopublic class ClienteService : IClienteService {public account Obter(Guid accountId) {// return CrmService.Retrieve("account", accountId, new AllColumns());}}3. Arquivo de configuracao do Servico4. Configuracao da chamada Java Scriptvar xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");// Informando o caminho do servico e o metod que sera executadovar url = http://localhost:1700/ClienteService.svc/Obter;// Configuracao no formato JSONvar accountId = '{"accountId":"' + '{6f5cfcf2-ba2d-481c-bd85-5c03ba8a652d}' + '"}';xmlHttp.open("POST", url, false);xmlHttp.setRequestHeader("Content-type", "application/json; charset=utf-8");xmlHttp.setRequestHeader("Content-Length", data.length);xmlHttp.send(accountId);// Metodo que disparado apos a execucao da pesquisaxmlHttp.onreadystatechange = function() {if (xmlHttp.readyState == 4) {var account = eval('(' + xmlHttp.responseText + ')').d;alert(account.accountid.Value);alert(account.name);}}No exemplo acima estamos fazendo uma consulta a base do MS CRM utilizando como "Proxy" um servico WCF que expoe um tipo complexo do MS CRM, sem a necessidade de se criar uma camada adicional para tratar o retorno do MS CRM para um tipo qualquer, como XML, por exemplo.Ja no lado Client, fica claro que a configuracao da pesquisa ficou muito mais simplificada. Alem disto, devido a utilizacao do formato JSON podemos trabalhar com o objeto "account" da mesma forma se estivessemos manipulando este objeto no C#.Um outro aspecto importante e quanto ao desempenho desta chamada, pois nao se fez necessario o empacotamento no protocolo SOAP, livrando-nos assim de uma quantidade excessiva de tags XML. Neste caso as unicas informacoes submetidas sao o valor -- {"accountId":"{6f5cfcf2-ba2d-481c-bd85-5c03ba8a652d}"}--, que esta no formato requirido pelo padrao JSON, e os valores de Content-Type e Content-Length adicionados ao Header da requisicao.Como vimos com WCF e JSON podemos criar uma mistura no minimo interessante como alternativa aos famigerados Web Services e XML no acesso as informacoes, via JavaScript, dentro da plataforma Dynamics CRM.[]'sRicardo Cunha Salve Pessoas!Ha algumas semanas atras conheci o Guilherme Bacellar, brother que trabalha com .Net e esta em parceria conosco em um projeto