A Windows Communication Foundation architektúrája
Az alábbi ábra a Windows Communication Foundation (WCF) architektúra fő rétegeit mutatja be.
WCF-architektúra
Szerződések és leírások
A szerződések az üzenetrendszer különböző aspektusait határozzák meg. Az adatszerződés minden olyan paramétert ír le, amely minden olyan üzenetet tartalmaz, amelyet egy szolgáltatás létrehozhat vagy felhasználhat. Az üzenetparamétereket XML-sémadefiníciós (XSD) dokumentumok határozzák meg, amelyek lehetővé teszik, hogy az XML-t értő rendszerek feldolgozzák a dokumentumokat. Az üzenetszerződés a SOAP protokollok használatával meghatározott üzenetrészeket határoz meg, és lehetővé teszi az üzenet egyes részeinek finomabb szabályozását, ha az együttműködés ilyen pontosságot igényel. A szolgáltatási szerződés megadja a szolgáltatás tényleges metódusaláírásait, és interfészként van elosztva az egyik támogatott programozási nyelvben, például a Visual Basicben vagy a Visual C#-ban.
A szabályzatok és kötések meghatározzák a szolgáltatással való kommunikációhoz szükséges feltételeket. A kötésnek például (legalább) meg kell adnia a használt átvitelt (például HTTP vagy TCP) és egy kódolást. A szabályzatok biztonsági követelményeket és egyéb feltételeket tartalmaznak, amelyeket teljesíteni kell a szolgáltatással való kommunikációhoz.
Szolgáltatási futtatókörnyezet
A szolgáltatás futtatókörnyezeti rétege tartalmazza azokat a viselkedéseket, amelyek csak a szolgáltatás tényleges működése során fordulnak elő, vagyis a szolgáltatás futásidejű viselkedését. A szabályozás szabályozza, hogy hány üzenet legyen feldolgozva, ami változhat, ha a szolgáltatás iránti igény előre beállított korlátra nő. A hibaviselkedés meghatározza, hogy mi történik, ha belső hiba történik a szolgáltatásban, például az ügyfélnek továbbított információk szabályozásával. (A túl sok információ előnyt jelenthet egy rosszindulatú felhasználó számára a támadás csatlakoztatásában.) A metaadatok viselkedése szabályozza, hogy a metaadatok hogyan és elérhetők-e a külvilág számára. A példány viselkedése határozza meg, hogy a szolgáltatás hány példánya futtatható (például egy adott példány csak egy példányt ad meg az összes üzenet feldolgozásához). A tranzakciós viselkedés lehetővé teszi az átvihető műveletek visszaállítását hiba esetén. A küldési viselkedés azt szabályozza, hogy a WCF-infrastruktúra hogyan dolgozza fel az üzeneteket.
A bővíthetőség lehetővé teszi a futtatókörnyezeti folyamatok testreszabását. Az üzenetvizsgálat például az üzenet részeinek vizsgálatára szolgáló létesítmény, a paraméterszűrés pedig lehetővé teszi az előre beállított műveletek végrehajtását az üzenetfejléceken működő szűrők alapján.
Üzenetkezelés
Az üzenetkezelési réteg csatornákból áll. A csatorna olyan összetevő, amely valamilyen módon feldolgoz egy üzenetet, például egy üzenet hitelesítésével. A csatornákat csatornaveremnek is nevezik. A csatornák üzeneteken és üzenetfejléceken működnek. Ez eltér a szolgáltatás futtatókörnyezeti rétegétől, amely elsősorban az üzenettörzsek tartalmának feldolgozásával foglalkozik.
Kétféle csatorna létezik: átviteli csatornák és protokollcsatornák.
A közlekedési csatornák a hálózatról (vagy más kommunikációs pontról) olvasnak és írnak üzeneteket a külvilággal. Egyes átvitelek kódolóval konvertálják az üzeneteket (amelyek XML-adathalmazként vannak jelölve) a hálózat által használt bájtfolyam-ábrázolásból és azokból. Ilyenek például a HTTP, a nevesített csövek, a TCP és az MSMQ. Ilyenek például az XML és az optimalizált bináris kódolások.
A protokollcsatornák gyakran további fejlécek olvasásával vagy írásával implementálják az üzenetfeldolgozási protokollokat. Ilyen protokollok például a WS-Security és a WS-Reliability.
Az üzenetkezelési réteg az adatok lehetséges formátumait és cseremintáit mutatja be. A WS-Security a WS-Security specifikáció implementációja, amely lehetővé teszi a biztonságot az üzenetrétegen. A WS-Reliable Messaging csatorna garantálja az üzenetek kézbesítését. A kódolók különféle kódolásokat mutatnak be, amelyek az üzenet igényeinek megfelelően használhatók. A HTTP-csatorna azt határozza meg, hogy a HyperText Transport Protocolot használja-e az üzenetkézbesítéshez. A TCP-csatorna hasonlóképpen határozza meg a TCP protokollt. A Tranzakciós folyamat csatorna szabályozza a tranzakciós üzenetmintákat. A nevesített csőcsatorna lehetővé teszi a folyamatközi kommunikációt. Az MSMQ-csatorna lehetővé teszi az MSMQ-alkalmazásokkal való együttműködést.
Üzemeltetés és aktiválás
Végső formájában a szolgáltatás egy program. A többi programhoz hasonlóan a szolgáltatásnak végrehajtható fájlban kell futnia. Ezt saját üzemeltetésű szolgáltatásnak nevezzük.
A szolgáltatások üzemeltethetők vagy futtathatók egy külső ügynök által felügyelt végrehajtható fájlban, például az IIS-ben vagy a Windows Aktiválási szolgáltatásban (WAS). A WAS lehetővé teszi, hogy a WCF-alkalmazások automatikusan aktiválódjanak a WAS rendszerű számítógépen való üzembe helyezéskor. A szolgáltatások manuálisan futtathatók végrehajthatóként is (.exe fájlokként). A szolgáltatás windowsos szolgáltatásként is automatikusan futtatható. A COM+ összetevők WCF-szolgáltatásként is üzemeltethetők.