Arkitektur för Windows Communication Foundation
Följande bild illustrerar huvudskikten i WCF-arkitekturen (Windows Communication Foundation).
WCF-arkitektur
Kontrakt och beskrivningar
Kontrakt definierar olika aspekter av meddelandesystemet. Datakontraktet beskriver varje parameter som utgör varje meddelande som en tjänst kan skapa eller använda. Meddelandeparametrarna definieras av XSD-dokument (XML Schema Definition Language) så att alla system som förstår XML kan bearbeta dokumenten. Meddelandekontraktet definierar specifika meddelandedelar med HJÄLP av SOAP-protokoll och tillåter finare kontroll över delar av meddelandet när samverkan kräver sådan precision. Tjänstkontraktet anger tjänstens faktiska metodsignaturer och distribueras som ett gränssnitt i något av de programmeringsspråk som stöds, till exempel Visual Basic eller Visual C#.
Principer och bindningar anger de villkor som krävs för att kommunicera med en tjänst. Bindningen måste till exempel (minst) ange den transport som används (till exempel HTTP eller TCP) och en kodning. Principerna omfattar säkerhetskrav och andra villkor som måste uppfyllas för att kommunicera med en tjänst.
Tjänstkörning
Tjänstkörningsskiktet innehåller de beteenden som endast inträffar under den faktiska driften av tjänsten, dvs. körningsbeteenden för tjänsten. Begränsning styr hur många meddelanden som bearbetas, vilket kan variera om efterfrågan på tjänsten växer till en förinställd gräns. Ett felbeteende anger vad som inträffar när ett internt fel inträffar på tjänsten, till exempel genom att styra vilken information som förmedlas till klienten. (För mycket information kan ge en obehörig användare en fördel vid montering av en attack.) Metadatabeteende styr hur och om metadata görs tillgängliga för omvärlden. Instansbeteende anger hur många instanser av tjänsten som kan köras (till exempel anger en singleton endast en instans för att bearbeta alla meddelanden). Transaktionsbeteende möjliggör återställning av transacted-åtgärder om ett fel inträffar. Sändningsbeteende är kontrollen över hur ett meddelande bearbetas av WCF-infrastrukturen.
Utökningsbarhet möjliggör anpassning av körningsprocesser. Till exempel är meddelandegranskning möjligheten att inspektera delar av ett meddelande, och parameterfiltrering gör att förinställda åtgärder kan utföras baserat på filter som agerar på meddelandehuvuden.
Meddelandetjänster
Meddelandelagret består av kanaler. En kanal är en komponent som bearbetar ett meddelande på något sätt, till exempel genom att autentisera ett meddelande. En uppsättning kanaler kallas även för en kanalstack. Kanaler fungerar på meddelanden och meddelandehuvuden. Detta skiljer sig från tjänstkörningsskiktet, som främst handlar om att bearbeta innehållet i meddelandekroppar.
Det finns två typer av kanaler: transportkanaler och protokollkanaler.
Transportkanaler läser och skriver meddelanden från nätverket (eller någon annan kommunikationspunkt med omvärlden). Vissa transporter använder en kodare för att konvertera meddelanden (som representeras som XML-informationsuppsättningar) till och från byteströmrepresentationen som används av nätverket. Exempel på transporter är HTTP, namngivna rör, TCP och MSMQ. Exempel på kodningar är XML och optimerad binär kodning.
Protokollkanaler implementerar protokoll för meddelandebearbetning, ofta genom att läsa eller skriva ytterligare rubriker i meddelandet. Exempel på sådana protokoll är WS-Security och WS-Reliability.
Meddelandelagret illustrerar möjliga format och utbytesmönster för data. WS-Security är en implementering av WS-Security-specifikationen som möjliggör säkerhet på meddelandelagret. WS-Reliable Messaging-kanalen möjliggör garanti för meddelandeleverans. Kodarna presenterar en mängd olika kodningar som kan användas för att passa meddelandets behov. HTTP-kanalen anger att HyperText Transport Protocol används för meddelandeleverans. TCP-kanalen anger på samma sätt TCP-protokollet. Transaktionsflödeskanalen styr transacted message patterns (Transacted Message Patterns). Kanalen Named Pipe möjliggör kommunikation mellan processer. MSMQ-kanalen möjliggör samarbete med MSMQ-program.
Värd och aktivering
I sin slutliga form är en tjänst ett program. Precis som andra program måste en tjänst köras i en körbar fil. Detta kallas för en lokalt installerad tjänst.
Tjänster kan också hanteras eller köras i en körbar som hanteras av en extern agent, till exempel IIS eller Windows Activation Service (WAS). WAS gör att WCF-program kan aktiveras automatiskt när de distribueras på en dator som kör WAS. Tjänster kan också köras manuellt som körbara filer (.exe filer). En tjänst kan också köras automatiskt som en Windows-tjänst. COM+-komponenter kan också hanteras som WCF-tjänster.