Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Correlação é o mecanismo para relacionar mensagens de serviço de fluxo de trabalho entre si ou ao estado da instância do aplicativo, como uma resposta a uma solicitação inicial ou uma ID de ordem específica ao estado persistente de um fluxo de trabalho de processamento de pedidos. Este tópico fornece uma visão geral da correlação. Os outros tópicos nesta seção fornecem informações adicionais para cada tipo de correlação.
Tipos de correlação
A correlação pode ser baseada em protocolo ou baseada em conteúdo. As correlações baseadas em protocolo usam dados fornecidos pela infraestrutura de entrega de mensagens para fornecer o mapeamento entre mensagens. As mensagens correlacionadas usando a correlação baseada em protocolo estão relacionadas entre si usando um objeto na memória, como um RequestContext, ou um token fornecido pelo protocolo de transporte. Correlações baseadas em conteúdo relacionam mensagens entre si usando dados especificados pelo aplicativo. As mensagens correlacionadas usando correlação baseada em conteúdo estão relacionadas entre si por alguns dados definidos pelo aplicativo na mensagem, como um número de cliente.
As atividades que participam da correlação usam um CorrelationHandle para unir as atividades de mensagens. Por exemplo, um Send, que é usado para chamar um serviço, e um Receive subsequente, que é usado para receber um retorno de chamada do serviço, compartilham o mesmo CorrelationHandle. Esse padrão básico é usado se a correlação é baseada em conteúdo ou protocolo. O identificador de correlação pode ser definido explicitamente em cada atividade ou as atividades podem ser contidas em uma atividade CorrelationScope. As atividades contidas em um CorrelationScope têm seus identificadores de correlação gerenciados pelo CorrelationScope e não exigem que o CorrelationHandle seja definido explicitamente. Um escopo CorrelationScope fornece gerenciamento CorrelationHandle para uma correlação solicitação-resposta e um tipo de correlação adicional. Os serviços de fluxo de trabalho hospedados usando WorkflowServiceHost têm o mesmo gerenciamento de correlação padrão que a CorrelationScope atividade. Esse gerenciamento de correlação padrão geralmente significa que, em muitos cenários, as atividades de mensagens em um CorrelationScope ou um serviço de fluxo de trabalho não exigem seu CorrelationHandle conjunto, a menos que várias atividades de mensagens estejam em paralelo ou sobrepostas, como duas Receive atividades em paralelo ou duas Send atividades seguidas por duas Receive atividades. Mais informações sobre correlação padrão são fornecidas nos tópicos desta seção que abrangem cada tipo específico de correlação. Para obter mais informações sobre atividades de mensagens, consulte Atividades de Mensagens e Como criar um serviço de fluxo de trabalho com atividades de mensagens.
Correlação baseada em protocolo
A correlação baseada em protocolo usa o mecanismo de transporte para relacionar mensagens entre si e com a instância apropriada. Algumas correlações de protocolo fornecidas pelo sistema incluem correlação solicitação-resposta e correlação baseada em contexto. Uma correlação solicitação-resposta é usada para correlacionar um único par de atividades de mensageria para formar uma operação bidirecional, como uma Send emparelhada com um ReceiveReply ou um Receive emparelhada com um SendReply. O Designer de Fluxo de Trabalho do Visual Studio também fornece um conjunto de modelos de atividade para implementar rapidamente esse padrão. Uma correlação baseada em contexto baseia-se no mecanismo de troca de contexto descrito na Especificação do Protocolo exchange de contexto do .NET. Para usar a correlação baseada em contexto, uma associação baseada em contexto, como BasicHttpContextBinding, WSHttpContextBinding ou NetTcpContextBinding deve ser usada no ponto de extremidade.
Para obter mais informações sobre correlação de protocolo, consulte Durable Duplex e Request-Reply. Para obter mais informações sobre como usar os modelos de atividade do Designer de Fluxo de Trabalho do Visual Studio, consulte Atividades de Mensagens. Para obter o código de exemplo, consulte o exemplo NetContextExchangeCorrelation .
Correlação baseada em conteúdo
A correlação baseada em conteúdo usa algumas informações na mensagem para associá-la a uma instância específica. Ao contrário da correlação baseada em protocolo, a correlação baseada em conteúdo exige que o autor do aplicativo declare explicitamente onde esses dados podem ser encontrados em cada mensagem relacionada. As atividades que usam correlação baseada em conteúdo especificam esses dados de mensagem usando um MessageQuerySet. A correlação baseada em conteúdo é útil ao se comunicar com serviços que não usam uma das associações de contexto, como BasicHttpContextBinding.