Kako stvoriti RESTful uslugu u WCF-u

WCF (Windows Communication Foundation) je sigurna, pouzdana i skalabilna platforma za razmjenu poruka koja se može koristiti za izgradnju web usluga u .Netu. Pruža jedinstveni programski model za razvoj uslužno orijentiranih aplikacija.

WCF možete koristiti za izgradnju RESTful usluga u .NET-u. REST (Reprezentativni državni prijenos) je paradigma arhitekture koja je u skladu s principima arhitekture REST. Arhitektura REST temelji se na konceptu resursa: koristi resurse za predstavljanje stanja i funkcionalnosti aplikacije. Ti se resursi zauzvrat identificiraju pomoću URI-a preko HTTP protokola.

Izrada WCF usluge

U ovom ćemo dijelu istražiti kako možemo izgraditi RESTful uslugu u WCF-u. Prvo, kreirajmo novu WCF uslugu u Visual Studiju. Da biste to učinili, slijedite korake opisane u nastavku. Imajte na umu da sam za izradu aplikacije ilustrirane u ovom članku koristio Visual Studio 2015 iako možete koristiti i Visual Studio 2012 ili 2013.

  1. Otvorite Visual Studio 2015
  2. U izborniku Datoteka u Visual Studio IDE-u kliknite Start -> Datoteka -> Novo -> Projekt
  3. Zatim odaberite WCF s popisa prikazanih predložaka projekta
  4. Odaberite "WCF Application Service" na desnom bočnom oknu
  5. Navedite ime za svoj projekt usluge WCF i kliknite U redu da biste ga spremili

To bi stvorilo novi projekt aplikacije WCF usluge u imenu koje ste naveli. Projekt bi također sadržavao zadanu uslugu samo u svrhu ilustracije.

Implementacija RESTful WCF usluge

Kada radite s WCF-om, prvo morate stvoriti ugovor o usluzi, a zatim u njemu definirati servisne operacije ili operativne ugovore. Obično se WCF usluga sastoji od sljedećeg:

  1. Servisna klasa
  2. Ugovor o usluzi
  3. Jedan ili više operativnih ugovora
  4. Jedna ili više krajnjih točaka
  5. Hosting okruženje

ServiceContract koristi se za određivanje operacija koje su na raspolaganju klijentu usluge. Sljedeći isječak koda pokazuje kako izgleda ugovor o usluzi - kasnije ćemo ga izmijeniti kako bi postao RESTful.

 [ServiceContract]

    public interface ICustomerService

    {

        [OperationContract]

        List GetCustomerList();

    }

DataContract se koristi za opisivanje podataka koje treba razmijeniti između davatelja usluga i potrošača usluge. Razmotrite sljedeći DataContract pod nazivom Kupac.

[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; }

    }

Ugovor o operaciji koristi se za izlaganje metode kao metode usluge, a također i tijek transakcija, smjer rada usluge, a također i ugovori o greškama koji mogu biti povezani. Sljedeći isječak koda ilustrira kako možete prijaviti operaciju usluge pomoću atributa OperationContract i atributa WebInvoke za specificiranje HTTP operacije, Uri, format web poruke itd.

[OperationContract]

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

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

List GetCustomerList();

Sljedeći isječak koda ilustrira kako se korisnička usluga može učiniti RESTful primjenom atributa WebInvoke na njezinu metodu usluge.

public interface ICustomerService

    {

        [OperationContract]

        [WebInvoke(Method = "GET",

            ResponseFormat = WebMessageFormat.Json,

            BodyStyle = WebMessageBodyStyle.Wrapped,

            UriTemplate = "GetCustomers")]

        List GetCustomerList();

    }

Klasa CustomerService proširuje ugovor o usluzi ICustomerService i pruža implementaciju servisne operacije nazvane GetCustomerList. Evo kako bi izgledala klasa 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;

        }

    }

Napominjemo da metoda PopulateCustomerData nije metoda usluge; to je privatna metoda koja vraća popis zapisa kupaca i poziva se iz metode usluge GetCustomerList.

Sljedeće što biste trebali učiniti je konfigurirati WCF uslugu. Da biste to učinili, trebali biste navesti detalje vezanja i krajnje točke, kao i ponašanje usluge. Sljedeći isječak koda pokazuje kako bi trebala izgledati konfiguracija usluge za ovu uslugu.

   

     

       

       

     

   

   

     

       

         

         

       

     

     

       

         

       

     

   

   

 

I to je sve što trebaš učiniti. Sada možete otvoriti web preglednik i testirati svoju uslugu WCF RESTful.