Compartir a través de


Introducción a la correlación

La correlación es el mecanismo para relacionar los mensajes del servicio de flujo de trabajo entre sí o con el estado de la instancia de la aplicación, como una respuesta a una solicitud inicial o un identificador de pedido determinado al estado persistente de un flujo de trabajo de procesamiento de pedidos. En este tema se proporciona información general sobre la correlación. Los otros temas de esta sección proporcionan información adicional para cada tipo de correlación.

Tipos de correlación

La correlación puede basarse en protocolos o en contenido. Las correlaciones basadas en protocolo usan los datos proporcionados por la infraestructura de entrega de mensajes para proporcionar la asignación entre mensajes. Los mensajes que se correlacionan mediante la correlación basada en protocolos se relacionan entre sí mediante un objeto en memoria, como , RequestContexto mediante un token proporcionado por el protocolo de transporte. Las correlaciones basadas en contenido se relacionan entre sí mediante datos especificados por la aplicación. Los mensajes que se correlacionan mediante la correlación basada en contenido se relacionan entre sí por algunos datos definidos por la aplicación en el mensaje, como un número de cliente.

Las actividades que participan en la correlación usan un CorrelationHandle para vincular las actividades de mensajería. Por ejemplo, un Send que se utiliza para llamar a un servicio y un subsecuente Receive que se utiliza para recibir una respuesta del servicio, comparten el mismo CorrelationHandle. Este patrón básico se usa si la correlación se basa en el contenido o en el protocolo. El identificador de correlación se puede establecer explícitamente en cada actividad o las actividades se pueden contener en una actividad CorrelationScope. Las actividades contenidas en un CorrelationScope tienen sus identificadores de correlación administrados por CorrelationScope y no requieren que CorrelationHandle se establezca explícitamente. Un ámbito CorrelationScope proporciona una administración CorrelationHandle para una correlación de solicitud-respuesta y un tipo de correlación adicional. Los servicios de flujo de trabajo hospedados mediante WorkflowServiceHost tienen la misma administración de correlación predeterminada que la CorrelationScope actividad. Esta administración de correlación predeterminada generalmente significa que, en muchos escenarios, las actividades de mensajería en un CorrelationScope o un servicio de flujo de trabajo no requieren que su CorrelationHandle esté configurado, a menos que múltiples actividades de mensajería estén en paralelo o se superpongan, como dos Receive actividades en paralelo, o dos actividades Send seguidas por dos actividades Receive. En los temas de esta sección se proporciona más información sobre la correlación predeterminada que cubren cada tipo específico de correlación. Para obtener más información sobre las actividades de mensajería, vea Actividades de mensajería y Cómo: Crear un servicio de flujo de trabajo con actividades de mensajería.

Correlación basada en protocolos

La correlación basada en protocolo usa el mecanismo de transporte para relacionar los mensajes entre sí y la instancia adecuada. Algunas correlaciones de protocolo proporcionadas por el sistema incluyen correlación de solicitud-respuesta y correlación basada en contexto. Una correlación de solicitud-respuesta se utiliza para correlacionar un único par de actividades de mensajería para formar una operación bidireccional, como un Send emparejado con un ReceiveReply, o un Receive emparejado con un SendReply. El Diseñador de flujos de trabajo de Visual Studio también proporciona un conjunto de plantillas de actividad para implementar rápidamente este patrón. Una correlación basada en contexto se basa en el mecanismo de intercambio de contexto descrito en la especificación del protocolo de intercambio de contexto de .NET. Para usar la correlación basada en contexto, se debe usar un enlace basado en contexto como BasicHttpContextBinding, WSHttpContextBinding o NetTcpContextBinding en el punto de conexión.

Para obtener más información sobre la correlación de protocolos, vea Durable Duplex y Request-Reply. Para obtener más información sobre el uso de las plantillas de actividad del Diseñador de flujos de trabajo de Visual Studio, vea Actividades de mensajería. Para obtener código de ejemplo, consulte el ejemplo NetContextExchangeCorrelation .

Correlación basada en contenido

La correlación basada en contenido usa algún fragmento de información en el mensaje para asociarla a una instancia determinada. A diferencia de la correlación basada en protocolos, la correlación basada en contenido requiere que el autor de la aplicación indique explícitamente dónde se pueden encontrar estos datos en cada mensaje relacionado. Las actividades que usan la correlación basada en contenido especifican estos datos de mensaje mediante un MessageQuerySet. La correlación basada en contenido es útil al comunicarse con servicios que no usan uno de los enlaces de contexto, como BasicHttpContextBinding.

Consulte también