Udostępnij za pośrednictwem


Przegląd korelacji

Korelacja jest mechanizmem powiązania komunikatów usługi przepływu pracy ze sobą lub ze stanem wystąpienia aplikacji, takim jak odpowiedź na początkowe żądanie, lub określony identyfikator zamówienia do utrwalonego stanu przepływu pracy przetwarzania zamówień. Ten temat zawiera omówienie korelacji. Inne tematy w tej sekcji zawierają dodatkowe informacje dotyczące każdego typu korelacji.

Typy korelacji

Korelacja może być oparta na protokole lub na podstawie zawartości. Korelacje oparte na protokole używają danych dostarczonych przez infrastrukturę dostarczania komunikatów w celu zapewnienia mapowania między komunikatami. Komunikaty skorelowane przy użyciu korelacji opartej na protokole są ze sobą powiązane przy użyciu obiektu w pamięci, takiego jak RequestContext, lub przez token dostarczony przez protokół transportowy. Korelacje oparte na zawartości wiążą komunikaty ze sobą przy użyciu danych określonych przez aplikację. Komunikaty skorelowane przy użyciu korelacji opartej na zawartości są ze sobą powiązane przez niektóre dane zdefiniowane przez aplikację w komunikacie, takie jak numer klienta.

Działania, które uczestniczą w korelacji, używają elementu , CorrelationHandle aby powiązać działania obsługi komunikatów ze sobą. Na przykład element Send służący do wywoływania usługi i kolejnej Receive , która jest używana do odbierania wywołania zwrotnego z usługi, współużytkuje ten sam CorrelationHandleelement . Ten podstawowy wzorzec jest używany niezależnie od tego, czy korelacja jest oparta na zawartości, czy na podstawie protokołu. Uchwyt korelacji można jawnie ustawić dla każdego działania lub działania mogą być zawarte w CorrelationScope działaniu. Działania zawarte w obiekcie CorrelationScope mają swoje dojścia korelacji zarządzane przez CorrelationScope element i nie wymagają jawnego CorrelationHandle ustawienia. Zakres CorrelationScope zapewnia CorrelationHandle zarządzanie korelacją żądań-odpowiedzi i jednym dodatkowym typem korelacji. Usługi przepływu pracy hostowane przy użyciu programu WorkflowServiceHost mają takie samo domyślne zarządzanie korelacjami jak CorrelationScope działanie. Domyślne zarządzanie korelacjami zwykle oznacza, że w wielu scenariuszach działania obsługi komunikatów w CorrelationScope usłudze przepływu pracy lub nie wymagają ich CorrelationHandle zestawu, chyba że wiele działań obsługi komunikatów jest równoległych lub nakładających się na siebie, takich jak dwa Receive działania równolegle, lub dwa działania, po których następują dwa SendReceive działania. Więcej informacji na temat korelacji domyślnej znajduje się w tematach w tej sekcji, które obejmują poszczególne typy korelacji. Aby uzyskać więcej informacji na temat działań związanych z obsługą komunikatów, zobacz Działania obsługi komunikatów i Instrukcje: tworzenie usługi przepływu pracy z działaniami obsługi komunikatów.

Korelacja oparta na protokole

Korelacja oparta na protokole używa mechanizmu transportu do powiązania komunikatów ze sobą i odpowiedniego wystąpienia. Niektóre korelacje protokołu dostarczonego przez system obejmują korelację żądań i korelację opartą na kontekście. Korelacja żądań-odpowiedzi służy do korelowania pojedynczej pary działań obsługi komunikatów w celu utworzenia operacji dwukierunkowej, takiej jak Send sparowana z elementem ReceiveReply, lub Receive sparowana z elementem SendReply. Projektant przepływu pracy programu Visual Studio udostępnia również zestaw szablonów działań, które umożliwiają szybkie implementowanie tego wzorca. Korelacja oparta na kontekście jest oparta na mechanizmie wymiany kontekstu opisanym w specyfikacji protokołu exchange kontekstu platformy .NET. Aby użyć korelacji opartej na kontekście, należy użyć powiązania opartego na kontekście, takiego jak BasicHttpContextBinding, WSHttpContextBinding lub NetTcpContextBinding w punkcie końcowym.

Aby uzyskać więcej informacji na temat korelacji protokołu, zobacz Durable Duplex i Request-Reply. Aby uzyskać więcej informacji na temat korzystania z szablonów działań przepływu pracy programu Visual Studio Projektant, zobacz Działania obsługi komunikatów. Przykładowy kod można znaleźć w przykładzie NetContextExchangeCorrelation .

Korelacja oparta na zawartości

Korelacja oparta na zawartości używa niektórych informacji w komunikacie, aby skojarzyć je z konkretnym wystąpieniem. W przeciwieństwie do korelacji opartej na protokole korelacja oparta na zawartości wymaga, aby autor aplikacji jawnie stwierdził, gdzie te dane można znaleźć w każdym powiązanym komunikacie. Działania korzystające z korelacji opartej na zawartości określają te dane komunikatu przy użyciu elementu MessageQuerySet. Korelacja oparta na zawartości jest przydatna podczas komunikacji z usługami, które nie korzystają z jednego z powiązań kontekstowych, takich jak BasicHttpContextBinding.

Zobacz też