CRM – Plugins Sandbox mode


Pessoal,

ht_BuildaSandbox_hero_image

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

 

 

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

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