Bindingen en bindingselementen
Bindingen zijn verzamelingen speciale configuratie-elementen, bindingselementen genoemd, die worden geëvalueerd door de serviceruntime wanneer een client of service-eindpunt wordt samengesteld. Het type en de volgorde van de bindingselementen binnen een binding bepaalt de selectie- en stapelvolgorde van het protocol en de transportkanalen in de kanaalstack van een eindpunt.
Bindingen, met name de door het systeem geleverde bindingen, hebben meestal ook een aantal configuratie-eigenschappen die de meest gewijzigde eigenschappen van de ingekapselde bindingselementen weerspiegelen.
Een binding moet precies één transportbindingselement bevatten. Elk transportbindingselement impliceert een standaardbindingselement voor berichtcodering, dat kan worden overschreven door maximaal één berichtcoderingselement toe te voegen aan de binding. Naast de transport- en encoderbindingselementen kan de binding een willekeurig aantal protocolbindingselementen bevatten die samen de functionaliteit implementeren die nodig is voor de service en het verzenden van een SOAP-bericht van het ene eindpunt naar het andere. Zie Bindingen gebruiken om services en clients te configureren voor meer informatie.
Bindingen en bindingselementen uitbreiden
Windows Communication Foundation (WCF) bevat door het systeem geleverde bindingen die betrekking hebben op een breed scala aan scenario's. (Zie voor meer informatie Door het systeem geleverde bindingen.) Het kan echter voorkomen dat u een binding moet maken en gebruiken die niet is opgenomen in WCF. Voor de volgende scenario's is het maken van een nieuwe binding vereist.
Als u een nieuw bindingselement (zoals een nieuw transport-, coderings- of protocolbindingselement) wilt gebruiken, moet u een nieuwe binding maken die dat bindingselement bevat. Als u bijvoorbeeld een aangepaste
UdpTransportBindingElement
voor UDP-transport hebt toegevoegd, moet u een nieuwe binding maken om er gebruik van te maken. Zie Aangepaste bindingen voor informatie over het uitvoeren van dit gedrag met behulp van het System.ServiceModel.Channels.CustomBinding type.Bestaande bindingselementen configureren op een manier die de door het systeem geleverde bindingen niet beschikbaar maken voor openbare eigenschappen. U moet bijvoorbeeld een nieuwe binding maken om de volgorde te wijzigen waarin ondertekenings- en versleutelingsbewerkingen worden uitgevoerd. Zie Instructies voor het aanpassen van een door het systeem geleverde binding voor informatie over het uitvoeren van dit gedrag.
Als u bedrijfsstandaardbindingen wilt instellen die alleen specifieke configuratieopties beschikbaar maken. Als u bijvoorbeeld voor uw bedrijf een variant wilt maken van het WSHttpBinding voor uw bedrijf waarin beveiliging niet kan worden uitgeschakeld, maakt u een nieuwe binding die zich gedraagt als de WSHttpBinding, maar met de beveiliging altijd ingeschakeld. Zie Door de gebruiker gedefinieerde bindingen maken voor meer informatie.
Als u bepaalde aanpassingen van metagegevens wilt uitvoeren, moet u meestal maar niet noodzakelijkerwijs een aangepast bindingselement configureren of gebruiken. Zie Configuratie- en metagegevensondersteuning voor meer informatie over het bieden van ondersteuning voor metagegevens aan bindingen en bindingselementen.
Kanalen, bindingen en bindingselementen
Bindingen en bindingselementen zijn de verbinding tussen het toepassingsprogrammeermodel, dat de kenmerken en het gedrag bevat, en het kanaalmodel, dat de factory's en listeners, berichtcoderingsprogramma's en transport- en protocol-implementaties omvat. Bindingselementen en bindingen worden doorgaans geïmplementeerd om kanalen in te schakelen die door de toepassingslaag kunnen worden gebruikt.
De kanaallaag draagt berichten van en naar de servicelaag af of ontvangt deze berichten tussen eindpunten. Op een client is de kanaallaag een stapel kanaalfactory's die kanalen naar een netwerkeindpunt maken. In een service is de kanaallaag een stapel kanaallisteners die kanalen accepteren die zijn ontvangen op een netwerkeindpunt.
Er zijn twee algemene soorten kanalen: protocolkanalen en transportkanalen. Transportkanalen zijn verantwoordelijk voor de daadwerkelijke overdracht van een bericht van het ene netwerkeindpunt naar het andere. Transportkanalen moeten een standaardberichtcoderingsprogramma hebben en moeten een alternatief berichtcoderingsprogramma kunnen gebruiken dat is opgegeven via een bindingselement van het berichtcoderingsprogramma. Een berichtcoderingsprogramma is verantwoordelijk voor het omzetten van een System.ServiceModel.Channels.Message draadweergave en vice versa. Protocolkanalen zijn verantwoordelijk voor het implementeren van SOAP-protocollen (bijvoorbeeld WS-Security of WS-ReliableMessaging).
De primaire vereiste voor transport- en protocolkanalen is dat ze de vereiste kanaalinterfaces implementeren. Als u een werkkanaallaag wilt maken, moeten ze gekoppelde factory's en listeners hebben, enzovoort. Als u de kanaal-implementaties van WCF wilt gebruiken, moet er een gekoppelde bindingselementen zijn afgeleid van BindingElement elk kanaal en moet er een gerelateerd bindingsuitbreidingselement zijn voor opname in configuratiebestanden die zijn afgeleid van BindingElementExtensionElement.
Zoals eerder vermeld, kunnen bindingselementen voor berichtcoderingsprogramma's, protocol- en transportkanaal-implementaties worden gestapeld om een kanaalstack te vormen en is het mechanisme om ze in een geordende set te plaatsen de binding. Bindingen en bindingselementen verbinden het toepassingsprogrammeermodel met het kanaalmodel. U kunt uw kanaal-implementaties rechtstreeks vanuit code gebruiken, maar tenzij encoders, transporten en protocollen worden geïmplementeerd als bindingselementen, kunnen ze niet worden gebruikt vanuit het programmeermodel van de servicelaag.
Zie De kanaallaag uitbreiden voor meer informatie over het ontwikkelen van kanalen en de bijbehorende bindingselementen.