Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Korelacja jest mechanizmem łączenia komunikatów usług przepływu pracy między sobą lub z danym stanem instancji aplikacji, na przykład z odpowiedzią na początkowe żądanie czy określonym identyfikatorem zamówienia do zachowanego 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ć ze sobą działania związane z obsługą komunikatów. Na przykład Send, który służy do wywoływania usługi, oraz Receive, który jest używany do odbierania wywołania zwrotnego z usługi, współużytkują ten sam CorrelationHandle. 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 element CorrelationScope i nie wymagają ustawienia jawnego CorrelationHandle. 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 aktywność CorrelationScope. Domyślne zarządzanie korelacjami zazwyczaj oznacza, że w wielu scenariuszach działania związane z obsługą komunikatów w usłudze przepływu pracy nie wymagają ustawienia ich zestawu, chyba że wiele działań obsługi komunikatów odbywa się równolegle lub się nakłada, na przykład gdy istnieją dwie równoległe akcje CorrelationScope lub dwa działania CorrelationHandle, po których następują dwa działania Receive. 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 Protocol-Based
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 zaimplementowanie tego wzorca. Korelacja oparta na kontekście bazuje na mechanizmie wymiany kontekstu opisanym w specyfikacji protokołu wymiany 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ń projektanta przepływu pracy programu Visual Studio, 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.