Megosztás a következőn keresztül:


A Windows Communication Foundation alapfogalmai

Ez a dokumentum a Windows Communication Foundation (WCF) architektúrájának magas szintű nézetét nyújtja. Célja, hogy elmagyarázza a legfontosabb fogalmakat és azok illeszkednek egymáshoz. A WCF-szolgáltatás és -ügyfél legegyszerűbb verziójának létrehozásáról szóló oktatóanyagért tekintse meg az Első lépések oktatóanyagot. A WCF programozásának megismeréséhez tekintse meg az alapszintű WCF-programozást.

A WCF alapjai

A WCF egy futtatókörnyezet és api-k készlete, amelyek olyan rendszereket hoznak létre, amelyek üzeneteket küldenek a szolgáltatások és az ügyfelek között. Ugyanezekkel az infrastruktúrával és API-kkal olyan alkalmazásokat hozhat létre, amelyek ugyanazon a számítógépes rendszeren vagy egy másik vállalatnál található, az interneten keresztül elérhető más alkalmazásokkal kommunikálnak.

Üzenetkezelés és végpontok

A WCF az üzenetalapú kommunikáció fogalmán alapul, és a programozási modellben minden, amely modellezhető üzenetként (például HTTP-kérés vagy Üzenetsor-kezelés (más néven MSMQ) üzenet). Ez lehetővé teszi az egységes API-t a különböző átviteli mechanizmusok között.

A modell megkülönbözteti az ügyfeleket, azaz a kommunikációt kezdeményező alkalmazásokat és a szolgáltatásokat, amelyek olyan alkalmazások, amelyek megvárják, amíg az ügyfelek kommunikálnak velük, és válaszolnak erre a kommunikációra. Egyetlen alkalmazás ügyfélként és szolgáltatásként is működhet. Példák : Kétoldalas szolgáltatások és társközi hálózatkezelés.

A rendszer üzeneteket küld a végpontok között. A végpontok olyan helyek, ahol üzeneteket küldenek vagy fogadnak (vagy mindkettőt), és meghatározzák az üzenetváltáshoz szükséges összes információt. A szolgáltatás egy vagy több alkalmazásvégpontot (valamint nulla vagy több infrastruktúravégpontot) tesz elérhetővé, és az ügyfél létrehoz egy olyan végpontot, amely kompatibilis a szolgáltatás egyik végpontjával.

A végpontok szabványos módon írják le az üzenetek küldésének helyét, az üzenetek küldésének módját és az üzenetek megjelenését. A szolgáltatások metaadatokként tehetik közzé ezeket az információkat, amelyeket az ügyfelek feldolgozhatnak a megfelelő WCF-ügyfelek és kommunikációs vermek létrehozásához.

Kommunikációs protokollok

A kommunikációs verem egyik szükséges eleme a átviteli protokoll. Az üzenetek az intraneten és az interneten keresztül is küldhetők olyan gyakori átvitelek használatával, mint a HTTP és a TCP. Egyéb átvitelek is elérhetők, amelyek támogatják a Message Queuing-alkalmazásokkal és csomópontokkal való kommunikációt egy társhálózati hálón. További szállítási mechanizmusok is hozzáadhatók a WCF beépített bővítőpontjaival.

A kommunikációs verem egy másik szükséges eleme a kódolás, amely meghatározza az adott üzenetek formázását. A WCF a következő kódolásokat biztosítja:

  • Szövegkódolás, interoperábilis kódolás.

  • Üzenetátviteli optimalizálási mechanizmus (MTOM) kódolása, amely egy átjárható módszer a strukturálatlan bináris adatok szolgáltatásba és szolgáltatásból történő hatékony küldéséhez.

  • Bináris kódolás a hatékony átvitel érdekében.

További kódolási mechanizmusok (például tömörítési kódolás) is hozzáadhatók a WCF beépített bővítménypontjai használatával.

Üzenetminták

A WCF számos üzenetkezelési mintát támogat, például a kérés-válasz, az egyirányú és a kétirányú kommunikációt. A különböző átvitelek különböző üzenetkezelési mintákat támogatnak, és így befolyásolják az általuk támogatott interakciókat. A WCF API-k és a futtatókörnyezet is segít az üzenetek biztonságos és megbízható küldésében.

WCF-feltételek

A WCF dokumentációjában használt egyéb fogalmak és kifejezések a következők:

Üzenet
Önálló adategység, amely több részből állhat, beleértve a törzset és a fejléceket is.

Szolgáltatás
Egy vagy több végpontot elérhetővé tevő szerkezet, amelynek minden végpontja egy vagy több szolgáltatásműveletet tesz közzé.

Végpont
Egy szerkezet, amelyen üzeneteket küldenek vagy fogadnak (vagy mindkettőt). Ez egy helyből (egy címből) áll, amely meghatározza az üzenetek küldésének helyét, a kommunikációs mechanizmus (kötés) specifikációját, amely leírja az üzenetek küldésének módját, valamint az adott helyen (vagy mindkettőn) küldhető vagy fogadható üzenetek definícióját (szolgáltatási szerződés), amely leírja, hogy milyen üzenetek küldhetők el.

A WCF-szolgáltatás végpontok gyűjteményeként jelenik meg a világ számára.

Alkalmazásvégpont
Az alkalmazás által közzétett végpont, amely megfelel az alkalmazás által megvalósított szolgáltatási szerződésnek.

Infrastruktúra-végpont
Olyan végpont, amelyet az infrastruktúra tesz elérhetővé, hogy megkönnyítse a szolgáltatás által igényelt vagy nyújtott funkciókat, amelyek nem kapcsolódnak szolgáltatási szerződéshez. Előfordulhat például, hogy egy szolgáltatás rendelkezik olyan infrastruktúra-végponttal, amely metaadatokkal szolgál.

Cím
Megadja az üzenetek fogadásának helyét. Egységes erőforrás-azonosítóként (URI) van megadva. Az URI-sémarész a cím eléréséhez használandó átviteli mechanizmust adja meg, például HTTP-t és TCP-t. Az URI hierarchikus része egy egyedi helyet tartalmaz, amelynek formátuma az átviteli mechanizmustól függ.

A végpontcím lehetővé teszi, hogy egyedi végpontcímeket hozzon létre egy szolgáltatás minden végpontja számára, vagy bizonyos feltételek mellett megoszthasson egy címet a végpontok között. Az alábbi példa egy https protokollt használó címet mutat be egy nem alapértelmezett porttal:

HTTPS://cohowinery:8005/ServiceModelSamples/CalculatorService

Kötelező
Meghatározza, hogyan kommunikál egy végpont a világgal. Olyan összetevőkből áll, amelyeket kötési elemeknek neveznek, amelyek az egyiket a másikra "verik" a kommunikációs infrastruktúra létrehozásához. Legalább egy kötés határozza meg az átvitelt (például HTTP vagy TCP) és a használt kódolást (például szöveg vagy bináris). A kötések olyan kötéselemeket tartalmazhatnak, amelyek olyan részleteket határoznak meg, mint az üzenetek védelméhez használt biztonsági mechanizmusok vagy a végpontok által használt üzenetminta. További információ: Szolgáltatások konfigurálása.

Kötési elem
A kötés egy adott darabját jelöli, például átvitelt, kódolást, infrastruktúraszintű protokoll implementálását (például WS-ReliableMessaging) vagy a kommunikációs verem bármely más összetevőjét.

Viselkedésmódok
Olyan összetevő, amely egy szolgáltatás, egy végpont, egy adott művelet vagy ügyfél futásidejű aspektusait vezérli. A viselkedések hatókör szerint vannak csoportosítva: a gyakori viselkedések globálisan minden végpontot érintenek, a szolgáltatás viselkedése csak a szolgáltatással kapcsolatos szempontokat érinti, a végpontok viselkedése csak a végponttal kapcsolatos tulajdonságokat érinti, a műveletszintű viselkedések pedig az adott műveleteket befolyásolják. Az egyik szolgáltatás viselkedése például a szabályozás, amely meghatározza, hogy a szolgáltatás hogyan reagál, ha egy üzenetfelesleg azzal fenyeget, hogy túlterheli a kezelési képességeit. A végpontok viselkedése viszont csak a végpontok szempontjából releváns szempontokat szabályozza, például a biztonsági hitelesítő adatok megkeresésének módját és helyét.

Rendszer által biztosított kötések
A WCF számos rendszer által biztosított kötést tartalmaz. Ezek olyan kötéselemek gyűjteményei, amelyek adott forgatókönyvekhez vannak optimalizálva. Például a WSHttpBinding különböző WS-* specifikációkat megvalósító szolgáltatásokkal való együttműködésre tervezték. Ezek az előre definiált kötések időt takaríthatnak meg, ha csak azokat a beállításokat jelenítik meg, amelyek megfelelően alkalmazhatók az adott forgatókönyvre. Ha egy előre definiált kötés nem felel meg a követelményeknek, létrehozhat saját egyéni kötést.

Konfiguráció és kódolás
Az alkalmazások vezérlése kódolással, konfigurációval vagy a kettő kombinációjával végezhető el. A konfiguráció előnye, hogy lehetővé teszi, hogy a fejlesztőn (például egy hálózati rendszergazda) kívül más is beállítsa az ügyfél- és szolgáltatásparamétereket a kód megírása után, és nem kell újrafordítást használnia. A konfigurációval nemcsak olyan értékeket állíthat be, mint a végpontcímek, hanem további vezérlést is lehetővé tesz, ha lehetővé teszi végpontok, kötések és viselkedések hozzáadását. A kódolás lehetővé teszi a fejlesztő számára a szolgáltatás vagy ügyfél minden összetevőjének szigorú ellenőrzését, és a konfiguráción keresztül végrehajtott beállításokat megvizsgálhatja, és szükség esetén felül is bírálhatja a kódot.

Szolgáltatásművelet
Egy szolgáltatás kódjában definiált eljárás, amely megvalósítja egy művelet funkcióit. Ez a művelet egy WCF-ügyfél metódusaként jelenik meg az ügyfelek számára. A metódus visszaadhat egy értéket, és tetszőleges számú argumentumot vehet fel, vagy nem vehet fel argumentumokat, és nem ad vissza választ. Például egy egyszerű "Hello" néven működő művelet használható az ügyfél jelenlétének értesítéseként és műveletek sorozatának elindításához.

Szolgáltatási szerződés
Több kapcsolódó művelet összekapcsolása egyetlen funkcionális egységbe. A szerződés meghatározhatja a szolgáltatásszintű beállításokat, például a szolgáltatás névterét, a megfelelő visszahívási szerződést és egyéb beállításokat. A legtöbb esetben a szerződés úgy van meghatározva, hogy létrehoz egy felületet a választott programozási nyelven, és alkalmazza az ServiceContractAttribute attribútumot a felületre. A tényleges szolgáltatáskód az interfész implementálásával lesz eredmény.

Üzemeltetési szerződés
A műveleti szerződés határozza meg egy művelet paramétereit és visszatérési típusát. A szolgáltatási szerződést meghatározó felület létrehozásakor a szerződés részét képező metódusdefiníciókra alkalmazza az OperationContractAttribute attribútumot. A műveletek modellezhetők úgy, hogy egyetlen üzenetet fogadnak és egyetlen üzenetet adnak vissza, vagy egy típuskészletet vesznek fel, és egy típust adnak vissza. Az utóbbi esetben a rendszer határozza meg az adott művelethez kicserélendő üzenetek formátumát.

Üzenetszerződés
Az üzenet formátumát ismerteti. Deklarálja például, hogy az üzenetelemeknek a fejlécekben és a törzsben kell-e lenniük, milyen biztonsági szintet kell alkalmazni az üzenet mely elemeire, és így tovább.

Hibaszerződés
Szolgáltatásművelethez társítható a hívónak visszaadható hibák jelöléséhez. Egy művelethez nulla vagy több hiba lehet társítva. Ezek a hibák olyan SOAP-hibák, amelyek kivételként vannak modellozva a programozási modellben.

Adatszerződés
A szolgáltatás által használt adattípusok metaadatainak leírásai. Ez lehetővé teszi, hogy mások együttműködjenek a szolgáltatással. Az adattípusok az üzenet bármely részében használhatók, például paraméterekként vagy visszatérési típusokként. Ha a szolgáltatás csak egyszerű típusokat használ, nincs szükség kifejezetten adatszerződések használatára.

Üzemeltetés
Egy szolgáltatást valamilyen folyamatban kell üzemeltetni. A gazdagép egy olyan alkalmazás, amely a szolgáltatás élettartamát szabályozza. A szolgáltatások önállóan üzemeltethetők vagy felügyelhetők egy meglévő üzemeltetési folyamattal.

Saját üzemeltetésű szolgáltatás
A fejlesztő által létrehozott folyamatalkalmazáson belül futó szolgáltatás. A fejlesztő vezérli az élettartamát, beállítja a szolgáltatás tulajdonságait, megnyitja a szolgáltatást (amely figyelési módba állítja), és bezárja a szolgáltatást.

Üzemeltetési folyamat
Szolgáltatások üzemeltetésére tervezett alkalmazás. Ilyenek például az Internet Information Services (IIS), a Windows Activation Services (WAS) és a Windows Services. Ezekben az üzemeltetett forgatókönyvekben a gazdagép szabályozza a szolgáltatás élettartamát. Az IIS használatával például beállíthat egy virtuális könyvtárat, amely tartalmazza a szolgáltatásszerelvényt és a konfigurációs fájlt. Üzenet érkezésekor az IIS elindítja a szolgáltatást, és szabályozza annak élettartamát.

Instancing
Egy szolgáltatás instancing modellel rendelkezik. Három instancing modell létezik: "single", amelyben egyetlen CLR objektum az összes ügyfelet szolgáltatásokat nyújtja; " hívásonként", amelyben egy új CLR-objektum jön létre az egyes ügyfélhívások kezeléséhez; és "munkamenetenként", amelyben EGY-egy CLR-objektum jön létre, egy-egy külön munkamenethez. Az instancing modell kiválasztása az alkalmazáskövetelményektől és a szolgáltatás várható használati mintájától függ.

Ügyfélalkalmazás
Olyan program, amely üzeneteket cserél egy vagy több végponttal. Az ügyfélalkalmazás egy WCF-ügyfél példányának létrehozásával és a WCF-ügyfél metódusainak meghívásával kezdődik. Fontos megjegyezni, hogy egyetlen alkalmazás lehet ügyfél és szolgáltatás is.

Csatorna
Egy kötéselem konkrét megvalósítása. A kötés a konfigurációt jelöli, és a csatorna az adott konfigurációhoz társított implementáció. Ezért minden kötési elemhez van egy csatorna társítva. Csatornák verem egymásra, hogy létrehozzák a konkrét megvalósítása a kötés: a csatorna verem.

WCF-ügyfél
Egy ügyfélalkalmazás-szerkezet, amely a szolgáltatásműveleteket metódusként teszi elérhetővé (a választott .NET-keretrendszer programozási nyelven, például Visual Basic vagy Visual C#). Bármely alkalmazás üzemeltethet WCF-ügyfelet, beleértve egy szolgáltatást üzemeltető alkalmazást is. Ezért létrehozhat egy olyan szolgáltatást, amely más szolgáltatások WCF-ügyfeleit is magában foglalja.

A WCF-ügyfél automatikusan létrehozható a ServiceModel Metadata segédprogrammal (Svcutil.exe), és egy metaadatokat közzétevő futó szolgáltatásra mutathat.

Metaadatok
Egy szolgáltatásban a szolgáltatás azon jellemzőit írja le, amelyeket egy külső entitásnak meg kell értenie a szolgáltatással való kommunikációhoz. A ServiceModel Metadata Segédprogram (Svcutil.exe) a metaadatokat felhasználhatja egy WCF-ügyfél létrehozásához és a hozzá tartozó konfiguráció létrehozásához, amelyet az ügyfélalkalmazás használhat a szolgáltatással való interakcióhoz.

A szolgáltatás által közzétett metaadatok közé tartoznak az XML-sémadokumentumok, amelyek meghatározzák a szolgáltatás adatszerződését, valamint a WSDL-dokumentumok, amelyek a szolgáltatás módszereit írják le.

Ha engedélyezve van, a WCF automatikusan létrehozza a szolgáltatás metaadatait a szolgáltatás és a végpontok vizsgálatával. A metaadatok szolgáltatásból való közzétételéhez explicit módon engedélyeznie kell a metaadatok viselkedését.

Biztonság
A WCF-ben magában foglalja a bizalmasságot (az üzenetek titkosítását a lehallgatás megakadályozása érdekében), az integritást (az üzenet illetéktelen befolyásolásának észlelésének eszközeit), a hitelesítést (a kiszolgálók és ügyfelek ellenőrzésének eszközeit) és az engedélyezést (az erőforrásokhoz való hozzáférés ellenőrzését). Ezeket a funkciókat a meglévő biztonsági mechanizmusok, például a HTTP-en keresztüli TLS (más néven HTTPS) használatával, vagy a különböző WS-* biztonsági specifikációk implementálásával biztosítják.

Átviteli biztonsági mód
Megadja, hogy a bizalmasságot, az integritást és a hitelesítést az átviteli réteg mechanizmusai (például HTTPS) biztosítják. A HTTPS-hez hasonló átvitel használatakor ennek a módnak az az előnye, hogy hatékony a teljesítményében, és jól érthető az interneten való elterjedtsége miatt. A hátránya, hogy az ilyen típusú biztonságot külön alkalmazzák a kommunikációs útvonal minden ugrására, így a kommunikáció "középen lévő ember" támadásra van érzékeny.

Üzenetbiztonsági mód
Megadja, hogy a biztonságot egy vagy több biztonsági specifikáció implementálásával biztosítják, például a Web Services Security: SOAP Message Security nevű specifikációt. Minden üzenet tartalmazza azokat a mechanizmusokat, amelyek biztosítják a biztonságot az átvitel során, és lehetővé teszik a fogadók számára az illetéktelen beavatkozás észlelését és az üzenetek visszafejtését. Ebben az értelemben a biztonság minden üzenetbe bele van foglalva, és teljes körű biztonságot nyújt több ugrásban. Mivel a biztonsági információk az üzenet részévé válnak, többféle hitelesítő adatot is be lehet vonni az üzenetbe (ezeket jogcímeknek nevezzük). Ennek a megközelítésnek az az előnye is, hogy lehetővé teszi, hogy az üzenet biztonságosan haladjon át minden szállításon, beleértve a származási hely és a cél közötti több szállítást is. Ennek a megközelítésnek a hátránya az alkalmazott titkosítási mechanizmusok összetettsége, ami teljesítménybeli következményekkel jár.

Átvitel üzenet hitelesítő adatokkal biztonsági móddal
Megadja az átviteli réteg használatát az üzenetek bizalmasságának, hitelesítésének és integritásának biztosításához, míg mindegyik üzenet több hitelesítő adatot (jogcímet) tartalmazhat, amelyeket az üzenet fogadói igényelnek.

WS-*
Rövidítés a webszolgáltatás (WS) egyre növekvő specifikációihoz, például a WS-Securityhez, a WS-ReliableMessaginghez stb., amelyek a WCF-ben implementálva vannak.

Lásd még