Compartir a través de


Escriba una aplicación de escucha para una solución de Microsoft Azure

 

Publicado: enero de 2017

Se aplica a: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

Este tema describe cómo escribir un aplicación de escucha de la solución de Microsoft Azure que pueda leer y procesar los mensajes de Microsoft Dynamics 365 que se publican en el Bus de servicio de Microsoft Azure. Como requisito previo, debería familiarizarse con la manera de escribir un escucha de Bus de servicio de Microsoft Azure antes de intentar comprender los detalles de un escucha de Microsoft Dynamics 365 . Para obtener más información, consulte la Documentación del bus de servicio de Azure.

En este tema

Escribir un escucha de cola

Escribir un escucha unidireccional, bidireccional o REST

Mensajes de filtro

Leer el contexto de los datos en varios formatos de datos

Escribir un escucha de cola

Una cola de mensajes es un repositorio de mensajes recibidos de un extremo de bus de servicio. Un escucha de cola es una aplicación que lee y procesa los mensajes en cola. Puesto que los mensajes de bus de servicio se almacenan en una cola, un escucha no tiene que escuchar activamente para que los mensajes sean recibidos en la cola. Un escucha de cola se puede iniciar una vez que los mensajes han llegado a la cola y seguir procesando los mensajes. Otros tipos de escuchas descritos en la siguiente sección deben escuchar activamente o perderán la oportunidad de leer un mensaje. Estos mensajes se pueden originar desde Microsoft Dynamics 365 o en algún otro origen. .

Importante

Al escribir un escucha de cola, compruebe cada acción del encabezado del mensaje para determinar si el mensaje se originó desde Microsoft Dynamics 365. Para obtener información para hacerlo, vea Mensajes de filtro.

Puede hacer una lectura destructiva del mensaje usando Recibir en modo ReceiveAndDelete, donde el mensaje se lee y se quita de la cola, o una lectura no destructiva con el modo PeekLock, donde el mensaje se lee, pero se mantiene en la cola. El código de ejemplo persistente de escucha de cola proporcionado en este SDK realiza una lectura destructiva. Para obtener más información acerca de la lectura de mensajes desde una cola, consulte Cómo recibir mensajes de una cola.

Un tema es similar a una cola, pero implementa un modelo de publicación o suscripción. Puede haber uno o varios escuchas suscritos al tema que reciben mensajes de su cola.Más información:Colas, temas y suscripciones

Importante

Para usar estos contratos de cola o tema, debe escribir sus aplicaciones de escucha mediante el SDK de Azure versión 1.7 o superior.

El uso de colas y temas en el diseño de software multisistema puede dar lugar al desemparejamiento del sistema. Si la aplicación de escucha llega a estar no disponible, la entrega del mensaje de Microsoft Dynamics 365 se realizará correctamente y la aplicación de escucha podrá seguir procesando el mensaje de la cola cuando vuelva a estar en línea.Más información:Colas, temas y suscripciones

Escribir un escucha unidireccional, bidireccional o REST

Además del escucha de colas descrito anteriormente, puede escribir un escucha para otros tres acuerdos de bus de servicio admitidos por Microsoft Dynamics 365: unidireccional, bidireccional y REST. Un módulo de escucha unidireccional puede leer y procesar un mensaje publicado en el bus de servicio. Un módulo de escucha bidireccional puede hacer lo mismo, pero también puede devolver una cadena de información a Dynamics 365. Un escucha REST es el mismo que el escucha bidireccional, pero trabaja con un extremo REST. Tenga en cuenta que estos escuchas deben escuchar activamente en un extremo de servicio para leer un mensaje enviado sobre el bus de servicio. Si el escucha no está escuchando cuando Microsoft Dynamics 365 intenta publicar un mensaje en el bus de servicio, el mensaje no se enviará.

La escritura de un escucha está estructurada sobre lo que en inglés se conoce como ABC: dirección, enlace y contrato. La siguiente información identifica el ABC de un escucha unidireccional.

Una vez registrado el escucha con un extremo, el método Execute del escucha se invoca siempre que Microsoft Dynamics 365 publique un mensaje en el bus de servicio. El método Execute no devuelve los datos de la llamada del método. Para obtener más información, consulte el ejemplo de escucha unidireccional, Ejemplo: módulo de escucha unidireccional.

Un escucha bidireccional tiene un código similar al de un escucha unidireccional. El ABC de un escucha bidireccional es el siguiente:

Para este contrato bidireccional, el método Execute devuelve una cadena de llamada del método. Para obtener más información, consulte el ejemplo de escucha bidireccional, Ejemplo: escucha bidireccional.

Un escucha REST tiene un código similar al de un escucha bidireccional. El ABC de un escucha REST es el siguiente:

Para el contrato REST, el método Execute devuelve una cadena de la llamada al método. Consulte el ejemplo de escucha REST, Ejemplo: agente de escucha de REST, para obtener más información. Tenga en cuenta que, en el ejemplo de escucha REST, se crea una instancia en WebServiceHost y no en ServiceHost, como se hizo en el ejemplo bidireccional.

Nota

Al usar el complemento predefinido (ServiceBusPlugin) con un escucha bidireccional o REST, el complemento no usa los datos de cadena devueltos desde el escucha. Sin embargo, un complemento personalizado basado en Azure podría usar esta información.

Al trabajar con ejemplos de escucha, el secreto de emisor que se le solicitará que escriba es la clave de administración de Bus de servicio de Microsoft Azure . El enlace de federación HTTP WS2007 usa el modo "token" y el protocolo WS-Trust 1.3.

Mensajes de filtro

Hay un contenedor de propiedades con información adicional agregado a la propiedad Propiedades de cada mensaje negociado enviado desde Microsoft Dynamics 365 y Dynamics 365 (online). El contenedor de propiedades, disponibles con extremos de cola, retransmisión y contrato de tema, contiene la siguiente información:

  • OrganizaciónURI

  • Id. de usuario que llama

  • Iniciando Id. de usuario

  • Nombre lógico de la entidad

  • Nombre de solicitud

Esta información identifica la organización, el usuario, la entidad y la solicitud de mensajes que está procesando Microsoft Dynamics 365 y que han causado la publicación de un mensaje de bus de servicio. La disponibilidad de esas propiedades indica que el mensaje se envió desde Microsoft Dynamics 365. El código de escucha puede decidir cómo procesar el mensaje según esos valores.

Leer el contexto de los datos en varios formatos de datos

El contexto de datos de la operación de Microsoft Dynamics 365 actual se pasa a la aplicación de escucha de la solución de Azure en el cuerpo de un mensaje del bus de servicio. En versiones anteriores, sólo se admitía un formato binario .NET. Para la interoperabilidad multiplataforma (no .NET), ahora puede especificar uno de los tres formatos de datos para el cuerpo del mensaje: binario .NET, JSON, o XML. Este formato se especifica en el atributo MessageFormat de la entidad ServiceEndpoint.

Nota

Esta característica se introdujo en la Actualización 1 de CRM Online 2016 y CRM 2016 Service Pack 1 (local).

Al recibir mensajes, la aplicación de escucha puede leer el contexto de datos en el cuerpo del mensaje según el tipo de contenido del mensaje. El código de ejemplo para hacerlo se muestra a continuación.

var receivedMessage = inboundQueueClient.Receive(TimeSpan.MaxValue);

if (receivedMessage.ContentType = "application/msbin1")
{
    RemoteExecutionContext context = receivedMessage.GetBody<RemoteExecutionContext>();
}
else if (receivedMessage.ContentType = "application/json")
{
    //string jsonBody = new StreamReader(receivedMessage.GetBody<Stream>(), Encoding.UTF8).ReadToEnd();
    RemoteExecutionContext contextFromJSON = receivedMessage.GetBody<RemoteExecutionContext>(
        new DataContractJsonSerializer(typeof(RemoteExecutionContext)));
}
else if (receivedMessage.ContentType = "application/xml")
{
    //string xmlBody = new StreamReader(receivedMessage.GetBody<Stream>(), Encoding.UTF8).ReadToEnd();
    RemoteExecutionContext contextFromXML = receivedMessage.GetBody<RemoteExecutionContext>(
        new DataContractSerializer(typeof(RemoteExecutionContext)));
}

Ver también

Extensiones de Azure para Microsoft Dynamics 365
Escribir un complemento con Azure personalizado
Ejemplo: escucha de cola persistente
Ejemplo: módulo de escucha unidireccional
Ejemplo: escucha bidireccional
Ejemplo: agente de escucha de REST
Trabaje con datos de Dynamics 365 en la solución de Azure
Trabaje con datos de eventos de Dynamics 365 en la solución del Centro de eventos de Azure

Microsoft Dynamics 365

© 2017 Microsoft. Todos los derechos reservados. Copyright