Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
La corrélation est le mécanisme d’association des messages de service de flux de travail entre eux ou à l’état de l’instance de l’application, tel qu’une réponse à une demande initiale, ou un ID d’ordre particulier à l’état persistant d’un flux de travail de traitement de commande. Cette rubrique fournit une vue d’ensemble de la corrélation. Les autres rubriques de cette section fournissent des informations supplémentaires pour chaque type de corrélation.
Types de corrélation
La corrélation peut être basée sur le protocole ou basée sur le contenu. Les corrélations basées sur le protocole utilisent les données fournies par l’infrastructure de remise de messages pour fournir le mappage entre les messages. Les messages corrélés à l’aide d’une corrélation basée sur le protocole sont liés les uns aux autres à l’aide d’un objet en mémoire, tel qu’un RequestContextjeton fourni par le protocole de transport. Les corrélations basées sur le contenu associent les messages entre eux à l’aide de données spécifiées par l’application. Les messages corrélés à l’aide d’une corrélation basée sur le contenu sont liés les uns aux autres par certaines données définies par l’application dans le message, telles qu’un numéro de client.
Les activités qui participent à la corrélation utilisent un CorrelationHandle pour lier les activités de messagerie ensemble. Par exemple, un Send qui est utilisé pour appeler un service et un autre Receive qui est utilisé pour recevoir un retour du service, partage le même CorrelationHandle. Ce modèle de base est utilisé si la corrélation est basée sur le contenu ou le protocole. Le handle de corrélation peut être défini explicitement sur chaque activité ou les activités peuvent être contenues dans une CorrelationScope activité. Les activités contenues dans un CorrelationScope ont leurs handles de corrélation gérés par le CorrelationScope et ne nécessitent pas que le CorrelationHandle soit défini explicitement. Une étendue CorrelationScope fournit une gestion CorrelationHandle pour une corrélation demande-réponse et un type de corrélation supplémentaire. Les services de flux de travail hébergés avec WorkflowServiceHost utilisent la même gestion de corrélation par défaut que l’activité CorrelationScope. Cette gestion de corrélation par défaut signifie en général que dans de nombreux scénarios, les activités de messagerie dans une étendue CorrelationScope ou dans un service de workflow n'ont pas besoin que leur CorrelationHandle soit défini, à moins que plusieurs activités de messagerie soient en parallèle ou se chevauchent, par exemple deux activités Receive en parallèle ou deux activités Send suivies de deux activités Receive. Vous trouverez plus d’informations sur la corrélation par défaut dans les rubriques de cette section qui couvrent chaque type de corrélation spécifique. Pour plus d’informations sur les activités de messagerie, consultez Activités de messagerie et Guide pratique pour créer un service de flux de travail avec des activités de messagerie.
Corrélation basée sur le protocole
La corrélation basée sur le protocole utilise le mécanisme de transport pour lier les messages entre eux et l’instance appropriée. Certaines corrélations de protocole fournies par le système incluent la corrélation de demande-réponse et la corrélation basée sur le contexte. Une corrélation demande-réponse est utilisée pour mettre en corrélation une paire unique d’activités de messagerie pour former une opération bidirectionnelle, telle qu’une Send paire avec un ReceiveReply, ou une Receive paire avec un SendReply. Le Concepteur de flux de travail Visual Studio fournit également un ensemble de modèles d’activité pour implémenter rapidement ce modèle. Une corrélation basée sur le contexte est basée sur le mécanisme d’échange de contexte décrit dans la spécification du protocole .NET Context Exchange. Pour utiliser la corrélation basée sur le contexte, une liaison basée sur le contexte telle que BasicHttpContextBinding, WSHttpContextBinding ou NetTcpContextBinding doit être utilisée sur le point de terminaison.
Pour plus d’informations sur la corrélation de protocole, consultez Durable Duplex et Request-Reply. Pour plus d’informations sur l’utilisation des modèles d’activité du Concepteur de flux de travail Visual Studio, consultez Activités de messagerie. Pour obtenir un exemple de code, consultez l’exemple NetContextExchangeCorrelation .
Corrélation basée sur le contenu
La corrélation basée sur le contenu utilise certaines informations dans le message pour l’associer à une instance particulière. Contrairement à la corrélation basée sur le protocole, la corrélation basée sur le contenu nécessite que l’auteur de l’application indique explicitement où ces données sont disponibles dans chaque message associé. Les activités qui utilisent la corrélation basée sur le contenu spécifient ces données de message à l’aide d’un MessageQuerySet. La corrélation basée sur le contenu est utile lors de la communication avec des services qui n’utilisent pas l’une des liaisons de contexte telles que BasicHttpContextBinding.