Udostępnij za pośrednictwem


Wiązania i elementy wiązań

Powiązania to kolekcje specjalnych elementów konfiguracji, nazywanych elementami powiązania, które są oceniane przez środowisko uruchomieniowe usługi za każdym razem, gdy jest tworzony klient lub punkt końcowy usługi. Typ i kolejność elementów powiązania w ramach powiązania określają kolejność wyboru i stosu protokołów i kanałów transportowych w stosie kanału punktu końcowego.

Powiązania, zwłaszcza powiązania dostarczone przez system, zwykle mają również wiele właściwości konfiguracji, które odzwierciedlają najczęściej zmodyfikowane właściwości hermetyzowane elementy powiązania.

Powiązanie musi zawierać dokładnie jeden element powiązania transportu. Każdy element powiązania transportu oznacza domyślny element powiązania kodowania komunikatów, który można zastąpić, dodając co najwyżej jeden element powiązania kodowania komunikatów do powiązania. Oprócz elementów powiązania transportu i kodera powiązanie może zawierać dowolną liczbę elementów powiązania protokołu, które razem implementują funkcjonalność wymaganą do obsługi i wysyłają komunikat PROTOKOŁU SOAP z jednego punktu końcowego do innego. Aby uzyskać szczegółowe informacje, zobacz Konfigurowanie usług i klientów przy użyciu powiązań.

Rozszerzanie powiązań i elementów powiązania

Program Windows Communication Foundation (WCF) zawiera powiązania dostarczone przez system, które obejmują szeroką gamę scenariuszy. (Aby uzyskać więcej informacji, zobacz Powiązania dostarczone przez system). Czasami może jednak wystąpić potrzeba utworzenia i użycia powiązania, które nie jest uwzględnione w programie WCF. Następujące scenariusze wymagają utworzenia nowego powiązania.

  • Aby użyć nowego elementu powiązania (takiego jak nowy element transportu, kodowania lub powiązania protokołu), należy utworzyć nowe powiązanie zawierające ten element powiązania. Jeśli na przykład dodano niestandardowy transport UdpTransportBindingElement UDP, musisz utworzyć nowe powiązanie, aby z niego korzystać. Aby uzyskać informacje na temat wykonywania tego zachowania przy użyciu System.ServiceModel.Channels.CustomBinding typu, zobacz Powiązania niestandardowe.

  • Aby skonfigurować istniejące elementy powiązania w sposób, który zapewniane przez system powiązania nie są widoczne we właściwościach publicznych. Na przykład należy utworzyć nowe powiązanie, aby zmienić kolejność wykonywania operacji podpisywania i szyfrowania. Aby uzyskać informacje na temat wykonywania tego zachowania, zobacz How to: Customize a System-Provided Binding (Jak dostosować powiązanie dostarczone przez system).

  • Aby ustanowić powiązania standardowe firmowe, które uwidaczniają tylko określone opcje konfiguracji. Aby na przykład utworzyć dla firmy wariant WSHttpBinding dla firmy, w którym nie można wyłączyć zabezpieczeń, utwórz nowe powiązanie, które zachowuje się jak WSHttpBinding, ale z zabezpieczeniami zawsze włączone. Aby uzyskać szczegółowe informacje, zobacz Tworzenie powiązań zdefiniowanych przez użytkownika.

  • Aby wykonać pewne dostosowania metadanych, zazwyczaj niekoniecznie do skonfigurowania lub użycia niestandardowego elementu powiązania. Aby uzyskać więcej informacji na temat zapewniania obsługi metadanych dla powiązań i elementów powiązania, zobacz Configuration and Metadata Support (Obsługa konfiguracji i metadanych).

Kanały, powiązania i elementy powiązania

Powiązania i elementy powiązania są połączeniem między modelem programowania aplikacji, który obejmuje atrybuty i zachowania, a model kanału, który obejmuje fabryki i odbiorniki, kodery komunikatów oraz implementacje transportu i protokołu. Zazwyczaj elementy powiązań i powiązania są implementowane w celu umożliwienia użycia kanałów przez warstwę aplikacji.

Warstwa kanału przekazuje komunikaty do i z warstwy usługi i transportuje te komunikaty między punktami końcowymi. Na kliencie warstwa kanału jest stosem fabryk kanałów, które tworzą kanały do punktu końcowego sieci. W usłudze warstwa kanału jest stosem odbiorników kanałów, które akceptują kanały odbierane w punkcie końcowym sieci.

Istnieją dwa ogólne typy kanałów: kanały protokołu i kanały transportu. Kanały transportu są odpowiedzialne za rzeczywistą transmisję komunikatu z jednego punktu końcowego sieci do innego. Kanały transportu muszą mieć domyślny koder komunikatów i powinny mieć możliwość korzystania z alternatywnego kodera komunikatów dostarczonego za pomocą elementu powiązania kodera komunikatów. Koder komunikatów jest odpowiedzialny za przekształcenie System.ServiceModel.Channels.Message elementu w reprezentację przewodu i odwrotnie. Kanały protokołów są odpowiedzialne za implementowanie protokołów na poziomie protokołu SOAP (na przykład WS-Security lub WS-ReliableMessaging).

Podstawowym wymaganiem dla kanałów transportu i protokołów jest zaimplementowanie wymaganych interfejsów kanału. Aby utworzyć warstwę kanału roboczego, muszą mieć skojarzone fabryki i odbiorniki itd. Aby korzystać z implementacji kanału z programu WCF, należy utworzyć skojarzone elementy powiązania pochodzące z BindingElement każdego kanału i należy utworzyć powiązany element rozszerzenia powiązania do dołączania do plików konfiguracji, które pochodzą z BindingElementExtensionElementprogramu .

Jak wspomniano wcześniej, elementy powiązania koderów komunikatów, protokołów i implementacji kanałów transportu mogą być ułożone w celu utworzenia stosu kanału, a mechanizm w kolejce do uporządkowanego zestawu to powiązanie. Powiązania i elementy powiązania łączą model programowania aplikacji z modelem kanału. Implementacje kanału można używać bezpośrednio z kodu, ale chyba że kodery, transporty i protokoły są implementowane jako elementy powiązania, których nie można używać z modelu programowania warstw usług.

Aby uzyskać szczegółowe informacje o programowaniu kanałów i ich elementach powiązań, zobacz Rozszerzanie warstwy kanału.