Architectuur van Windows Communication Foundation
In de volgende afbeelding ziet u de belangrijkste lagen van de WCF-architectuur (Windows Communication Foundation).
WCF-architectuur
Contracten en beschrijvingen
Contracten definiëren verschillende aspecten van het berichtensysteem. In het gegevenscontract wordt elke parameter beschreven waaruit elk bericht bestaat dat een service kan maken of gebruiken. De berichtparameters worden gedefinieerd door XSD-documenten (XML Schema Definition Language), zodat elk systeem dat XML begrijpt voor het verwerken van de documenten. Het berichtcontract definieert specifieke berichtonderdelen met BEHULP van SOAP-protocollen en maakt nauwkeurige controle over delen van het bericht mogelijk wanneer interoperabiliteit een dergelijke precisie vereist. Het servicecontract specificeert de werkelijke methodehandtekeningen van de service en wordt gedistribueerd als een interface in een van de ondersteunde programmeertalen, zoals Visual Basic of Visual C#.
Beleidsregels en bindingen bepalen de voorwaarden die nodig zijn om te communiceren met een service. De binding moet bijvoorbeeld (minimaal) het gebruikte transport (bijvoorbeeld HTTP of TCP) en een codering opgeven. Beleidsregels omvatten beveiligingsvereisten en andere voorwaarden waaraan moet worden voldaan om te communiceren met een service.
Service Runtime
De serviceruntimelaag bevat het gedrag dat zich alleen voordoet tijdens de werkelijke werking van de service, dat wil gezegd, het runtimegedrag van de service. Met beperking bepaalt u hoeveel berichten worden verwerkt, wat kan worden gewijzigd als de vraag naar de service toeneemt tot een vooraf ingestelde limiet. Een foutgedrag geeft aan wat er optreedt wanneer een interne fout optreedt in de service, bijvoorbeeld door te bepalen welke informatie aan de client wordt gecommuniceerd. (Te veel informatie kan een kwaadwillende gebruiker een voordeel geven bij het koppelen van een aanval.) Het gedrag van metagegevens bepaalt hoe en of metagegevens beschikbaar worden gesteld aan de buitenwereld. Het gedrag van het exemplaar geeft aan hoeveel exemplaren van de service kunnen worden uitgevoerd (een singleton geeft bijvoorbeeld slechts één exemplaar op om alle berichten te verwerken). Transactiegedrag maakt het terugdraaien van transacted bewerkingen mogelijk als er een fout optreedt. Verzendgedrag is de controle over hoe een bericht wordt verwerkt door de WCF-infrastructuur.
Uitbreidbaarheid maakt aanpassing van runtimeprocessen mogelijk. Berichtinspectie is bijvoorbeeld de faciliteit om delen van een bericht te inspecteren en met parameterfilters kunnen vooraf ingestelde acties worden uitgevoerd op basis van filters die optreden op berichtkoppen.
Berichten
De berichtenlaag bestaat uit kanalen. Een kanaal is een onderdeel dat een bericht op een bepaalde manier verwerkt, bijvoorbeeld door een bericht te verifiëren. Een reeks kanalen wordt ook wel een kanaalstack genoemd. Kanalen werken op berichten en berichtkoppen. Dit verschilt van de runtimelaag van de service, die voornamelijk betrekking heeft op het verwerken van de inhoud van berichtteksten.
Er zijn twee soorten kanalen: transportkanalen en protocolkanalen.
Transportkanalen lezen en schrijven berichten van het netwerk (of een ander communicatiepunt met de buitenwereld). Sommige transporten gebruiken een encoder om berichten (die worden weergegeven als XML-infosets) te converteren naar en van de bytestroomweergave die door het netwerk wordt gebruikt. Voorbeelden van transporten zijn HTTP, named pipes, TCP en MSMQ. Voorbeelden van coderingen zijn XML en geoptimaliseerd binair.
Protocolkanalen implementeren protocollen voor berichtverwerking, vaak door extra headers naar het bericht te lezen of te schrijven. Voorbeelden van dergelijke protocollen zijn WS-Security en WS-Reliability.
De berichtenlaag illustreert de mogelijke indelingen en uitwisselingspatronen van de gegevens. WS-Security is een implementatie van de WS-Security-specificatie voor het inschakelen van beveiliging op de berichtenlaag. Het WS-Reliable Messaging-kanaal maakt de garantie voor het bezorgen van berichten mogelijk. De coderingsprogramma's bevatten verschillende coderingen die kunnen worden gebruikt om aan de behoeften van het bericht te voldoen. Het HTTP-kanaal geeft aan dat het HyperText Transport Protocol wordt gebruikt voor de bezorging van berichten. Het TCP-kanaal geeft op dezelfde manier het TCP-protocol aan. Het transactiestroomkanaal bepaalt de transacted berichtpatronen. Het named pipe-kanaal maakt communicatie tussen processen mogelijk. Het MSMQ-kanaal maakt interoperation mogelijk met MSMQ-toepassingen.
Hosting en activering
In de uiteindelijke vorm is een service een programma. Net als andere programma's moet een service worden uitgevoerd in een uitvoerbaar bestand. Dit wordt een zelf-hostende service genoemd.
Services kunnen ook worden gehost of uitgevoerd in een uitvoerbaar bestand dat wordt beheerd door een externe agent, zoals IIS of Windows Activation Service (WAS). MET WAS kunnen WCF-toepassingen automatisch worden geactiveerd wanneer deze worden geïmplementeerd op een computer waarop WAS wordt uitgevoerd. Services kunnen ook handmatig worden uitgevoerd als uitvoerbare bestanden (.exe bestanden). Een service kan ook automatisch worden uitgevoerd als een Windows-service. COM+-onderdelen kunnen ook worden gehost als WCF-services.