Cara membuat perkhidmatan RESTful di WCF

WCF (Windows Communication Foundation) adalah platform pesanan selamat, boleh dipercayai, dan berskala yang dapat digunakan untuk membina perkhidmatan Web di .Net. Ini menyediakan model pengaturcaraan terpadu untuk mengembangkan aplikasi berorientasikan perkhidmatan.

Anda boleh menggunakan WCF untuk membina perkhidmatan RESTful di .NET. REST (Representational State Transfer) adalah paradigma seni bina yang sesuai dengan prinsip seni bina REST. Senibina REST didasarkan pada konsep sumber: Ia menggunakan sumber untuk mewakili keadaan dan fungsi aplikasi. Sumber ini seterusnya dikenal pasti menggunakan URI melalui protokol HTTP.

Membuat perkhidmatan WCF

Di bahagian ini kita akan meneroka bagaimana kita dapat membina perkhidmatan TERBAIK di WCF. Pertama, mari buat perkhidmatan WCF baru di Visual Studio. Untuk melakukan ini, ikuti langkah-langkah yang digariskan di bawah. Perhatikan bahawa untuk membina aplikasi yang digambarkan dalam artikel ini, saya telah menggunakan Visual Studio 2015 walaupun anda juga dapat menggunakan Visual Studio 2012 atau 2013.

  1. Buka Visual Studio 2015
  2. Dalam menu Fail di Visual Studio IDE, klik Mula -> Fail -> Baru -> Projek
  3. Seterusnya, pilih WCF dari senarai templat projek yang dipaparkan
  4. Pilih "Aplikasi Perkhidmatan WCF" di panel sebelah kanan
  5. Tentukan nama untuk projek perkhidmatan WCF anda dan klik OK untuk menyimpannya

Ini akan membuat projek Aplikasi Perkhidmatan WCF baru dengan nama yang anda nyatakan. Projek ini juga akan mengandungi perkhidmatan lalai untuk tujuan ilustrasi sahaja.

Melaksanakan Perkhidmatan WCF RESTful

Semasa bekerja dengan WCF, pertama anda perlu membuat kontrak perkhidmatan dan kemudian menentukan operasi operasi atau kontrak operasi di dalamnya. Biasanya, perkhidmatan WCF terdiri daripada yang berikut:

  1. Kelas perkhidmatan
  2. Kontrak khidmat
  3. Satu atau lebih kontrak operasi
  4. Satu atau lebih titik akhir
  5. Persekitaran hosting

ServiceContract digunakan untuk menentukan operasi yang tersedia untuk digunakan oleh pelanggan perkhidmatan. Coretan kod berikut menunjukkan bagaimana kontrak perkhidmatan - kami akan mengubahnya kemudian untuk menjadikannya RESTful.

 [ServiceContract]

    public interface ICustomerService

    {

        [OperationContract]

        List GetCustomerList();

    }

Kontrak Data digunakan untuk menggambarkan data yang perlu ditukar antara penyedia perkhidmatan dan pengguna perkhidmatan. 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 sebuah metode sebagai metode layanan dan juga aliran transaksi, arah operasi layanan dan juga kontrak kesalahan yang mungkin terkait. Coretan kod berikut menggambarkan bagaimana anda dapat menyatakan operasi perkhidmatan menggunakan atribut OperationContract dan penggunaan atribut WebInvoke untuk menentukan operasi HTTP, Uri, format mesej Web, dll.

[OperationContract]

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

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

List GetCustomerList();

Coretan kod berikut menggambarkan bagaimana perkhidmatan pelanggan dapat dibuat RESTful dengan menerapkan atribut WebInvoke pada kaedah perkhidmatannya.

public interface ICustomerService

    {

        [OperationContract]

        [WebInvoke(Method = "GET",

            ResponseFormat = WebMessageFormat.Json,

            BodyStyle = WebMessageBodyStyle.Wrapped,

            UriTemplate = "GetCustomers")]

        List GetCustomerList();

    }

Kelas CustomerService memperluas kontrak perkhidmatan ICustomerService dan menyediakan pelaksanaan operasi perkhidmatan bernama GetCustomerList. Beginilah rupa kelas Perkhidmatan Pelanggan.

[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 bahawa kaedah PopulateCustomerData bukan kaedah perkhidmatan; ini adalah kaedah peribadi yang mengembalikan senarai rekod pelanggan dan dipanggil dari kaedah perkhidmatan GetCustomerList.

Perkara seterusnya yang harus anda lakukan ialah mengkonfigurasi perkhidmatan WCF. Untuk melakukan ini, anda perlu menentukan butiran pengikat dan titik akhir dan juga tingkah laku perkhidmatan. Coretan kod berikut menunjukkan bagaimana rupa konfigurasi perkhidmatan untuk perkhidmatan ini.

   

     

       

       

     

   

   

     

       

         

         

       

     

     

       

         

       

     

   

   

 

Dan itu sahaja yang harus anda lakukan. Anda kini boleh membuka penyemak imbas Web dan menguji perkhidmatan WCF RESTful anda.