Programmering

Hvordan lage en RESTful-tjeneste i WCF

WCF (Windows Communication Foundation) er en sikker, pålitelig og skalerbar meldingsplattform som kan brukes til å bygge webtjenester i .Net. Det gir en enhetlig programmeringsmodell for utvikling av serviceorienterte applikasjoner.

Du kan bruke WCF til å bygge RESTful-tjenester i .NET. REST (Representational State Transfer) er et arkitekturparadigme som samsvarer med REST-arkitekturprinsippene. REST-arkitekturen er basert på ressursbegrepet: Den bruker ressurser til å representere tilstanden og funksjonaliteten til en applikasjon. Disse ressursene blir i sin tur identifisert ved hjelp av URI-er over HTTP-protokollen.

Opprette en WCF-tjeneste

I denne delen vil vi undersøke hvordan vi kan bygge en RESTful-tjeneste i WCF. La oss først lage en ny WCF-tjeneste i Visual Studio. Følg trinnene nedenfor for å gjøre dette. Merk at for å bygge applikasjonen illustrert i denne artikkelen har jeg brukt Visual Studio 2015, selv om du også kan bruke Visual Studio 2012 eller 2013.

  1. Åpne Visual Studio 2015
  2. I Fil-menyen i Visual Studio IDE klikker du på Start -> Fil -> Ny -> Prosjekt
  3. Velg deretter WCF fra listen over prosjektmalene som vises
  4. Velg "WCF Service Application" i høyre rute
  5. Angi et navn for WCF-tjenesteprosjektet ditt, og klikk OK for å lagre det

Dette vil opprette et nytt WCF Service Application-prosjekt i navnet du spesifiserte. Prosjektet vil også inneholde en standardtjeneste kun for illustrasjonsformål.

Implementering av den RESTful WCF-tjenesten

Når du jobber med WCF, må du først opprette en tjenestekontrakt og deretter definere tjenestedriften eller operasjonskontraktene i den. Vanligvis består en WCF-tjeneste av følgende:

  1. Serviceklasse
  2. Servicekontrakt
  3. Én eller flere driftskontrakter
  4. Ett eller flere endepunkter
  5. Vertemiljø

En ServiceContract brukes til å spesifisere operasjonene som er tilgjengelige for tjenesteklienten å konsumere. Følgende kodebit viser hvordan en tjenestekontrakt ser ut - vi vil endre dette senere for å gjøre den RESTful.

 [Servicekontrakt]

offentlig grensesnitt ICustomerService

    {

[OperationContract]

Liste GetCustomerList ();

    }

En DataContract brukes til å beskrive dataene som må utveksles mellom tjenesteleverandøren og tjenesteforbrukeren. Vurder følgende DataContract kalt kunde.

[DataContract (Navneområde = "")]

offentlig klasse kunde

    {

[DataMember]

offentlig Int32 kunde-ID {get; sett; }

[DataMember]

offentlig streng Fornavn {get; sett; }

[DataMember]

offentlig streng Etternavn {get; sett; }

[DataMember]

offentlig strengadresse {get; sett; }

    }

En operasjonskontrakt brukes til å avsløre en metode som en servicemetode og også transaksjonsflyt, retning av servicedriften og også feilkontraktene som kan være assosiert. Følgende kodebit illustrerer hvordan du kan erklære en tjenestehandling ved hjelp av OperationContract-attributtet og bruken av WebInvoke-attributtet til å spesifisere HTTP-operasjonen, Uri, format for webmeldinger, etc.

[OperationContract]

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

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

Liste GetCustomerList ();

Følgende kodebit illustrerer hvordan kundetjenesten kan gjøres RESTful ved å bruke WebInvoke-attributtet på tjenestemetoden.

offentlig grensesnitt ICustomerService

    {

[OperationContract]

[WebInvoke (Method = "GET",

ResponseFormat = WebMessageFormat.Json,

BodyStyle = WebMessageBodyStyle.Wrapped,

UriTemplate = "GetCustomers")]

Liste GetCustomerList ();

    }

CustomerService-klassen utvider ICustomerService-servicekontrakten og gir implementeringen av serviceoperasjonen som heter GetCustomerList. Slik ser kundeserviceklassen ut.

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

retur lstKunde;

        }

    }

Merk at PopulateCustomerData-metoden ikke er en tjenestemetode; det er en privat metode som returnerer en liste over kundeposter og kalles fra GetCustomerList-tjenestemetoden.

Den neste tingen du bør gjøre er å konfigurere WCF-tjenesten. For å gjøre dette, må du spesifisere bindings- og sluttpunktdetaljene og også tjenesteatferd. Følgende kodebit viser hvordan tjenestekonfigurasjonen skal se ut for denne tjenesten.

   

     

       

       

     

   

   

     

       

         

         

       

     

     

       

         

       

     

   

   

 

Og det er alt du trenger å gjøre. Du kan nå åpne en nettleser og teste WCF RESTful-tjenesten.

$config[zx-auto] not found$config[zx-overlay] not found