Cara membuat layanan RESTful di WCF

WCF (Windows Communication Foundation) adalah platform perpesanan yang aman, andal, dan dapat diskalakan yang dapat digunakan untuk membangun layanan Web di .Net. Ini menyediakan model pemrograman terpadu untuk mengembangkan aplikasi berorientasi layanan.

Anda dapat menggunakan WCF untuk membangun layanan RESTful di .NET. REST (Representational State Transfer) adalah paradigma arsitektur yang sesuai dengan prinsip arsitektur REST. Arsitektur REST didasarkan pada konsep sumber daya: Ia menggunakan sumber daya untuk mewakili keadaan dan fungsionalitas aplikasi. Sumber daya ini selanjutnya diidentifikasi menggunakan URI melalui protokol HTTP.

Membuat layanan WCF

Di bagian ini kita akan mengeksplorasi bagaimana kita bisa membangun layanan RESTful di WCF. Pertama, mari buat layanan WCF baru di Visual Studio. Untuk melakukannya, ikuti langkah-langkah yang diuraikan di bawah ini. Perhatikan bahwa untuk membangun aplikasi yang diilustrasikan dalam artikel ini saya telah menggunakan Visual Studio 2015 meskipun Anda dapat menggunakan Visual Studio 2012 atau 2013 juga.

  1. Buka Visual Studio 2015
  2. Di menu File di Visual Studio IDE, klik Start -> File -> New -> Project
  3. Selanjutnya, pilih WCF dari daftar template proyek yang ditampilkan
  4. Pilih "Aplikasi Layanan WCF" di panel sisi kanan
  5. Tentukan nama untuk proyek layanan WCF Anda dan klik OK untuk menyimpannya

Ini akan membuat proyek Aplikasi Layanan WCF baru dengan nama yang Anda tentukan. Proyek juga akan berisi layanan default untuk tujuan ilustrasi saja.

Menerapkan Layanan WCF RESTful

Saat bekerja dengan WCF, Anda harus terlebih dahulu membuat kontrak layanan dan kemudian menentukan operasi layanan atau kontrak operasi di dalamnya. Biasanya, layanan WCF terdiri dari berikut ini:

  1. Kelas layanan
  2. Kontrak layanan
  3. Satu atau lebih kontrak operasi
  4. Satu atau lebih titik akhir
  5. Lingkungan hosting

ServiceContract digunakan untuk menentukan operasi yang tersedia untuk digunakan klien layanan. Potongan kode berikut menunjukkan bagaimana kontrak layanan terlihat - kita akan mengubahnya nanti untuk membuatnya tenang.

 [ServiceContract]

    public interface ICustomerService

    {

        [OperationContract]

        List GetCustomerList();

    }

DataContract digunakan untuk mendeskripsikan data yang perlu dipertukarkan antara penyedia layanan dan konsumen layanan. Pertimbangkan DataContract berikut yang disebut Pelanggan.

[DataContract(Namespace = "")]

public class Customer

    {

        [DataMember]

        public Int32 CustomerID { get; set; }

        [DataMember]

        public string FirstName { get; set; }

        [DataMember]

        public string LastName { get; set; }

        [DataMember]

        public String Address { get; set; }

    }

Kontrak operasi digunakan untuk mengekspos suatu metode sebagai metode layanan dan juga aliran transaksi, arah operasi layanan dan juga kontrak kesalahan yang mungkin terkait. Cuplikan kode berikut menggambarkan bagaimana Anda dapat mendeklarasikan operasi layanan menggunakan atribut OperationContract dan menggunakan atribut WebInvoke untuk menentukan operasi HTTP, Uri, format pesan Web, dll.

[OperationContract]

        [WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json,

        BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "GetCustomers")]

List GetCustomerList();

Cuplikan kode berikut menggambarkan bagaimana layanan pelanggan dapat dibuat RESTful dengan menerapkan atribut WebInvoke pada metode layanannya.

public interface ICustomerService

    {

        [OperationContract]

        [WebInvoke(Method = "GET",

            ResponseFormat = WebMessageFormat.Json,

            BodyStyle = WebMessageBodyStyle.Wrapped,

            UriTemplate = "GetCustomers")]

        List GetCustomerList();

    }

Kelas CustomerService memperluas kontrak layanan ICustomerService dan menyediakan implementasi operasi layanan bernama GetCustomerList. Berikut tampilan kelas CustomerService.

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]

    public class CustomerService : ICustomerService

    {     

        public List GetCustomerList()

        {

            return PopulateCustomerData();

        }

        private List PopulateCustomerData()

        {

            List lstCustomer = new List();

            Customer customer1 = new Customer();

            customer1.CustomerID = 1;

            customer1.FirstName = "John";

            customer1.LastName = "Meaney";

            customer1.Address = "Chicago";

            lstCustomer.Add(customer1);

            Customer customer2 = new Customer();

            customer2.CustomerID = 1;

            customer2.FirstName = "Peter";

            customer2.LastName = "Shaw";

            customer2.Address = "New York";

            lstCustomer.Add(customer2);

            return lstCustomer;

        }

    }

Perhatikan bahwa metode PopulateCustomerData bukanlah metode layanan; ini adalah metode pribadi yang mengembalikan daftar catatan pelanggan dan dipanggil dari metode layanan GetCustomerList.

Hal berikutnya yang harus Anda lakukan adalah mengkonfigurasi layanan WCF. Untuk melakukannya, Anda perlu menentukan detail binding dan endpoint, serta perilaku layanan. Cuplikan kode berikut menunjukkan bagaimana konfigurasi layanan akan terlihat untuk layanan ini.

   

     

       

       

     

   

   

     

       

         

         

       

     

     

       

         

       

     

   

   

 

Dan hanya itu yang harus Anda lakukan. Sekarang Anda dapat membuka browser Web dan menguji layanan WCF RESTful Anda.