Programování

Jak vytvořit službu RESTful v WCF

WCF (Windows Communication Foundation) je bezpečná, spolehlivá a škálovatelná platforma pro zasílání zpráv, kterou lze použít k vytváření webových služeb v .Net. Poskytuje jednotný programovací model pro vývoj aplikací orientovaných na služby.

WCF můžete použít k sestavení služeb RESTful v .NET. REST (Representational State Transfer) je paradigma architektury, které je v souladu s principy architektury REST. Architektura REST je založena na konceptu prostředků: Používá prostředky k reprezentaci stavu a funkčnosti aplikace. Tyto zdroje jsou zase identifikovány pomocí URI přes protokol HTTP.

Vytváření služby WCF

V této části prozkoumáme, jak můžeme vytvořit službu RESTful v WCF. Nejprve vytvořme novou službu WCF v sadě Visual Studio. Postupujte podle pokynů uvedených níže. Všimněte si, že k sestavení aplikace ilustrované v tomto článku jsem použil Visual Studio 2015, i když můžete použít také Visual Studio 2012 nebo 2013.

  1. Otevřete Visual Studio 2015
  2. V nabídce Soubor v prostředí Visual Studio IDE klikněte na Start -> Soubor -> Nový -> Projekt
  3. Dále vyberte WCF ze seznamu zobrazených šablon projektu
  4. V pravém podokně vyberte možnost „WCF Service Application“
  5. Zadejte název svého projektu služby WCF a kliknutím na OK jej uložte

Tím by se vytvořil nový projekt aplikace služby WCF ve vámi zadaném názvu. Projekt by také obsahoval výchozí službu pouze pro ilustrační účely.

Implementace služby RESTful WCF

Při práci s WCF musíte nejprve vytvořit servisní smlouvu a poté v ní definovat provozní operace nebo provozní smlouvy. Služba WCF obvykle zahrnuje následující:

  1. Třída služby
  2. Smlouva o poskytování služeb
  3. Jedna nebo více provozních smluv
  4. Jeden nebo více koncových bodů
  5. Hostitelské prostředí

ServiceContract se používá k určení operací, které jsou klientovi služby k dispozici ke konzumaci. Následující fragment kódu ukazuje, jak vypadá servisní smlouva - později ji upravíme, aby byla RESTful.

 [ServiceContract]

veřejné rozhraní ICustomerService

    {

[OperationContract]

Seznam GetCustomerList ();

    }

DataContract se používá k popisu dat, která je třeba vyměnit mezi poskytovatelem služby a spotřebitelem služby. Zvažte následující DataContract s názvem Zákazník.

[DataContract (Namespace = "")]

veřejná třída Zákazník

    {

[DataMember]

public Int32 CustomerID {get; soubor; }

[DataMember]

public string FirstName {get; soubor; }

[DataMember]

veřejný řetězec Příjmení {get; soubor; }

[DataMember]

public String Address {get; soubor; }

    }

Smlouva o operaci se používá k vystavení metody jako metody služby a také toku transakcí, směru operace služby a také kontraktu (poruch), které mohou být přidruženy. Následující fragment kódu ukazuje, jak můžete deklarovat operaci služby pomocí atributu OperationContract a pomocí atributu WebInvoke k určení operace HTTP, Uri, formátu webové zprávy atd.

[OperationContract]

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

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

Seznam GetCustomerList ();

Následující fragment kódu ukazuje, jak lze zákaznickou službu provést RESTful použitím atributu WebInvoke na její metodu služby.

veřejné rozhraní ICustomerService

    {

[OperationContract]

[WebInvoke (Metoda = "ZÍSKAT",

ResponseFormat = WebMessageFormat.Json,

BodyStyle = WebMessageBodyStyle.Wrapped,

UriTemplate = "GetCustomers")]

Seznam GetCustomerList ();

    }

Třída CustomerService rozšiřuje kontrakt služby ICustomerService a poskytuje implementaci operace služby s názvem GetCustomerList. Takto by vypadala třída CustomerService.

[AspNetCompatibilityRequirements (RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]

veřejná třída CustomerService: ICustomerService

    {     

veřejný seznam GetCustomerList ()

        {

vrátit PopulateCustomerData ();

        }

soukromý seznam PopulateCustomerData ()

        {

List lstCustomer = new List ();

Zákazník zákazník1 = nový zákazník ();

customer1.CustomerID = 1;

customer1.FirstName = "John";

customer1.LastName = "Meaney";

customer1.Address = "Chicago";

lstCustomer.Add (customer1);

Zákazník zákazník2 = nový zákazník ();

customer2.CustomerID = 1;

customer2.FirstName = "Peter";

customer2.LastName = "Shaw";

customer2.Address = "New York";

lstCustomer.Add (customer2);

vrátit lstCustomer;

        }

    }

Všimněte si, že metoda PopulateCustomerData není metodou služby; je to soukromá metoda, která vrací seznam záznamů zákazníků a je volána z metody služby GetCustomerList.

Další věc, kterou byste měli udělat, je nakonfigurovat službu WCF. Chcete-li to provést, budete muset zadat podrobnosti vazby a koncového bodu a také chování služby. Následující fragment kódu ukazuje, jak by měla konfigurace služby vypadat pro tuto službu.

   

     

       

       

     

   

   

     

       

         

         

       

     

     

       

         

       

     

   

   

 

A to je vše, co musíte udělat. Nyní můžete otevřít webový prohlížeč a otestovat službu WCF RESTful.