Udostępnij za pośrednictwem


Tworzenie usług AJAX WCF bez platformy ASP.NET

Dostęp do usług AJAX programu Windows Communication Foundation (WCF) można uzyskać z dowolnej strony internetowej z obsługą języka JavaScript bez konieczności ASP.NET AJAX. W tym temacie opisano sposób tworzenia takiej usługi WCF.

Aby uzyskać instrukcje dotyczące używania programu WCF z ASP.NET AJAX, zobacz Tworzenie usług WCF dla ASP.NET AJAX.

Istnieją trzy części tworzenia usługi WCF AJAX:

  • Tworzenie punktu końcowego AJAX, do którego można uzyskać dostęp z przeglądarki.

  • Tworzenie kontraktu usługi zgodnego z standardem AJAX.

  • Uzyskiwanie dostępu do usług WCF AJAX.

Tworzenie punktu końcowego AJAX

Najbardziej podstawowym sposobem włączenia obsługi AJAX w usłudze WCF jest użycie WebServiceHostFactory elementu w pliku svc skojarzonym z usługą, jak w poniższym przykładzie.

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

Alternatywnie możesz również użyć konfiguracji, aby dodać punkt końcowy AJAX. Użyj elementu WebHttpBinding w punkcie końcowym usługi i skonfiguruj ten punkt końcowy za WebHttpBehavior pomocą elementu , jak pokazano w poniższym fragmencie kodu.

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

Aby zapoznać się z działającym przykładem, zobacz usługę AJAX z kodami JSON i XML.

Tworzenie kontraktu usługi zgodnego z standardem AJAX

Domyślnie kontrakty usług uwidocznione przez punkt końcowy AJAX zwracają dane w formacie XML. Ponadto domyślnie operacje usługi są dostępne za pośrednictwem żądań HTTP POST do adresów URL, które zawierają adres punktu końcowego, po którym następuje nazwa operacji, jak pokazano w poniższym przykładzie.

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

Ta operacja jest dostępna przy użyciu protokołu HTTP POST w celu http://serviceaddress/endpointaddress/GetCities zwrócenia komunikatu XML.

Aby dostosować te podstawowe aspekty, możesz użyć pełnego modelu programowania sieci Web. Można na przykład użyć WebGetAttribute atrybutów lub WebInvokeAttribute , aby kontrolować czasownik HTTP, do którego odpowiada operacja, lub użyć UriTemplate właściwości tych odpowiednich atrybutów, aby określić niestandardowe identyfikatory URI. Aby uzyskać więcej informacji, zobacz temat Web HTTP Programming Model (Model programowania HTTP sieci Web WCF).

Format danych JSON jest często używany w usługach AJAX. Aby utworzyć operację zwracającą kod JSON zamiast XML, ustaw ResponseFormat właściwość (lub ) ResponseFormatna Jsonwartość . W temacie Stand-Alone JSON Serialization (Serializacja JSON) pokazano, jak wbudowane typy platformy .NET i typy kontraktów danych są mapowane na format JSON.

Zwykle żądania i odpowiedzi JSON składają się tylko z jednego elementu. W przypadku poprzedniej GetCities operacji żądanie przypomina następującą instrukcję.

"na"  

Odpowiedź na to żądanie przypomina następującą instrukcję.

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

Jeśli operacja przyjmuje dodatkowy parametr, styl żądania musi być opakowany, aby opakowować oba parametry w jednym obiekcie JSON. Przykładowy komunikat JSON w tym stylu znajduje się w poniższym przykładzie.

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

Poniższa umowa akceptuje tę wiadomość.

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

Uzyskiwanie dostępu do usług AJAX

Punkty końcowe AJAX programu WCF zawsze akceptują żądania JSON i XML.

Żądania HTTP POST z typem zawartości "application/json" są traktowane jako JSON, a żądania z typem zawartości wskazujące xml (na przykład "text/xml") są traktowane jako XML.

Żądania HTTP GET zawierają wszystkie parametry żądania w samym adresie URL.

Użytkownik musi zdecydować, jak utworzyć żądanie HTTP do punktu końcowego. Ponadto użytkownik ma pełną kontrolę nad konstruowaniem kodu JSON tworzącego treść żądania. Aby zapoznać się z przykładem tworzenia żądania na podstawie języka JavaScript, zobacz usługę AJAX z kodami JSON i XML.