Pessoal,
Um assunto que vejo que não temos muito material à respeito e gera um pouco de confusão (vejam o artigo oficial da MS). Seria registrar plugins no modo “Sandbox”. Para CRM Online esta é a única forma de registrar um plugin, já para a versão OnPremises podemos registrá-lo como Sandbox ou None. None neste caso significa acesso irrestrito aos comandos .Net e servers.
Realizei uma boa pesquisa à respeito das limitações de registrar um plugin em modo “Sandbox”, Ben Hosking, escreveu brilhantemente à respeito. Mas o consenso é que não existe nada oficial de quais realmente são os limites, porém temos alguns que já foram identificados e podem nos ajudar a decidir no caso de CRM Onpremises ou nos alertarmos sobre a incompatibilidade no CRM Online.
Vejam os itens identificados como restrições com o uso do Sandbox:
- Acesso a arquivos do sistema (como por exemplo o drive “C”);
- Visualizar o Log de Eventos do Sistema;
- Acesso de protocolos diferentes de HTTP e HTTPS;
- Acesso ao Register do Windows;
- Acesso ao “localhost” (loopback);
- Endereço de IP não pode ser usado, devemos usar nome DNS;
- Acesso a outras DLL’s não é permitido (inclusive do GAC);
- Chamar qualquer Web Services;
- Autenticação utilizando Prompt ou salvar as credenciais não é suportado;
- LINQ queries dentro de plugins ou custom workflows;
- Filtered Views sendo executadas dentro de plugins ou custom workflows;
- Uso de serialization de JScript (System.Web.Script.Serialization.JavaScriptSerializer) não é suportado;
Porém temos alguns ganhos com o uso do Sandbox:
- Qualquer desenvolvedor CRM pode implantar plugins quando estão configurados para o modo sandbox (caso não estejam no modo sandbox, é preciso ser Deployment Admin no Active Directory – AD);
- Suporte em tempo real a monitoramento e estatísticas;
- Muito mais seguro e isolado em comparação ao modo None;
- O próprio CRM monitora o processo Sandbox e pode controla CPU/Memória, quando excederem seus limites;
Para termos uma ideia do isolamento, com o uso do Sandbox temos um novo processo sendo utilizado pelo CRM, o Microsoft.Crm.Sandbox.WorkerProcess.exe, sendo assim temos:
- w3wp.exe – Plugins tradicionais (none)
- CRMASyncService.exe – Plugins Assíncronos
- Microsoft.Crm.Sandbox.WorkerProcess.exe – Plugins Sandbox
Em resumo, para CRM Online, cuidado ao customizar demais e se esbarrar em restrições. Agora para clientes OnPremises, vale a pena pensar um pouco à respeito, pois os ganhos podem ser consideráveis. Devemos lembrar do problema em relação a acessar outras DLL’s, o ILMerge pode ser uma saída, mas já apresentou alguns problemas em seu uso quando temos Sandbox no “jogo”. Acredito que em 80 ou 90% dos projetos não tenhamos problema algum com o uso do modo Sandbox, assim é um boa prática usá-lo, afinal quem sabe um dia o CRM OnPremises precise ir para a nuvem (Online)…
[]’s,
Tiago Cardoso