Dela via


Bindningar och bindningselement

Bindningar är samlingar av särskilda konfigurationselement, så kallade bindningselement, som utvärderas av tjänstkörningen när en klient eller tjänstslutpunkt skapas. Typen och ordningen på bindningselementen i en bindning avgör valet och staplingsordningen för protokollet och transportkanalerna i en slutpunkts kanalstacken.

Bindningar, särskilt bindningar som tillhandahålls av systemet, har vanligtvis också ett antal konfigurationsegenskaper som återspeglar de vanligaste ändrade egenskaperna för de inkapslade bindningselementen.

En bindning måste innehålla exakt ett transportbindningselement. Varje transportbindningselement innebär ett standardmeddelandekodningsbindningselement, som kan åsidosättas genom att högst ett meddelandekodningsbindningselement läggs till i bindningen. Förutom bindningselementen för transport och kodare kan bindningen innehålla valfritt antal protokollbindningselement som tillsammans implementerar de funktioner som behövs för att betjäna och skicka ett SOAP-meddelande från en slutpunkt till en annan. Mer information finns i Använda bindningar för att konfigurera tjänster och klienter.

Utöka bindningar och bindningselement

Windows Communication Foundation (WCF) innehåller bindningar som tillhandahålls av systemet och som omfattar en mängd olika scenarier. (Mer information finns i Bindningar som tillhandahålls av systemet.) Det kan dock finnas tillfällen när du behöver skapa och använda en bindning som inte ingår i WCF. Följande scenarier kräver att en ny bindning skapas.

  • Om du vill använda ett nytt bindningselement (till exempel ett nytt transport-, kodnings- eller protokollbindningselement) måste du skapa en ny bindning som innehåller det bindningselementet. Om du till exempel har lagt till en anpassad UdpTransportBindingElement för UDP-transport måste du skapa en ny bindning för att kunna använda den. Information om hur du utför det här beteendet med hjälp av typen finns i System.ServiceModel.Channels.CustomBinding Anpassade bindningar.

  • Så här konfigurerar du befintliga bindningselement på ett sätt som de systembaserade bindningarna inte exponerar på offentliga egenskaper. Du måste till exempel skapa en ny bindning för att ändra i vilken ordning signerings- och krypteringsåtgärder utförs. Information om hur du utför det här beteendet finns i Så här anpassar du en bindning som tillhandahålls av systemet.

  • För att upprätta företagsstandardbindningar som endast exponerar specifika konfigurationsalternativ. Om du till exempel vill skapa en variant av WSHttpBinding för ditt företag där säkerheten inte kan inaktiveras skapar du en ny bindning som fungerar som WSHttpBinding, men med säkerhet alltid på. Mer information finns i Skapa användardefinierade bindningar.

  • För att utföra vissa anpassningar av metadata, vanligtvis men inte nödvändigtvis för att konfigurera eller använda något anpassat bindningselement. Mer information om hur du tillhandahåller metadatastöd för bindningar och bindningselement finns i Stöd för konfiguration och metadata.

Kanaler, bindningar och bindningselement

Bindningar och bindningselement är anslutningen mellan programprogrammeringsmodellen, som innehåller attribut och beteenden, och kanalmodellen, som innehåller fabriker och lyssnare, meddelandekodare samt implementeringar av transport och protokoll. Vanligtvis implementeras bindningselement och bindningar så att kanaler kan användas av programskiktet.

Kanallagret lämnar ifrån sig eller tar emot meddelanden till och från tjänstnivån och transporterar dessa meddelanden mellan slutpunkterna. På en klient är kanallagret en stack med kanalfabriker som skapar kanaler till en nätverksslutpunkt. På en tjänst är kanallagret en hög med kanallyssnare som accepterar kanaler som tas emot vid en nätverksslutpunkt.

Det finns två allmänna typer av kanaler: protokollkanaler och transportkanaler. Transportkanaler ansvarar för den faktiska överföringen av ett meddelande från en nätverksslutpunkt till en annan. Transportkanaler måste ha en standardmeddelandekodare och bör kunna använda en alternativ meddelandekodare som tillhandahålls via ett meddelandekodarbindningselement. En meddelandekodare ansvarar för att omvandla en System.ServiceModel.Channels.Message till en trådrepresentation och vice versa. Protokollkanaler ansvarar för att implementera SOAP-nivåprotokoll (till exempel WS-Security eller WS-ReliableMessaging).

Det främsta kravet för transport- och protokollkanaler är att de implementerar de nödvändiga kanalgränssnitten. Om du vill skapa ett arbetskanallager måste de ha associerade fabriker och lyssnare och så vidare. Om du vill använda kanalimplementeringarna från WCF måste det finnas associerade bindningselement som härleds från BindingElement för varje kanal och det bör finnas ett relaterat bindningstilläggselement för inkludering i konfigurationsfiler som härleds från BindingElementExtensionElement.

Som tidigare nämnts kan bindningselement för meddelandekodare, protokoll- och transportkanalimplementeringar staplas för att bilda en kanalstack och mekanismen för att rada upp dem i en ordnad uppsättning är bindningen. Bindningar och bindningselement ansluter programprogrammeringsmodellen till kanalmodellen. Du kan använda dina kanalimplementeringar direkt från kod, men om inte kodare, transporter och protokoll implementeras som bindningselement kan de inte användas från programmeringsmodellen på tjänstnivå.

Mer information om hur du utvecklar kanaler och deras bindningselement finns i Utöka kanallagret.