Übersicht über die KorrelationCorrelation Overview

Die Korrelation ist der Mechanismus zum Verknüpfen von Workflowdienstnachrichten miteinander oder mit dem Anwendungsinstanzzustand. Dies kann z. B. eine Antwort auf eine ursprüngliche Anforderung oder eine bestimmte Bestell-ID mit dem beibehaltenen Zustand eines Workflows zur Bestellverarbeitung sein.Correlation is the mechanism for relating workflow service messages to each other or to the application instance state, such as a reply to an initial request, or a particular order ID to the persisted state of an order-processing workflow. Dieses Thema enthält eine Übersicht über die Korrelation:This topic provides an overview of correlation. Die anderen Themen in diesem Abschnitt enthalten weitere Informationen zu den einzelnen Korrelationstypen.The other topics in this section provide additional information for each type of correlation.

KorrelationstypenTypes of Correlation

Die Korrelation kann protokollbasiert oder inhaltsbasiert sein.Correlation can be protocol-based or content-based. Protokollbasierte Korrelationen verwenden von der Nachrichtenübermittlungsinfrastruktur bereitgestellte Daten für die Zuordnung zwischen Nachrichten.Protocol-based correlations use data provided by the message delivery infrastructure to provide the mapping between messages. Nachrichten, die mithilfe der protokollbasierten Korrelation korreliert werden, werden unter Verwendung eines Objekts im Arbeitsspeicher, z. B. RequestContext, oder mit einem vom Transportprotokoll bereitgestellten Token miteinander verknüpft.Messages that are correlated using protocol-based correlation are related to each other using an object in memory, such as a RequestContext, or by a token provided by the transport protocol. Bei inhaltsbasierten Korrelationen werden Nachrichten miteinander verknüpft, indem von Anwendungen angegebene Daten verwendet werden.Content-based correlations relate messages to each other using application-specified data. Nachrichten, die mithilfe der inhaltsbasierten Korrelation korreliert werden, werden miteinander verknüpft, indem von der Anwendung definierte Daten in der Nachricht verwendet werden, z. B. eine Kundennummer.Messages that are correlated using content-based correlation are related to each other by some application-defined data in the message, such as a customer number.

Aktivitäten, die Teil einer Korrelation sind, verwenden CorrelationHandle zum Verknüpfen der Messagingaktivitäten.Activities that participate in correlation use a CorrelationHandle to tie the messaging activities together. Das Send-Objekt, das zum Aufrufen eines Diensts verwendet wird, und das darauffolgende Receive-Objekt, mit dem ein Rückruf vom Dienst empfangen wird, verwenden beispielsweise gemeinsam das CorrelationHandle-Objekt.For example, a Send that is used to call a service and a subsequent Receive that is used to receive a callback from the service, share the same CorrelationHandle. Dieses grundlegende Muster wird unabhängig davon verwendet, ob die Korrelation inhaltsbasiert oder protokollbasiert erfolgt.This basic pattern is used whether the correlation is content based or protocol based. Das Korrelationshandle kann für jede Aktivität explizit festgelegt werden, oder die Aktivitäten können in einer CorrelationScope-Aktivität enthalten sein.The correlation handle can be explicitly set on each activity or the activities can be contained in a CorrelationScope activity. Die Korrelationshandles von in CorrelationScope enthaltenen Aktivitäten werden mithilfe von CorrelationScope verwaltet und erfordern keine explizite Festlegung von CorrelationHandle.Activities contained in a CorrelationScope have their correlation handles managed by the CorrelationScope and do not require the CorrelationHandle to be explicitly set. Ein CorrelationScope-Bereich stellt die CorrelationHandle-Verwaltung für eine Anforderung-Antwort-Korrelation und einen zusätzlichen Korrelationstyp bereit.A CorrelationScope scope provides CorrelationHandle management for a request-reply correlation and one additional correlation type. Mit WorkflowServiceHost gehostete Workflowdienste nutzen die gleiche standardmäßige Korrelationsverwaltung wie die CorrelationScope-Aktivität.Workflow services hosted using WorkflowServiceHost have the same default correlation management as the CorrelationScope activity. Diese standardmäßige Korrelationsverwaltung bedeutet im Allgemeinen, dass Messagingaktivitäten in vielen Szenarios in einem CorrelationScope oder einem Workflowdienst es nicht erfordern, dass CorrelationHandle festgelegt ist. Dies ist nur erforderlich, wenn mehrere Messagingaktivitäten parallel ausgeführt werden oder sich überschneiden, z. B. zwei parallele Receive-Aktivitäten oder zwei Send-Aktivitäten gefolgt von zwei Receive-Aktivitäten.This default correlation management generally means that in many scenarios, messaging activities in a CorrelationScope or a workflow service do not require their CorrelationHandle set unless multiple messaging activities are in parallel or overlap, such as two Receive activities in parallel, or two Send activities followed by two Receive activities. Weitere Informationen zur Standardkorrelation finden Sie in den Themen zu den einzelnen Korrelationstypen in diesem Abschnitt.More information about default correlation is provided in the topics in this section that cover each specific type of correlation. Weitere Informationen zu messagingaktivitäten finden Sie unter Messagingaktivitäten und Vorgehensweise: Erstellen eines Workflowdiensts mit Messagingaktivitäten.For more information about messaging activities see Messaging Activities and How to: Create a Workflow Service with Messaging Activities.

Protokollbasierte KorrelationProtocol-Based Correlation

Die protokollbasierte Korrelation verwendet den Transportmechanismus, um Nachrichten miteinander und mit der entsprechenden Instanz zu verknüpfen.Protocol-based correlation uses the transport mechanism to relate messages to each other and the appropriate instance. Einige vom System bereitgestellte Protokollkorrelationen enthalten die Anforderung-Antwort-Korrelation und die kontextbasierte Korrelation.Some system-provided protocol correlations include request-reply correlation and context-based correlation. Eine Anforderung-Antwort-Korrelation zum Korrelieren eines einzelnen Paars von Messagingaktivitäten verwendet, um einen bidirektionalen Vorgang zu erstellen. Beispiele hierfür sind Send gepaart mit ReceiveReply oder Receive gepaart mit SendReply.A request-reply correlation is used to correlate a single pair of messaging activities to form a two-way operation, such as a Send paired with a ReceiveReply, or a Receive paired with a SendReply. Der Visual Studio 2012Visual Studio 2012-Workflow-Designer stellt auch einen Satz von Aktivitätsvorlagen bereit, mit denen dieses Muster schnell implementiert werden kann.The Visual Studio 2012Visual Studio 2012 Workflow Designer also provides a set of activity templates to quickly implement this pattern. Eine kontextbasierte Korrelation basiert auf dem kontextaustauschmechanismus, der gemäß der .NET Context Exchange Protocol Specification.A context-based correlation is based on the context exchange mechanism described in the .NET Context Exchange Protocol Specification. Zum Verwenden der kontextbasierten Korrelation muss auf dem Endpunkt eine kontextbasierte Bindung wie BasicHttpContextBinding, WSHttpContextBinding oder NetTcpContextBinding verwendet werden.To use context-based correlation, a context-based binding such as BasicHttpContextBinding, WSHttpContextBinding or NetTcpContextBinding must be used on the endpoint.

Weitere Informationen zu den Protokoll-Korrelation, finden Sie unter Kontextaustausch, permanenter Duplex, und Anforderung / Antwort-.For more information about protocol correlation, see Context Exchange, Durable Duplex, and Request-Reply. Weitere Informationen zum Verwenden der Visual Studio 2012Visual Studio 2012 Aktivitätsvorlagen Workflow-Designer, finden Sie unter Messagingaktivitäten.For more information about using the Visual Studio 2012Visual Studio 2012 Workflow Designer activity templates, see Messaging Activities. Beispielcode, finden Sie unter der permanenter Duplex [WF-Beispiele] und NetContextExchangeCorrelation Beispiele.For sample code, see the Durable Duplex [WF Samples] and NetContextExchangeCorrelation samples.

Inhaltsbasierte KorrelationContent-Based Correlation

Bei der inhaltsbasierten Korrelation wird ein bestimmtes Informationselement in der Nachricht verwendet, um diese einer bestimmten Instanz zuzuordnen.Content-based correlation uses some piece of information in the message to associate it to a particular instance. Im Gegensatz zur protokollbasierten Korrelation erfordert die inhaltsbasierte Korrelation es, dass der Anwendungsautor explizit angibt, wo sich diese Daten in den einzelnen verknüpften Nachrichten befinden.Unlike protocol-based correlation, content-based correlation requires the application author to explicitly state where this data can be found in each related message. Aktivitäten, die die inhaltsbasierte Korrelation verwenden, geben diese Nachrichtendaten mit einem MessageQuerySet-Objekt an.Activities that use content-based correlation specify this message data by using a MessageQuerySet. Die inhaltsbasierte Korrelation ist bei der Kommunikation mit Diensten nützlich, die keine Kontextbindung verwenden, z. B. BasicHttpContextBinding.Content-based correlation is useful when communicating with services that do not use one of the context bindings such as BasicHttpContextBinding. Weitere Informationen zu einer Inhaltsbasierter Korrelation, finden Sie unter Inhaltsbasierter.For more information about content-based correlation, see Content Based. Beispielcode, finden Sie unter der inhaltsbasierte Korrelation und korrelierter Rechner Beispiele.For sample code, see the Content-Based Correlation and Correlated Calculator samples.

Siehe auchSee Also

Inhaltsbasierte KorrelationContent-Based Correlation
Korrelierter RechnerCorrelated Calculator
Permanenter Duplex [WF-Beispiele]Durable Duplex [WF Samples]
NetContextExchangeCorrelationNetContextExchangeCorrelation