Sdílet prostřednictvím


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.