Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die Korrelation ist der Mechanismus für das Anordnen von Workflowdienstnachrichten aneinander oder an den Anwendungsinstanzstatus, z. B. eine Antwort auf eine anfängliche Anforderung oder eine bestimmte Auftrags-ID auf den permanenten Zustand eines Auftragsverarbeitungsworkflows. Dieses Thema bietet eine Übersicht über die Korrelation. Die anderen Themen in diesem Abschnitt enthalten zusätzliche Informationen für jeden Korrelationstyp.
Korrelationstypen
Korrelation kann protokollbasiert oder inhaltsbasiert sein. Protokollbasierte Korrelationen verwenden Daten, die von der Nachrichtenübermittlungsinfrastruktur bereitgestellt werden, um die Zuordnung zwischen Nachrichten bereitzustellen. Nachrichten, die mithilfe einer protokollbasierten Korrelation korreliert werden, beziehen sich miteinander, indem ein Objekt im Arbeitsspeicher verwendet wird, z. B. ein RequestContextOder ein token, das vom Transportprotokoll bereitgestellt wird. Inhaltsbasierte Korrelationen verbinden Nachrichten miteinander unter Verwendung anwendungsspezifischer Daten. Nachrichten, die mit inhaltsbasierter Korrelation korreliert werden, beziehen sich gegenseitig durch einige anwendungsdefinierte Daten in der Nachricht, z. B. eine Kundennummer.
Aktivitäten, die an der Korrelation teilnehmen, verwenden ein CorrelationHandle, um die Nachrichtenaktivitäten miteinander zu verknüpfen. Ein Beispiel ist, dass ein Send zum Aufrufen eines Dienstes und ein nachfolgendes Receive zum Empfangen eines Rückrufs vom Dienst verwendet werden, wobei sie dasselbe CorrelationHandle teilen. Dieses grundlegende Muster wird verwendet, ob es sich bei der Korrelation um inhaltsbasierte oder protokollbasierte Korrelation handelt. Der Korrelations-Handle kann für jede Aktivität explizit festgelegt werden, oder die Aktivitäten können in einer CorrelationScope-Aktivität enthalten sein. Aktivitäten, die in einem CorrelationScope enthalten sind, haben ihre Korrelationshandles, die von CorrelationScope verwaltet werden, und es ist nicht erforderlich, dass CorrelationHandle explizit festgelegt wird. Ein CorrelationScope-Bereich stellt die CorrelationHandle-Verwaltung für eine Anforderung-Antwort-Korrelation und einen zusätzlichen Korrelationstyp bereit. Workflowdienste, die unter Verwendung WorkflowServiceHost gehostet werden, weisen die gleiche Standardkorrelationsverwaltung wie die CorrelationScope Aktivität auf. Diese Standardkorrelationsverwaltung bedeutet im Allgemeinen, dass nachrichtenaktivitäten in einem CorrelationScope oder einem Workflowdienst in vielen Szenarien nicht ihren CorrelationHandle Satz erfordern, es sei denn, mehrere Messagingaktivitäten sind parallel oder überlappend, z. B. zwei Receive Aktivitäten parallel, oder zwei Send Aktivitäten gefolgt von zwei Receive Aktivitäten. Weitere Informationen zur Standardkorrelation werden in den Themen in diesem Abschnitt bereitgestellt, die jeden bestimmten Korrelationstyp abdecken. Weitere Informationen zu Messagingaktivitäten finden Sie unter Messaging-Aktivitäten und Vorgehensweise: Erstellen eines Workflowdiensts mit Messagingaktivitäten.
Protokollbasierte Korrelation
Die protokollbasierte Korrelation verwendet den Transportmechanismus, um Nachrichten miteinander und die entsprechende Instanz zu verknüpfen. Einige vom System bereitgestellte Protokollkorrelationen umfassen die Korrelation von Anforderungsantworten und kontextbasierte Korrelation. Eine Anforderungs-Antwort-Korrelation wird verwendet, um ein einzelnes Paar von Messaging-Aktivitäten zu korrelieren und so einen bidirektionalen Vorgang zu bilden, z. B. eine Send gepaart mit einem ReceiveReply oder eine Receive gepaart mit einem SendReply. Der Visual Studio-Workflow-Designer bietet auch eine Reihe von Aktivitätsvorlagen, um dieses Muster schnell zu implementieren. Eine kontextbasierte Korrelation basiert auf dem Kontextaustauschmechanismus, der in der .NET Context Exchange Protocol Specification beschrieben wird. Um kontextbasierte Korrelation zu verwenden, muss eine kontextbasierte Bindung wie BasicHttpContextBindingz. B. oder WSHttpContextBindingNetTcpContextBinding auf dem Endpunkt verwendet werden.
Weitere Informationen zur Protokollkorrelation finden Sie unter Durable Duplex und Request-Reply. Weitere Informationen zur Verwendung der Workflow-Designer-Aktivitätsvorlagen von Visual Studio finden Sie unter Messaging-Aktivitäten. Beispielcode finden Sie im NetContextExchangeCorrelation-Beispiel .
Inhaltsbasierte Korrelation
Inhaltsbasierte Korrelation verwendet einige Informationen in der Nachricht, um sie einer bestimmten Instanz zuzuordnen. Im Gegensatz zur protokollbasierten Korrelation muss der Anwendungsautor explizit angeben, wo diese Daten in jeder zugehörigen Nachricht zu finden sind. Aktivitäten, die eine inhaltsbasierte Korrelation verwenden, geben diese Nachrichtendaten mithilfe einer MessageQuerySet an. Inhaltsbasierte Korrelation ist nützlich bei der Kommunikation mit Diensten, die keine der Kontextbindungen wie BasicHttpContextBinding verwenden, z. B. .