Programmering

Sådan oprettes en RESTful service i WCF

WCF (Windows Communication Foundation) er en sikker, pålidelig og skalerbar messingsplatform, der kan bruges til at opbygge webservices i .Net. Det giver en samlet programmeringsmodel til udvikling af serviceorienterede applikationer.

Du kan bruge WCF til at opbygge RESTful-tjenester i .NET. REST (Representational State Transfer) er et arkitekturparadigme, der er i overensstemmelse med REST-arkitekturprincipperne. REST-arkitekturen er baseret på begrebet ressourcer: Den bruger ressourcer til at repræsentere en applikations tilstand og funktionalitet. Disse ressourcer identificeres igen ved hjælp af URI'er over HTTP-protokollen.

Oprettelse af en WCF-tjeneste

I dette afsnit vil vi undersøge, hvordan vi kan opbygge en RESTful service i WCF. Lad os først oprette en ny WCF-tjeneste i Visual Studio. For at gøre dette skal du følge nedenstående trin. Bemærk, at jeg har brugt Visual Studio 2015 til at opbygge det program, der er illustreret i denne artikel, selvom du også kan bruge Visual Studio 2012 eller 2013.

  1. Åbn Visual Studio 2015
  2. I menuen File i Visual Studio IDE skal du klikke på Start -> File -> New -> Project
  3. Vælg derefter WCF på listen over projektskabeloner, der vises
  4. Vælg "WCF Service Application" i højre rude
  5. Angiv et navn til dit WCF-serviceprojekt, og klik på OK for at gemme det

Dette ville skabe et nyt WCF-serviceapplikationsprojekt i det navn, du angav. Projektet vil også kun indeholde en standardtjeneste til illustration.

Implementering af RESTful WCF Service

Når du arbejder med WCF, skal du først oprette en servicekontrakt og derefter definere serviceoperationer eller operationskontrakter i den. En WCF-tjeneste består typisk af følgende:

  1. Serviceklasse
  2. Service kontrakt
  3. En eller flere driftskontrakter
  4. Et eller flere slutpunkter
  5. Værtsmiljø

En servicekontrakt bruges til at specificere de operationer, der er tilgængelige for serviceklienten at forbruge. Følgende kodestykke viser, hvordan en servicekontrakt ser ud - vi vil ændre dette senere for at gøre det RESTful.

 [Service kontrakt]

offentlig grænseflade ICustomerService

    {

[OperationContract]

Liste GetCustomerList ();

    }

En DataContract bruges til at beskrive de data, der skal udveksles mellem tjenesteudbyderen og serviceforbrugeren. Overvej følgende DataContract kaldet kunde.

[DataContract (Navneområde = "")]

offentlig klasse kunde

    {

[DataMember]

offentlig Int32 kunde-id {get; sæt; }

[DataMember]

offentlig streng Fornavn {get; sæt; }

[DataMember]

public string LastName {get; sæt; }

[DataMember]

offentlig strengadresse {get; sæt; }

    }

En driftskontrakt bruges til at eksponere en metode som en servicemetode og også transaktionsflow, retning af servicedriften og også den eller de fejlkontrakter, der kan være tilknyttet. Følgende kodestykke illustrerer, hvordan du kan erklære en servicefunktion ved hjælp af attributten OperationContract og brugen af ​​attributten WebInvoke til at specificere HTTP-operation, Uri, webmeddelelsesformat osv.

[OperationContract]

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

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

Liste GetCustomerList ();

Følgende kodestykke illustrerer, hvordan kundeservicen kan gøres RESTful ved at anvende WebInvoke-attributten på dens servicemetode.

offentlig grænseflade ICustomerService

    {

[OperationContract]

[WebInvoke (Metode = "FÅ",

ResponseFormat = WebMessageFormat.Json,

BodyStyle = WebMessageBodyStyle.Wrapped,

UriTemplate = "GetCustomers")]

Liste GetCustomerList ();

    }

Klassen CustomerService udvider ICustomerService-servicekontrakten og leverer implementeringen af ​​servicefunktionen ved navn GetCustomerList. Sådan ser kundeserviceklassen ud.

[AspNetCompatibilityRequirements (RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]

offentlig klasse CustomerService: ICustomerService

    {     

offentlig liste GetCustomerList ()

        {

returnere PopulateCustomerData ();

        }

privat liste PopulateCustomerData ()

        {

Liste lstCustomer = ny liste ();

Kundekunde1 = ny kunde ();

kunde1.Kunde-ID = 1;

customer1.FirstName = "John";

customer1.LastName = "Meaney";

customer1.Address = "Chicago";

lstCustomer.Add (kunde1);

Kundekunde2 = ny kunde ();

kunde2.Kunde-ID = 1;

customer2.FirstName = "Peter";

customer2.LastName = "Shaw";

customer2.Address = "New York";

lstCustomer.Add (kunde2);

returnere lstKunde;

        }

    }

Bemærk, at PopulateCustomerData-metoden ikke er en servicemetode; det er en privat metode, der returnerer en liste over kundeoptegnelser og kaldes fra GetCustomerList-servicemetoden.

Den næste ting du skal gøre er at konfigurere WCF-tjenesten. For at gøre dette skal du angive bindings- og slutpunktsdetaljerne og også serviceadfærden. Følgende kodestykke viser, hvordan servicekonfigurationen skal se ud for denne service.

   

     

       

       

     

   

   

     

       

         

         

       

     

     

       

         

       

     

   

   

 

Og det er alt hvad du skal gøre. Du kan nu åbne en webbrowser og teste din WCF RESTful-tjeneste.