Integración de Azure

Microsoft Dataverse admite la integración con Azure. Los desarrolladores pueden registrar complementos con Dataverse que pueden pasar datos de mensajes en tiempo de ejecución, conocidos como el contexto de la ejecución, a una o varias soluciones de Azure en la nube. Esto es especialmente importante porque Azure es una de las dos soluciones compatibles para comunicar el contexto de tiempo de ejecución obtenido en un complemento a las aplicaciones de línea de negocio (LOB) externas. La otra solución es la funcionalidad de acceso a los extremos personalizados externos desde un complemento registrado en el espacio asilado.

Azure Service Bus proporciona un canal de comunicación seguro y fiable entre datos en tiempo de ejecución de Dataverse y aplicaciones externas de línea de negocio (LOB) basadas en la nube. Esta funcionalidad es especialmente útil para mantener los sistemas dispares de Dataverse u otros servidores de Dataverse sincronizados con los cambios en los datos profesionales.

Elementos principales de la conexión

Los elementos clave que implementan la conexión entre Dataverse y Azure Service Bus se describen más adelante. Un diagrama en la siguiente sección muestra estos elementos en funcionamiento.

Contexto de datos

El contexto de datos contiene los datos de negocio que se procesan como parte de la operación actual de Dataverse. Este proceso se inició cuando el usuario efectuó una solicitud para realizar una determinada operación, un flujo de trabajo, o una aplicación, a la plataforma de Dynamics 365. El contexto de datos se pasa a los complementos o las actividades de flujo de trabajo personalizadas que estén registradas con la canalización de eventos para ejecutarse en la combinación de solicitud y tabla específica que se esté procesando actualmente. El contexto de datos es del tipo IPluginExecutionContext cuando se está pasando con la canalización de ejecución del evento y RemoteExecutionContext cuando se publica en el bus de servicio.

El contexto de datos contenido en el mensaje que se publica en el Azure Service Bus se puede formatear en XML o JSON además del formato binario .NET predeterminado. Esto proporciona interoperabilidad multiplataforma donde los clientes no .NET hospedados en Azure pueden leer datos de aplicaciones de Dataverse desde el bus de servicio.

Importante

Cuando el tamaño de la carga HTTP completa supera 192 Kb, las propiedades siguientes se quitarán:

Algunas operaciones no incluyen estas propiedades.

  • Si el tamaño de la carga está por debajo de 192 Kb después de quitar los datos adicionales, una propiedad MessageMaxSizeExceeded adicional se agrega al BrokeredMessage enviado por el sistema. Esto indica que algunos de los datos se han truncado.
  • Si el tamaño de la carga supera 192 Kb después de quitar los datos adicionales, se produce un error y el mensaje no se envía.

Para obtener más información acerca de las tecnologías descritas anteriormente, consulte:

Complementos

Los complementos son uno de los dos métodos usados para iniciar la publicación del mensaje que contiene el contexto de datos en el Azure Service Bus, el otro método es una actividad de flujo de trabajo personalizada. Existen dos tipos de complementos compatibles con la característica de conexión Dataverse-Azure: predefinidos (OOB) y personalizados. En ambos casos, se recomienda registrar el complemento para ejecutarlo asincrónicamente para obtener un rendimiento óptimo del sistema.

Se proporciona un complemento OOB apto para Azure con Dataverse y se puede registrar a través de la herramienta de registro de complementos. Este complemento se ejecuta en plena confianza con la plataforma de aplicaciones de Dataverse. Debe registrar un 'paso' de complemento en la canalización de ejecución de eventos que identifique la combinación de mensaje y tabla que desencadena la ejecución del complemento y la realización de la notificación de publicación. Cuando se ejecuta, el complemento notifica el servicio asincrónico con un servicio de notificación de extremo de servicio (IServiceEndpointNotificationService), para publicar el contexto de datos de la solicitud actual en el Azure Service Bus.

También puede escribir su propio complemento personalizado que sea "compatible con Azure". El complemento personalizado se ejecuta en el modo de confianza parcial en el espacio aislado. Un complemento personalizado puede iniciar la publicación del contexto de datos en el bus de servicio a través del servicio de notificación de extremo de servicio. Si agrega código para llamar a este servicio hará que el complemento sea "apto para Azure".

Para obtener más información acerca de los complementos en general, consulte Escribir un complemento. Para obtener más información acerca de los complementos compatibles con Azure, consulte Escribir un complemento con Azure personalizado.

Actividades personalizadas del flujo de trabajo

De forma similar a los complementos, las actividades de flujo de trabajo personalizadas se pueden escribir para iniciar la publicación del contexto de datos de mensaje de la solicitud actual en el Azure Service Bus utilizando el servicio de notificación de extremo de servicio. Más información: Extensiones de flujo de trabajo

Servicio asincrónico

Una vez notificado por el servicio de notificación de extremo de servicio, el servicio asincrónico controla la publicación del contexto de datos del mensaje de solicitud que está procesando actualmente la canalización de ejecución de eventos en el Azure Service Bus. Cada publicación la realiza un trabajo del sistema del servicio asincrónico. Un usuario puede ver el estado de cada trabajo del sistema con la vista Trabajos del sistema de la aplicación web de Power Apps.

Para obtener más información sobre el servicio asincrónico consulte Servicio asincrónico.

Bus de servicio de Microsoft Azure

El bus de servicio retransmite el contexto de datos del mensajes de solicitud entre Dataverse y las aplicaciones de escucha de la solución de Azure Service Bus. El bus de servicio también proporciona seguridad de datos de manera que solo las aplicaciones autorizadas puedan tener acceso a los datos de Dynamics 365 publicados. La autorización de aplicaciones de Dataverse para publicar el contexto de datos en el bus de servicio y para que las aplicaciones de escucha lo lean se administra mediante firmas de acceso compartido (SAS) de Azure.

Para obtener más información acerca del bus de servicio, consulte Bus de servicio. Para obtener más información sobre la autorización del bus de servicio, consulte Autenticación y autorización de bus de servicio.

Solución de Microsoft Azure

Para que la conexión de Dataverse y la conexión de Azure funcionen, debe tener al menos una solución en una cuenta de soluciones de Azure Service Bus, donde la solución contenga uno o varios extremos de servicio. Para un contrato de extremo de retransmisión, una aplicación de escucha que es “compatible con Dataverse” debe escuchar activamente en el extremo para la solicitud de Dataverse en el bus del servicio. Para un contrato de extremo de cola, un agente de escucha no tiene que escuchar activamente. Un agente de escucha es "compatible con Dataverse" al vincularlo con el ensamblado de Microsoft.Xrm.Sdk, de manera que se define el tipo RemoteExecutionContext. Más información: Escribir un agente de escucha para una solución de Microsoft Azure.

Dataverse admite el envío de datos de eventos a una solución Azure Event Hubs. Más información acerca de los centros de eventos, consulte Trabajar con datos de eventos en la solución del Centro de eventos de Azure.

Escenario de Dataverse a Service Bus

Ahora vamos a identificar un escenario que implementa los componentes de conexión mencionados anteriormente. Como requisito previo, SAS se ha configurado para reconocer a aplicaciones de Dataverse como el emisor compatible y la solución de bus de servicio de Azure se ha configurado con reglas para permitir que Dataverse pueda publicar en el extremo donde está el agente de escucha.

En el siguiente diagrama se muestran los elementos físicos que constituyen el escenario.

Escenario de Dynamics 365 para el bus de servicio.

La secuencia de eventos como se identifica en este diagrama es la siguiente:

  1. Una aplicación de escucha está registrada en un extremo de la solución de Azure Service Bus y comienza la escucha activa para el contexto remoto de ejecución de Dataverse en el bus del servicio.

  2. Un usuario realiza una operación determinada en Dataverse que desencadena la ejecución del complemento OOB registrado o un complemento compatible de Azure personalizado. El complemento inicia una publicación, a través de un trabajo del sistema de servicio asincrónico, del contexto de datos de solicitud actual para el bus del servicio.

  3. Se autentican las notificaciones publicadas por Dataverse. A continuación, el bus del servicio retransmite el contexto remoto de ejecución al cliente de escucha. El agente de escucha procesa la información de contexto y realiza alguna tarea de negocio relacionada con esa información. El bus de servicio notifica al servicio asincrónico de una publicación correcta y establece el trabajo del sistema relacionado con un estado completado.

Establecer un contrato entre aplicaciones de Dataverse y una solución de Azure

Para cada extremo de la solución, configure un contrato que defina la administración de estos “mensajes” de contextos remotos de ejecución en el bus de servicio y la seguridad que deben usarse en el extremo. Los mensajes de bus del servicio se reciben en un extremo mediante uno de los contratos admitidos que se muestran a continuación.

Cola

Un contrato de cola proporciona una cola de mensajes en la nube. Con un contrato de cola, un agente de escucha no tiene que escuchar activamente los mensajes del extremo. Para las colas, hay una lectura destructiva y una lectura no destructiva. Una lectura destructiva lee un mensaje disponible de la cola y el mensaje se quita. Una lectura no destructiva no quita un mensaje de la cola.

El tipo de cola compatible con aplicaciones de Dataverse se llama cola persistente. Las colas persistentes tienen una duración de la disponibilidad del mensaje larga pero finita que se puede especificar en el código.

Unidireccional

Un contrato unidireccional necesita un agente de escucha activo. Si no hay una escucha activa en un extremo, la publicación en el bus de servicio no se realizará correctamente. Las aplicaciones de Dataverse reintentarán la publicación en intervalos de tiempo exponencialmente cada vez más grandes hasta que el trabajo del sistema asincrónico que está publicando la solicitud se anule eventual y su estado se establezca como "error".

Bidireccional

Un contrato bidireccional se asemeja a un contrato unidireccional, salvo que el valor de una cadena se puede devolver desde un cliente de escucha al complemento o la actividad de flujo de trabajo personalizada de Dataverse que inició la publicación.

REST

Un contrato REST se asemeja a un contrato bidireccional en un extremo REST.

Tema

Similar a una cola salvo que uno o varios agentes de escucha pueden suscribirse para recibir mensajes del tema.

Centro de eventos

Este tipo de contrato se aplica a las soluciones del centro de eventos de Azure.

Importante

Para usar estos contratos, debe especificar sus aplicaciones de escucha mediante el SDK de Azure versión 1.7 o posterior.

Identificar el tipo de seguridad que usa un contrato forma parte de la configuración del contrato. Un contrato puede usar la seguridad de transporte, que usa Seguridad de la capa de transporte (TLS) o Capa de sockets seguros (SSL) (https).

La autenticación de notificaciones se usa para un acceso seguro al bus de servicio. La notificación que se usa para realizar la autenticación en el bus del servicio se genera en Dataverse y está firmada por el certificado AppFabricIssuer que se especifica en la base de datos de configuración de Dataverse.

Administración de errores en tiempo de ejecución

Si se produce un error después de intentar realizar una publicación en el bus de servicio, compruebe el estado del trabajo del sistema relacionado en la aplicación web para obtener más información sobre el error. Si el bus de servicio está inactivo o un cliente de escucha/extremo no está disponible, el mensaje actual que se está procesando en Dataverse no se publicará en el bus. El servicio asincrónico seguirá intentando publicar el mensaje en un patrón exponencial donde al principio tratará de realizar la publicación con frecuencia y después lo intentará en intervalos cada vez más largos. Para un error interno de aplicaciones de Dataverse, las publicaciones del mensaje no se intentan. Para servicio del bus externo o error de red, el trabajo del sistema relacionado estará en un estado de "espera".

Nota

¿Puede indicarnos sus preferencias de idioma de documentación? Realice una breve encuesta. (tenga en cuenta que esta encuesta está en inglés)

La encuesta durará unos siete minutos. No se recopilan datos personales (declaración de privacidad).