Compartir a través de


Información general de correlación

Este tema es aplicable a Windows Workflow Foundation 4.

Correlación es el mecanismo para relacionar mensajes de servicio de flujo de trabajo entre sí o con el estado de instancia de aplicación, como una respuesta con una solicitud inicial o un identificador de orden determinado con el estado persistente de un flujo de trabajo de procesamiento del orden. 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 estar basada en protocolos o basada en contenidos. Las correlaciones basadas en protocolos usan datos proporcionados por la infraestructura de entrega de mensajes para proporcionar la asignación entre los mensajes. Los mensajes que se correlacionan utilizando una correlación basada en protocolos se relacionan entre sí mediante un objeto en la memoria, como RequestContext, o a través de un token proporcionado por el protocolo de transporte. Las correlaciones basadas en contenidos relacionan los mensajes entre sí mediante datos especificados por la aplicación. Los mensajes que se correlacionan utilizando la correlación basada en contenidos se relacionan a entre sí mediante ciertos datos definidos por la aplicación en el mensaje, como un número de cliente.

Las actividades que participan en la correlación usan una clase CorrelationHandle para unir las actividades de mensajería. Por ejemplo, una clase Send que se utiliza para llamar a un servicio, y una clase Receive subsiguiente que se utiliza para recibir una devolución de llamada del servicio, comparten la misma clase CorrelationHandle. Se utiliza este patrón básico si la correlación se basa en contenidos o en protocolos. 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 CorrelationScope tienen sus identificadores de correlación administrados por CorrelationScope y no necesitan 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 utilizando WorkflowServiceHost tienen la misma administración de correlación predeterminada como actividad CorrelationScope. Esta administración de correlación predeterminada suele indicar que, en muchos escenarios, las actividades de mensajería en CorrelationScope o un servicio de flujo de trabajo no requieren el establecimiento de CorrelationHandle, a menos que varias actividades de mensajería se produzcan en paralelo o se superpongan, como dos actividades Receive en paralelo o dos actividades Send seguidas por dos actividades Receive. Puede obtener más información sobre la correlación predeterminada en los temas en esta sección que cubren cada tipo específico de correlación. Para obtener más información sobre las actividades de mensajería, vea Utilizar 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 protocolos usa los mecanismos de transporte para relacionar mensajes entre sí y la instancia adecuada. Algunas correlaciones protocolares proporcionadas por el sistema incluyen una correlación de solicitud-respuesta y una correlación basada en contextos. Una correlación de solicitud-respuesta se utiliza para correlacionar un par único de actividades de mensajería para formar una operación bidireccional, como una clase Send emparejada con un miembro ReceiveReply o una clase Receive emparejada con una clase SendReply. El Diseñador de flujo de trabajo de Visual Studio 2010 también proporciona un conjunto de plantillas de actividad para implementar este patrón rápidamente. La correlación basada en contextos está basada en el mecanismo de intercambio de contexto descrito en la especificación del protocolo de intercambio de contexto de .NET. Para utilizar la correlación basada en contextos, debe usarse un enlace basado en contextos como BasicHttpContextBinding, WSHttpContextBinding o NetTcpContextBinding en el extremo.

Para obtener más información sobre la correlación protocolar, vea Intercambio de contexto, Dúplex duradero y Solicitud-respuesta. Para obtener más información sobre el uso de las plantillas de actividad del Diseñador de flujo de trabajo de Visual Studio 2010, vea Utilizar actividades de mensajería.

Correlación basada en contenidos

La correlación basada en contenidos usa cierta información en el mensaje para asociarlo a una instancia determinada. Al contrario que la correlación basada en protocolos, la correlación basada en contenidos requiere que el autor de la aplicación establezca explícitamente dónde se pueden encontrar estos datos en cada mensaje relacionado. Las actividades que usan correlación basada en contenidos especifican estos datos de mensaje utilizando MessageQuerySet. La correlación basada en contenidos es útil al comunicarse con servicios que no utilizan uno de los enlaces de contexto, como BasicHttpContextBinding. Para obtener más información sobre la correlación basada en contenidos, vea Basado en contenidos.

Vea también

Tareas

Correlación basada en contenidos
Calculadora correlacionada