contacto@mbolatam.cl   Ventas: +562 2841 9951 Soporte: +562 2841 9952
Buenas prácticas en el desarrollo de Plugins con Dynamics CRM

Buenas prácticas en el desarrollo de Plugins con Dynamics CRM

A lo largo de estos últimos años trabajando sobre la plataforma Dynamics CRM, he participado en muchos proyectos de auditoria, y casi siempre me he encontrado los mismos errores.

Hay una serie de buenas prácticas que se deben respetar siempre a la hora de desarrollar un Plugin para Microsoft Dynamics CRM

  1. Limitar su uso

En la medida de lo posible, se debe limitar el uso de Plugins en Dynamics CRM, hay que tener en cuenta que es código que se ejecuta en servidor, y por lo tanto un mal uso puede provocar problemas de rendimiento.

Una de las mayores fuentes de problemas en lo que a rendimiento se refiere es a un mal uso de un Plugin pudiendo ocasionar timeouts.

  1. Variables Globales

Este es uno de los errores más comunes a la hora de desarrollar un Plugin para CRM. NUNCA se deben de usar variables globales en un plugin de CRM. Y la explicación es sencilla. Por motivos de rendimiento, CRM cachea las instancias de los plugins, por lo que no siempre pasa por el constructor cuando este es invocado.

  1. Evitar el uso de clases Helper

Un Plugin debe ser lo más ligero posible por lo que hay que evitar el uso de clases helper.

En el SDK de CRM, tenéis a vuestra disposición un proyecto de ejemplo dentro de la carpeta SampleCode/Plug-ins

  1. Consultas

Las consultas deben de ser lo más rápidas posibles, hay que tener en cuenta que el Plugin puede ser síncrono, por lo que se puede dar uno de los peores timeouts que existe… EL USUARIO. Si está asociado a la actualización, y estamos haciendo peticiones costosas, el usuario puede refrescar la página pensando que no responde. Esto provoca nuevas llamadas al plugin pudiendo provocar bloqueos.

Todas las consultas que se hagan a CRM, se deberán hacer especificando siempre la propiedad NoLock = true en el caso de un QueryExpression.

Hay que recordar que en el caso de Linq a través del OrganizationServiceContext, no está soportado nolock, por lo que solo se deberá hacer uso para consultas que no sean muy costosas.

  1. Lecturas adicionales

Otro de los errores más comunes que me suelo encontrar mucho es cuando un plugin está asociado al evento Update, y dentro del propio Plugin actualizar dicho registro. Esta acción provoca que se vuelva a llamar al plugin de nuevo, así hasta 8 veces, que es cuando CRM detiene este bucle evitando así que sea infinito. La solución en este caso pasa por modificar directamente la entidad que se recibe en el contexto.

Si quieres saber más contacto@addx.cl

Comentarios vía Facebook