Как да създадете RESTful услуга в WCF

WCF (Windows Communication Foundation) е сигурна, надеждна и мащабируема платформа за съобщения, която може да се използва за изграждане на уеб услуги в .Net. Той осигурява унифициран модел на програмиране за разработване на приложения, ориентирани към услуги.

Можете да използвате WCF за изграждане на RESTful услуги в .NET. REST (Представителен държавен трансфер) е архитектурна парадигма, която съответства на принципите на архитектурата REST. Архитектурата REST се основава на концепцията за ресурси: Използва ресурси за представяне на състоянието и функционалността на приложението. Тези ресурси от своя страна се идентифицират с помощта на URI по протокола HTTP.

Създаване на WCF услуга

В този раздел ще разгледаме как можем да изградим RESTful услуга в WCF. Първо, нека създадем нова WCF услуга в Visual Studio. За да направите това, следвайте стъпките, описани по-долу. Имайте предвид, че за създаване на приложението, илюстрирано в тази статия, използвах Visual Studio 2015, въпреки че можете да използвате и Visual Studio 2012 или 2013.

  1. Отворете Visual Studio 2015
  2. В менюто File в Visual Studio IDE кликнете върху Start -> File -> New -> Project
  3. След това изберете WCF от списъка с показаните шаблони за проекти
  4. Изберете "WCF Service Application" в десния страничен прозорец
  5. Посочете име за вашия проект за услуга на WCF и щракнете върху OK, за да го запазите

Това ще създаде нов проект за приложение на WCF Service в името, което сте посочили. Проектът също така ще съдържа услуга по подразбиране само за илюстративни цели.

Внедряване на RESTful услугата WCF

Когато работите с WCF, първо трябва да създадете договор за услуга и след това да дефинирате операциите за услуги или договори за операции в него. Обикновено услугата WCF се състои от следното:

  1. Клас на обслужване
  2. Договор за услуги
  3. Един или повече оперативни договори
  4. Една или повече крайни точки
  5. Хостинг среда

ServiceContract се използва за указване на операциите, които клиентът на услугата може да използва. Следният кодов фрагмент показва как изглежда договорът за услуга - ще модифицираме това по-късно, за да го направим RESTful.

 [ServiceContract]

    public interface ICustomerService

    {

        [OperationContract]

        List GetCustomerList();

    }

DataContract се използва за описание на данните, които трябва да се обменят между доставчика на услуги и потребителя на услугата. Помислете за следния DataContract, наречен Клиент.

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

    }

Договорът за операция се използва за излагане на метод като метод на услуга, а също и на поток от транзакции, посока на операцията на услугата, както и договор (и) за неизправност, които могат да бъдат свързани. Следният кодов фрагмент илюстрира как можете да декларирате операция на услуга, използвайки атрибута OperationContract и използването на атрибута WebInvoke, за да посочите операцията HTTP, Uri, формата на уеб съобщението и т.н.

[OperationContract]

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

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

List GetCustomerList();

Следният кодов фрагмент илюстрира как услугата за клиенти може да бъде направена RESTful чрез прилагане на атрибута WebInvoke върху метода на услугата.

public interface ICustomerService

    {

        [OperationContract]

        [WebInvoke(Method = "GET",

            ResponseFormat = WebMessageFormat.Json,

            BodyStyle = WebMessageBodyStyle.Wrapped,

            UriTemplate = "GetCustomers")]

        List GetCustomerList();

    }

Класът CustomerService разширява договора за услуга ICustomerService и осигурява изпълнението на операцията на услугата, наречена GetCustomerList. Ето как би изглеждал класът 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;

        }

    }

Обърнете внимание, че методът PopulateCustomerData не е метод на услуга; това е частен метод, който връща списък с клиентски записи и се извиква от метода на услугата GetCustomerList.

Следващото нещо, което трябва да направите, е да конфигурирате услугата WCF. За да направите това, ще трябва да посочите подробностите за свързването и крайната точка, както и поведението на услугата. Следният кодов фрагмент показва как трябва да изглежда конфигурацията на услугата за тази услуга.

   

     

       

       

     

   

   

     

       

         

         

       

     

     

       

         

       

     

   

   

 

И това е всичко, което трябва да направите. Вече можете да отворите уеб браузър и да тествате вашата услуга WCF RESTful.