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.