Dela via


Skapa WCF AJAX-tjänster utan ASP.NET

Windows Communication Foundation (WCF) AJAX-tjänster kan nås från valfri JavaScript-aktiverad webbsida, utan ASP.NET AJAX. I det här avsnittet beskrivs hur du skapar en sådan WCF-tjänst.

Anvisningar om hur du använder WCF med ASP.NET AJAX finns i Skapa WCF-tjänster för ASP.NET AJAX.

Det finns tre delar i en skapande av en WCF AJAX-tjänst:

  • Skapa en AJAX-slutpunkt som kan nås från webbläsaren.

  • Skapa ett AJAX-kompatibelt tjänstkontrakt.

  • Åtkomst till WCF AJAX-tjänster.

Skapa en AJAX-slutpunkt

Det mest grundläggande sättet att aktivera AJAX-stöd i en WCF-tjänst är att använda WebServiceHostFactory i .svc-filen som är associerad med tjänsten, som i följande exempel.

<%ServiceHost
    language=c#  
    Debug="true"  
    Service="Microsoft.Ajax.Samples.CityService"  
    Factory=System.ServiceModel.Activation.WebServiceHostFactory  
%>  

Du kan också använda konfigurationen för att lägga till en AJAX-slutpunkt. WebHttpBinding Använd på tjänstslutpunkten och konfigurera slutpunkten med det WebHttpBehavior som visas i följande kodfragment.

<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>  

Ett fungerande exempel finns i AJAX-tjänsten med JSON och XML.

Skapa ett AJAX-kompatibelt tjänstkontrakt

Som standard returnerar tjänstkontrakt som exponeras via en AJAX-slutpunkt data i XML-format. Dessutom är tjänståtgärder som standard tillgängliga via HTTP POST-begäranden till URL:er som innehåller slutpunktsadressen följt av åtgärdsnamnet, som visas i följande exempel.

[OperationContract]  
string[] GetCities(string firstLetters);  

Den här åtgärden är tillgänglig med hjälp av ett HTTP POST till http://serviceaddress/endpointaddress/GetCities och returnerar ett XML-meddelande.

Du kan använda den fullständiga webbprogrammeringsmodellen för att anpassa dessa grundläggande aspekter. Du kan till exempel använda attributen WebGetAttribute eller WebInvokeAttribute för att styra HTTP-verbet som åtgärden svarar på eller använda UriTemplate egenskapen för dessa respektive attribut för att ange anpassade URI:er. Mer information finns i avsnittet WCF Web HTTP Programming Model (WCF Web HTTP Programming Model ).

JSON-dataformatet används ofta i AJAX-tjänster. Om du vill skapa en åtgärd som returnerar JSON i stället för XML anger du ResponseFormat egenskapen (eller ResponseFormat) till Json. Avsnittet Fristående JSON-serialisering visar hur inbyggda .NET-typer och datakontraktstyper mappas till JSON.

Normalt består JSON-begäranden och -svar av bara ett objekt. För föregående GetCities åtgärd liknar begäran följande -instruktion.

"na"  

Svaret på den begäran liknar följande instruktion.

["Nairobi", "Naples", "Nashville"]  

Om åtgärden tar en extra parameter måste begärandeformatet omslutas för att omsluta båda parametrarna i ett enda JSON-objekt. Ett exempel på det här JSON-formatet finns i följande exempel.

{"firstLetters": "na", "maxNumber": 2}  

Följande kontrakt godkänner det här meddelandet.

[WebInvoke(BodyStyle=WebMessageBodyStyle.WrappedRequest, ResponseFormat=WebMessageFormat.Json)]  
[OperationContract]  
string[] GetCities(string firstLetters, int maxNumber);  

Åtkomst till AJAX-tjänster

WCF AJAX-slutpunkter accepterar alltid både JSON- och XML-begäranden.

HTTP POST-begäranden med innehållstypen "application/json" behandlas som JSON och de med innehållstyp som anger XML (till exempel "text/xml") behandlas som XML.

HTTP GET-begäranden innehåller alla begärandeparametrar i själva URL:en.

Det är upp till användaren att bestämma hur http-begäran ska skapas till slutpunkten. Användaren har också fullständig kontroll över att konstruera den JSON som utgör brödtexten i begäran. Ett exempel på hur du skapar en begäran från JavaScript finns i AJAX-tjänsten med JSON och XML.