Compartir a través de


Integración de Azure Service Bus

Microsoft Dataverse admite la integración con Azure. Los desarrolladores pueden registrar complementos con Dataverse que pasan datos de mensajes en tiempo de ejecución, conocidos como contexto de ejecución, a una o varias soluciones de Azure en la nube. Esta capacidad es especialmente importante porque Azure es una de las pocas soluciones admitidas para comunicar el contexto de tiempo de ejecución en aplicaciones de línea de negocio (LOB) externas.

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 empresariales que procesa la operación de Dataverse actual. Un usuario, flujo de trabajo o aplicación inicia este procesamiento cuando solicitan una determinada operación de Dataverse. La canalización de eventos pasa el contexto de datos a los complementos o las actividades de flujo de trabajo personalizadas que estén registradas para ejecutarse en la combinación de solicitud y tabla específica que la canalización esté procesando actualmente. El contexto de datos es de tipo IPluginExecutionContext cuando se transmite a través de la canalización de ejecución de eventos y de tipo RemoteExecutionContext cuando se publica en el Service Bus.

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. La compatibilidad con dichos formatos de datos permite interoperabilidad multiplataforma donde los clientes no .NET hospedados en Azure pueden leer datos de Dataverse desde el bus de servicio.

Importante

Cuando el tamaño de toda la carga HTTP supera los 192 KB, se quitan las siguientes propiedades:

ParentContext, InputParameters, , PreEntityImages, PostEntityImages

Algunas operaciones no incluyen estas propiedades.

  • Si el tamaño de la carga es inferior a 192 KB después de quitar los datos adicionales, el sistema agrega una propiedad adicional MessageMaxSizeExceeded al BrokeredMessage. Esta propiedad indica que algunos de los datos se truncan.
  • Si el tamaño de la carga supera los 192 KB después de quitar los datos adicionales, se produce un error y no se envía el mensaje.

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

Complementos

Los complementos son uno de los dos métodos que puede usar para iniciar la publicación del mensaje que contiene el contexto de datos en Azure Service Bus. El otro método es una actividad de flujo de trabajo personalizada. La característica de conexión de Dataverse-Azure admite dos tipos de complementos: estándar (OOB) y personalizados. En cualquier caso, registre el complemento para que se ejecute de forma asincrónica para obtener el mejor rendimiento del sistema.

Hay disponible un complemento predeterminado compatible con Azure (OOB). Regístrelo con Dataverse registrando un punto de conexión de servicio con la herramienta de registro de complementos. 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 sandbox. Un complemento personalizado puede iniciar la publicación del contexto de datos en el Service Bus a través del servicio de notificación de extremo de servicio. Agregar código para invocar este servicio hace que el complemento sea compatible con 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, puede escribir actividades de flujo de trabajo personalizadas para iniciar la publicación del contexto de datos del mensaje de solicitud actual en Azure Service Bus mediante el servicio de notificación del punto de conexión de servicio. Para obtener más información, consulte Extensiones de flujo de trabajo.

Servicio asincrónico

Una vez lo notifica el servicio de notificación de punto de conexión 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. En la aplicación web, elija Configuración avanzada para mostrar la interfaz de Dynamics 365 heredada. A continuación, seleccione Configuración>Trabajos del sistema.

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 Dataverse publicados. La autorización de Dataverse para enviar el contexto de los datos al bus de servicio y permitir que las aplicaciones de escucha lo lean es administrada por las 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 Azure funcionen, una cuenta de solución de Azure Service Bus debe contener al menos una solución y esa solución debe contener uno o varios puntos de conexión de servicio. Para un contrato de punto de conexión de retransmisión, una aplicación de escucha que sea "compatible con Dataverse" debe escuchar activamente en el punto de conexión para las solicitudes de Dataverse en el Service Bus. Para un contrato de punto de conexión de cola, un agente de escucha no tiene que escuchar activamente. Hace que un agente de escucha sea compatible con Dataverse al vincularlo con el ensamblado de Microsoft.Xrm.Sdk, de manera que define el tipo RemoteExecutionContext. Para obtener más información, consulte 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. Para más información sobre Event Hubs, consulte Uso de datos de eventos en la solución de Azure Event Hubs.

Escenario de Dataverse a Service Bus

Este escenario implementa los componentes de conexión mencionados anteriormente. Como requisito previo, configure SAS para que reconozca Dataverse como el emisor admitido y configure la solución de Azure Service Bus con reglas para permitir que Dataverse publique en el punto de conexión donde está el receptor.

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

Escenario de Dynamics 365 para el Service Bus.

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

  1. Registre una aplicación de escucha en un punto de conexión en la solución de Azure Service Bus. El agente de escucha comienza a escuchar activamente el contexto de ejecución remota de Dataverse en Service Bus.

  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 afirmaciones 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 Service Bus 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 Dataverse y una solución de Azure.

Para cada punto de conexión de solución, configure un contrato que defina el control de estos "mensajes" de contexto de ejecución remota en Service Bus y la seguridad que debe usar el punto de conexión. Un punto de conexión recibe mensajes de Service Bus mediante uno de los contratos admitidos que se enumeran aquí.

Cola

Un contrato de cola proporciona una cola de mensajes en la nube. Cuando utilizas un contrato de cola, un oyente no necesita escuchar activamente los mensajes en el punto de conexión. Para las colas, hay una lectura destructiva y una lectura no destructiva. Una lectura destructiva lee un mensaje disponible de la cola y quita el mensaje. Una lectura no destructiva no quita un mensaje de la cola.

Dataverse admite una cola persistente. Las colas persistentes tienen una duración de disponibilidad de mensajes larga pero finita que puede especificar en el código.

Unidireccional

Un contrato unidireccional necesita un oyente activo. Si no hay una escucha activa en un extremo, la publicación en el Service Bus no se realizará correctamente. Dataverse reintenta 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 eventualmente 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 el agente de escucha al complemento de Dataverse o la actividad de flujo de trabajo personalizada que inició la publicación.

REST

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

Tema

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

Centros de eventos

Este tipo de contrato se aplica a las soluciones de Azure Event Hubs.

Identificar el tipo de seguridad que usa un contrato forma parte de la configuración del contrato. Un contrato puede usar seguridad de transporte, que utiliza Transport Layer Security (TLS) o Secure Sockets Layer (SSL) (https).

La autenticación basada en declaración se utiliza para un acceso seguro al Bus de Servicio. La notificación que se usa para realizar la autenticación en el Service Bus se genera a partir de aplicaciones de Dataverse y está firmada por el certificado AppFabricIssuer que se especifica en la base de datos de configuración de aplicaciones de Dataverse.

Administración de errores en tiempo de ejecución

Si se produce un error después de un intento posterior a Service Bus, compruebe el estado del trabajo del sistema relacionado en la aplicación web para obtener más información sobre el error. Si el Service Bus está inactivo o un agente de escucha o punto de conexión no está disponible, el mensaje actual que se está procesando en Dataverse no se publica en el bus. El servicio asincrónico sigue intentando publicar el mensaje en un patrón exponencial, en el que primero intenta publicar con frecuencia y luego en intervalos cada vez más largos. En el caso de un error interno de Dataverse, no se intenta enviar mensajes. Para servicio del bus externo o error de red, el trabajo del sistema relacionado se encuentra en un estado de Espera.