Udostępnij za pośrednictwem


Tworzenie usług WCF AJAX bez 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 przy użyciu elementu WebHttpBehavior, 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 AJAX-Compatible

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 poprzez użycie HTTP POST do http://serviceaddress/endpointaddress/GetCities i zwraca komunikat XML.

Aby dostosować te podstawowe aspekty, możesz użyć pełnego modelu programowania sieci Web. Można na przykład użyć atrybutu WebGetAttribute lub WebInvokeAttribute, aby kontrolować czasownik HTTP, na który odpowiada operacja, lub użyć właściwości UriTemplate 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 właściwość ResponseFormat (lub właściwość ResponseFormat) na wartość Json. W temacie Stand-Alone serializacji JSON pokazano, jak wbudowane typy .NET i typy kontraktów danych są odwzorowywane na 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.