Programovací objektový model WCF Web HTTP

Programovací model WCF WEB HTTP umožňuje vývojářům zpřístupnit webové služby WCF (Windows Communication Foundation) prostřednictvím základních požadavků HTTP bez nutnosti protokolu SOAP. Programovací model WCF WEB HTTP je postaven na existujícím modelu rozšiřitelnosti WCF. Definuje následující třídy:

Programovací model:

Kanály a infrastruktura dispečerů:

Třídy nástrojů a body rozšiřitelnosti:

AspNetCacheProfileAttribute

Při AspNetCacheProfileAttributepoužití na operaci služby označuje profil výstupní mezipaměti ASP.NET v konfiguračním souboru, který by měl být použit k ukládání odpovědí z operace v výstupní mezipaměti ASP .NET. Tato vlastnost přebírá pouze jeden parametr, název profilu mezipaměti, který určuje nastavení mezipaměti v konfiguračním souboru.

Webgetattribute

Atribut WebGetAttribute slouží k označení operace služby jako operace, která reaguje na požadavky HTTP GET. Jedná se o pasivní chování operace ( IOperationBehavior metody nedělají nic), které přidává metadata do popisu operace. Použití WebGetAttribute nemá žádný vliv, pokud se do kolekce chování služby nepřidá chování, které hledá tato metadata v popisu operace (konkrétně ) WebHttpBehavior. Atribut WebGetAttribute přebírá volitelné parametry uvedené v následující tabulce.

Parametr Popis
BodyStyle Určuje, zda se mají zabalit požadavky a odpovědi odeslané a přijaté z operace služby, na kterou se atribut použije.
RequestFormat Určuje formátování požadovaných zpráv.
ResponseFormat Určuje formátování zpráv odpovědí.
UriTemplate Určuje šablonu identifikátoru URI, která řídí, na jaké požadavky HTTP se namapují na operaci služby, na kterou se atribut použije.

WebHttpBinding

Třída WebHttpBinding zahrnuje podporu xml, JSON a nezpracovaných binárních dat pomocí WebMessageEncodingBindingElement. Skládá se z objektu HttpsTransportBindingElementa HttpTransportBindingElement objektu WebHttpSecurity . Je WebHttpBinding navržen tak, aby byl použit ve spojení s WebHttpBehavior.

WebInvokeAttribute

Atribut WebInvokeAttribute se podobá atributu WebGetAttribute, ale slouží k označení operace služby jako operace, která reaguje na jiné požadavky HTTP než GET. Jedná se o pasivní chování operace ( IOperationBehavior metody nedělají nic), které přidává metadata do popisu operace. Použití WebInvokeAttribute nemá žádný vliv, pokud se do kolekce chování služby nepřidá chování, které hledá tato metadata v popisu operace (konkrétně ) WebHttpBehavior.

Atribut WebInvokeAttribute přebírá volitelné parametry uvedené v následující tabulce.

Parametr Popis
BodyStyle Určuje, zda se mají zabalit požadavky a odpovědi odeslané a přijaté z operace služby, na kterou se atribut použije.
Method Určuje metodu HTTP, na které je operace služby mapována.
RequestFormat Určuje formátování požadovaných zpráv.
ResponseFormat Určuje formátování zpráv odpovědí.
UriTemplate Určuje šablonu identifikátoru URI, která určuje, na jaké požadavky GET se namapují na operaci služby, na kterou se atribut použije.

UriTemplate

Třída UriTemplate umožňuje definovat sadu strukturálně podobných identifikátorů URI. Šablony se skládají ze dvou částí, cesty a dotazu. Cesta se skládá z řady segmentů oddělených lomítkem (/). Každý segment může mít literální hodnotu, proměnnou hodnotu (zapisovanou ve složených závorkách [{ }], omezená tak, aby odpovídala obsahu přesně jednoho segmentu) nebo zástupný znak (napsaný jako hvězdička [*], který odpovídá zbytku cesty), který se musí objevit na konci cesty. Výraz dotazu lze zcela vynechat. Pokud existuje, určuje neuspořádanou řadu dvojic název/hodnota. Prvky výrazu dotazu můžou být buď dvojice literálů (?x=2), nebo páry proměnných (?x={value}). Nezaplacené hodnoty nejsou povoleny. UriTemplate programový model WCF WEB HTTP používá interně k mapování konkrétních identifikátorů URI nebo skupin identifikátorů URI na operace služby.

Tabulka UriTemplateTable

Třída UriTemplateTable představuje asociativní sadu UriTemplate objektů vázané na objekt výběru vývojáře. Umožňuje spárovat kandidátské identifikátory URI (Uniform Resource Identifier) vůči šablonám v sadě a načíst data přidružená k odpovídajícím šablonám. UriTemplateTable programový model WCF WEB HTTP používá interně k mapování konkrétních identifikátorů URI nebo skupin identifikátorů URI na operace služby.

WebServiceHost

WebServiceHostServiceHost rozšiřuje, aby bylo snazší hostovat službu webového stylu jiného typu než SOAP. Pokud WebServiceHost nenajde žádné koncové body v popisu služby, automaticky vytvoří výchozí koncový bod na základní adrese služby. Při vytváření výchozího koncového bodu WebServiceHost HTTP také zakáže stránku nápovědy HTTP a funkci GET jazyka WSDL (Web Services Description Language), aby koncový bod metadat nepřekážel výchozímu koncovému bodu HTTP. WebServiceHost také zajišťuje, aby všechny koncové body, které používají WebHttpBinding , měly připojené požadované WebHttpBehavior . Nakonec automaticky nakonfiguruje vazbu koncového bodu tak, WebServiceHost aby fungovala s přidruženými nastaveními zabezpečení Internetová informační služba (IIS) při použití v zabezpečeném virtuálním adresáři.

WebServiceHostFactory

Třída WebServiceHostFactory se používá k dynamickému WebServiceHost vytvoření, když je služba hostovaná v rámci služby Internetová informační služba (IIS) nebo služba aktivace procesu systému Windows (WAS). Na rozdíl od služby v místním prostředí, kde hostitelská aplikace vytvoří instanci WebServiceHost, služby hostované ve službě IIS nebo WAS používají tuto třídu k vytvoření WebServiceHost služby. Metoda CreateServiceHost(Type, Uri[]) se volá při přijetí příchozího požadavku na službu.

WebHttpBehavior

Třída WebHttpBehavior poskytuje potřebné formátovací moduly, selektory operací atd., které jsou vyžadovány pro podporu služby webového stylu ve vrstvě Modelu služby. To se implementuje jako chování koncového bodu (používá se ve spojení s WebHttpBinding) a umožňuje specifikovat formátovací moduly a selektory operací pro každý koncový bod, což umožňuje stejné implementaci služby zveřejnit koncové body SOAP i POX.

Rozšíření webHttpBehavior

WebHttpBehavior je rozšiřitelný pomocí několika virtuálních metod: GetOperationSelector(ServiceEndpoint), GetReplyClientFormatter(OperationDescription, ServiceEndpoint), GetRequestClientFormatter(OperationDescription, ServiceEndpoint), GetReplyDispatchFormatter(OperationDescription, ServiceEndpoint), a GetRequestDispatchFormatter(OperationDescription, ServiceEndpoint). Vývojáři mohou odvodit třídu z WebHttpBehavior těchto metod a přepsat je tak, aby přizpůsobili výchozí chování.

Jedná se WebScriptEnablingBehavior o příklad rozšíření WebHttpBehavior. WebScriptEnablingBehavior umožňuje koncovým bodům WCF (Windows Communication Foundation) přijímat požadavky HTTP z klienta ajax založeného ASP.NET na prohlížeči. Příkladem použití tohoto bodu rozšiřitelnosti je služba AJAX využívající http POST .

Upozorňující

Při použití , WebScriptEnablingBehaviorUriTemplate nejsou podporovány v rámci WebGetAttribute nebo WebInvokeAttribute atributy.

WebHttpDispatchOperationSelector

Třída WebHttpDispatchOperationSelector používá UriTemplate a UriTemplateTable třídy k odesílání volání do operací služby.

Kompatibilita

Programovací model WCF WEB HTTP nepoužívá zprávy založené na protokolu SOAP, a proto nepodporuje protokoly WS-*. Stejný kontrakt ale můžete zveřejnit dvěma různými koncovými body: jeden pomocí protokolu SOAP a druhý nepoužívá protokol SOAP. Viz Postupy: Zveřejnění kontraktu pro soap a webové klienty , například.

Zabezpečení

Vzhledem k tomu, že programovací model WCF WEB HTTP nepodporuje protokoly WS-* jediný způsob, jak zabezpečit webovou službu vytvořenou na programovacím modelu WCF WEB HTTP, je zveřejnit vaši službu pomocí PROTOKOLU SSL. Další informace o nastavení SSL se službou IIS 7.0 naleznete v tématu Postup implementace SSL ve službě IIS.

Viz také