Vytváření služeb WCF AJAX bez ASP.NET
Ke službám AJAX technologie Windows Communication Foundation (WCF) lze přistupovat z libovolné webové stránky s podporou JavaScriptu, aniž by bylo nutné ASP.NET AJAX. Toto téma popisuje, jak vytvořit takovou službu WCF.
Pokyny k používání WCF s ASP.NET AJAX naleznete v tématu Vytváření služeb WCF pro ASP.NET AJAX.
Vytvoření služby WCF AJAX má tři části:
Vytvoření koncového bodu AJAX, ke kterému je možné získat přístup z prohlížeče
Vytvoření kontraktu služby kompatibilního s jazykem AJAX
Přístup ke službám WCF AJAX
Vytvoření koncového bodu AJAX
Nejzákladnější způsob, jak povolit podporu AJAX ve službě WCF, je použití WebServiceHostFactory souboru .svc přidruženého ke službě, jako v následujícím příkladu.
<%ServiceHost
language=c#
Debug="true"
Service="Microsoft.Ajax.Samples.CityService"
Factory=System.ServiceModel.Activation.WebServiceHostFactory
%>
Případně můžete použít konfiguraci k přidání koncového bodu AJAX. WebHttpBinding Použijte koncový bod služby a nakonfigurujte tento koncový bod pomocí kódu, jak je znázorněno v následujícím fragmentu WebHttpBehavior kódu.
<configuration>
<system.serviceModel>
<behaviors>
<endpointBehaviors>
<behavior name="AjaxBehavior">
<webHttp/>
</behavior>
</endpointBehaviors>
</behaviors>
<services>
<service name="Microsoft.Ajax.Samples.CityService">
<endpoint
address="ajaxEndpoint"
behaviorConfiguration="AjaxBehavior"
binding="webHttpBinding"
contract="Microsoft.Ajax.Samples.ICityService" />
</service>
</services>
</system.serviceModel>
</configuration>
Pracovní příklad najdete ve službě AJAX s kódem JSON a XML.
Vytvoření kontraktu služby kompatibilního s jazykem AJAX
Ve výchozím nastavení kontrakty služeb zveřejněné prostřednictvím koncového bodu AJAX vrací data ve formátu XML. Ve výchozím nastavení jsou operace služby přístupné prostřednictvím požadavků HTTP POST na adresy URL, které obsahují adresu koncového bodu následovanou názvem operace, jak je znázorněno v následujícím příkladu.
[OperationContract]
string[] GetCities(string firstLetters);
Tato operace je přístupná pomocí protokolu HTTP POST a http://serviceaddress/endpointaddress/GetCities
vrací zprávu XML.
Tyto základní aspekty můžete přizpůsobit pomocí úplného webového programovacího modelu. Pomocí atributů můžete WebGetAttributeWebInvokeAttribute například řídit příkaz HTTP, na který operace reaguje, nebo pomocí UriTemplate
vlastnosti těchto příslušných atributů určit vlastní identifikátory URI. Další informace naleznete v tématu Programovací model WEBOVÉHO PROTOKOLU HTTP WCF.
Formát dat JSON se často používá ve službách AJAX. Chcete-li vytvořit operaci, která vrací JSON místo XML, nastavte ResponseFormat vlastnost (nebo ResponseFormat) na Jsonhodnotu . Téma serializace JSON samostatných souborů JSON ukazuje, jak se předdefinované typy .NET a typy kontraktů dat mapuje na JSON.
Za normálních okolností se požadavky a odpovědi JSON skládají jenom z jedné položky. U předchozí GetCities
operace se požadavek podobá následujícímu příkazu.
"na"
Odpověď na tento požadavek se podobá následujícímu příkazu.
["Nairobi", "Naples", "Nashville"]
Pokud operace přebírá další parametr, musí být styl požadavku zabalen, aby se oba parametry zabalily do jednoho objektu JSON. Příklad této zprávy JSON stylu je v následujícím příkladu.
{"firstLetters": "na", "maxNumber": 2}
Následující smlouva přijímá tuto zprávu.
[WebInvoke(BodyStyle=WebMessageBodyStyle.WrappedRequest, ResponseFormat=WebMessageFormat.Json)]
[OperationContract]
string[] GetCities(string firstLetters, int maxNumber);
Přístup ke službám AJAX
Koncové body WCF AJAX vždy přijímají požadavky JSON i XML.
Požadavky HTTP POST s typem obsahu "application/json" se považují za JSON a požadavky typu obsahu, které označují XML (například text/xml), se považují za XML.
Požadavky HTTP GET obsahují všechny parametry požadavku v samotné adrese URL.
Záleží na uživateli, aby se rozhodl, jak vytvořit požadavek HTTP na koncový bod. Uživatel má také plnou kontrolu nad vytvořením JSON, který tvoří tělo požadavku. Příklad vytvoření požadavku z JavaScriptu najdete ve službě AJAX s JSON a XML.