Bagikan melalui


Membuat Layanan WCF AJAX tanpa ASP.NET

Layanan AJAX Windows Communication Foundation (WCF) dapat diakses dari halaman Web dengan dukungan JavaScript apa pun, tanpa memerlukan ASP.NET AJAX. Topik ini menjelaskan cara membuat layanan WCF seperti itu.

Untuk petunjuk tentang menggunakan WCF dengan ASP.NET AJAX, lihat Membuat Layanan WCF untuk ASP.NET AJAX.

Ada tiga bagian untuk membuat layanan WCF AJAX:

  • Membuat titik akhir AJAX yang dapat diakses dari browser.

  • Membuat kontrak layanan yang kompatibel dengan AJAX.

  • Mengakses layanan WCF AJAX.

Membuat Titik Akhir AJAX

Cara paling mendasar untuk mengaktifkan dukungan AJAX dalam layanan WCF adalah menggunakan WebServiceHostFactory dalam file .svc yang terkait dengan layanan, seperti dalam contoh berikut.

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

Atau, Anda juga dapat menggunakan konfigurasi untuk menambahkan titik akhir AJAX. Gunakan WebHttpBinding pada titik akhir layanan dan konfigurasikan titik akhir tersebut dengan WebHttpBehavior seperti ditunjukkan dalam cuplikan kode berikut.

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

Untuk contoh yang berfungsi, lihat Layanan AJAX dengan JSON dan XML.

Membuat Kontrak Layanan yang Kompatibel Dengan AJAX.

Secara default, kontrak layanan yang diekspos melalui titik akhir AJAX mengembalikan data dalam format XML. Selain itu, secara default operasi layanan dapat diakses melalui permintaan HTTP POST ke URL yang menyertakan alamat titik akhir diikuti dengan nama operasi, seperti yang ditunjukkan dalam contoh berikut.

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

Operasi ini dapat diakses menggunakan HTTP POST ke http://serviceaddress/endpointaddress/GetCities dan mengembalikan pesan XML.

Anda dapat menggunakan Model Pemrograman Web lengkap untuk menyesuaikan aspek-aspek dasar ini. Misalnya, Anda dapat menggunakan atribut WebGetAttribute atau WebInvokeAttribute untuk mengontrol kata kerja HTTP tempat operasi merespons atau menggunakan properti UriTemplate dari atribut masing-masing ini untuk menentukan URI kustom. Untuk informasi selengkapnya, lihat topik Model Pemrograman HTTP Web WCF .

Format data JSON sering digunakan dalam layanan AJAX. Untuk membuat operasi yang mengembalikan JSON alih-alih XML, atur properti ResponseFormat (atau ResponseFormat) ke Json. Topik Serialisasi JSON Mandiri menunjukkan bagaimana jenis .NET bawaan dan jenis kontrak data dipetakan ke JSON.

Biasanya, permintaan dan respons JSON hanya terdiri dari satu item. Untuk operasi GetCities sebelumnya, permintaan menyerupan pernyataan berikut.

"na"  

Tanggapan atas permintaan tersebut menyerupai pernyataan berikut.

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

Jika operasi mengambil parameter tambahan, gaya permintaan harus dibungkus untuk membungkus kedua parameter dalam satu objek JSON. Contoh pesan JSON gaya ini ada dalam contoh berikut.

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

Kontrak berikut menerima pesan ini.

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

Mengakses Layanan AJAX

Titik akhir WCF AJAX selalu menerima permintaan JSON dan XML.

Permintaan HTTP POST dengan tipe konten "application/json" diperlakukan sebagai JSON, dan permintaan dengan jenis konten yang menunjukkan XML (misalnya, "teks/xml") diperlakukan sebagai XML.

Permintaan HTTP GET berisi semua parameter permintaan di URL itu sendiri.

Pengguna dapat memutuskan cara membuat permintaan HTTP ke titik akhir. Selain itu, pengguna memiliki kontrol penuh atas membangun JSON yang membentuk isi permintaan. Misalnya pembuatan permintaan dari JavaScript, lihat Layanan AJAX dengan JSON dan XML.