Smlouvy
V této části se dozvíte, jak definovat a implementovat kontrakty WCF (Windows Communication Foundation). Kontrakt služby určuje, co koncový bod komunikuje s vnějším světem. Na konkrétnější úrovni je to prohlášení o sadě konkrétních zpráv uspořádaných do základních vzorů výměny zpráv (MEP), jako jsou žádosti/odpovědi, jednosměrné a duplexní. Pokud je kontrakt služby logicky související se sadou výměn zpráv, operace služby je jedna výměna zpráv. Hello
Například operace musí samozřejmě přijmout jednu zprávu (takže volající může oznámit pozdrav) a může nebo nemusí vrátit zprávu (v závislosti na zdvořilosti operace).
Další informace o kontraktech a dalších základních konceptech WCF naleznete v tématu Základní koncepty technologie Windows Communication Foundation. Toto téma se zaměřuje na pochopení kontraktů služeb. Další informace o vytváření klientů, kteří používají kontrakty služeb pro připojení ke službám, naleznete v tématu Přehled klienta WCF. Další informace o klientských kanálech, architektuře klienta a dalších problémech s klienty najdete v tématu Klienti.
Přehled
Toto téma poskytuje základní koncepční orientaci na návrh a implementaci služeb WCF. Dílčí dílčí oblasti poskytují podrobnější informace o specifikách návrhu a implementace. Před návrhem a implementací aplikace WCF se doporučuje:
Porozumíte tomu, co je kontrakt služby, jak funguje a jak ho vytvořit.
Uvědomte si, že kontrakty uvádějí minimální požadavky, které konfigurace za běhu nebo hostitelské prostředí nemusí podporovat.
Kontrakty služeb
Kontrakt služby je příkaz, který poskytuje informace o:
Seskupení operací ve službě.
Podpis operací z hlediska výměny zpráv.
Datové typy těchto zpráv.
Umístění operací.
Konkrétní protokoly a formáty serializace, které slouží k podpoře úspěšné komunikace se službou.
Například smlouva o nákupní objednávce může mít CreateOrder
operaci, která přijímá vstup typů informací o objednávce a vrací informace o úspěchu nebo selhání, včetně identifikátoru objednávky. Může mít GetOrderStatus
také operaci, která přijímá identifikátor objednávky a vrací informace o stavu objednávky. Kontrakt služby tohoto typu by určil:
Že se smlouva o nákupní objednávce skládala z
CreateOrder
operací aGetOrderStatus
operací.Že operace zadaly vstupní zprávy a výstupní zprávy.
Data, která mohou tyto zprávy přenášet.
Kategorické prohlášení o komunikační infrastruktuře potřebné ke úspěšnému zpracování zpráv. Tyto podrobnosti například zahrnují, zda a jaké formy zabezpečení jsou potřeba k navázání úspěšné komunikace.
Aby bylo možné tento druh informací sdělit aplikacím na jiných platformách (včetně platforem jiných společností než Microsoft), jsou kontrakty služeb XML veřejně vyjádřeny ve standardních formátech XML, jako jsou například WSDL (Web Services Description Language) a XSD (XML Schema). Vývojáři pro mnoho platforem mohou tyto informace o veřejných kontraktech použít k vytváření aplikací, které můžou komunikovat se službou, a to jak proto, že rozumí jazyku specifikace, a protože tyto jazyky jsou navržené tak, aby umožňovaly spolupráci popisem veřejných formulářů, formátů a protokolů, které služba podporuje. Další informace o tom, jak WCF zpracovává tento druh informací, naleznete v tématu Metadata.
Kontrakty se ale dají vyjádřit mnoha způsoby a i když jsou WSDL a XSD vynikajícími jazyky, které popisují služby přístupným způsobem, jsou obtížné je používat přímo – v každém případě jsou pouze popisy služby, nikoli implementace kontraktů služeb. Aplikace WCF proto používají spravované atributy, rozhraní a třídy jak k definování struktury, tak k implementaci služby.
Výsledný kontrakt definovaný ve spravovaných typech je možné převést (označovaný také jako export) jako metadata – WSDL a XSD – v případě potřeby klientů nebo jiných implementátorů služeb, zejména na jiných platformách. Výsledkem je jednoduchý programovací model, který lze popsat pomocí veřejných metadat pro libovolnou klientskou aplikaci. Podrobnosti o podkladových zprávách SOAP, jako jsou například informace související s dopravou a zabezpečením, mohou být ponechány službě WCF, což automaticky provádí potřebné převody do systému typů kontraktů služeb do systému typů XML.
Další informace o návrhu kontraktů naleznete v tématu Navrhování kontraktů služeb. Další informace o implementaci kontraktů naleznete v tématu Implementace kontraktů služeb.
Kromě toho WCF také poskytuje možnost vyvíjet kontrakty služeb zcela na úrovni zpráv. Další informace o vývoji kontraktů služeb na úrovni zprávy naleznete v tématu Použití kontraktů zpráv. Další informace o vývoji služeb v jazyce XML bez protokolu SOAP naleznete v tématu Interoperabilita s aplikacemi POX.
Porozumění hierarchii požadavků
Kontrakt služby seskupuje operace; určuje mep, typy zpráv a datové typy, které tyto zprávy obsahují; a označuje kategorie chování za běhu, které musí implementace podporovat kontrakt (například může vyžadovat, aby zprávy byly šifrované a podepsané). Samotná smlouva o poskytování služeb však přesně nespecifikuje, jak jsou tyto požadavky splněny, pouze to, že musí být splněny. Jaký typ šifrování nebo jak se zpráva zaregistruje k implementaci a konfiguraci kompatibilní služby.
Všimněte si, jak kontrakt vyžaduje určité věci implementace kontraktu služby a konfiguraci za běhu, aby se přidalo chování. Sada požadavků, které musí být splněny, aby bylo možné zveřejnit službu pro použití, vychází z předchozí sady požadavků. Pokud kontrakt vyžaduje požadavky implementace, může implementace vyžadovat ještě více konfigurace a vazeb, které službě umožňují spustit. Hostitelská aplikace musí také podporovat všechny požadavky, které přidá konfigurace služby a vazby.
Při navrhování, implementaci, konfiguraci a hostování aplikace služby Windows Communication Foundation (WCF) je důležité mít na paměti tento proces s doplňkovými požadavky. Kontrakt může například určit, že potřebuje podporovat relaci. Pokud ano, musíte nakonfigurovat vazbu, která bude podporovat tento smluvní požadavek, nebo implementace služby nebude fungovat. Pokud vaše služba vyžaduje integrované ověřování systému Windows a je hostovaná ve službě Internetová informační služba (IIS), musí mít webová aplikace, ve které se služba nachází, zapnuté integrované ověřování systému Windows a je vypnutá anonymní podpora. Další informace o funkcích a dopadu různých typů hostitelských aplikací služby najdete v tématu Hostování.