Ohjelmointi

Kaksi senttiäni sopimuksista WCF: ssä

WCF (Windows Communication Foundation) on turvallinen, luotettava ja skaalautuva viestintäalusta .Net-palvelujen kehittämiseen. Työskennellessäsi WCF: n kanssa sinun on ensin luotava palvelusopimus ja määriteltävä sitten huoltotoimet tai käyttösopimukset. Sinulla on WCF: ssä monia erityyppisiä sopimuksia - palvelusopimukset, datasopimukset, vikailmoitukset, sanomasopimukset ja operointisopimukset.

WCF-palvelut paljastavat sopimukset helpottaakseen viestintää palvelun kuluttajien kanssa. Sopimus on standardi, jota käytetään WCF: ssä määrittelemään, mitä palvelua on tarkoitus tehdä. WCF: n sopimukset voidaan luokitella kahteen erilliseen luokkaan:

  • Käyttäytymissopimukset: WCF: ssä meillä voi olla kolme käyttäytymissopimusta, nimittäin ServiceContract, OperationContract ja FaultContract.
  • Rakennesopimukset: Näitä ovat DataContract ja MessageContract.

ServiceContracts ja OperationContracts

ServiceContract-palvelua käytetään merkitsemään palvelutoimintoja, jotka ovat palvelun kuluttajan käytettävissä tietyssä palvelun päätepisteessä. Pohjimmiltaan ServiceContractia käytetään määrittämään toiminnot, joita palveluasiakas voi käyttää. ServiceContract määritetään ServiceContract-attribuutin avulla - yleensä liitännälle.

ServiceContract voi määrittää viestinvaihtomallin palveluntarjoajan ja palvelun kuluttajan kesken, ja sillä voi olla yksi tai useampi palvelutoiminto; näitä kutsutaan toimintasopimuksiksi. Toimintasopimusta käytetään määrittelemään palvelumenetelmän allekirjoitus ja myös tapahtumavirta, palvelun toiminnan suunta ja myös mahdollisesti liittyvät vikasopimukset.

Seuraavassa annettu koodiluettelo kuvaa, kuinka tyypillinen palvelusopimus määritellään.

[Palvelusopimus]

käyttöliittymä ITestService

{

[OperationContract]

merkkijono GetMessage ();

}

julkinen luokka TestService: ITestService

{

julkinen merkkijono GetMessage ()

      {

palauta "Hei maailma!";

      }

}

Yllä olevassa koodiluettelossa palvelusopimuksen ainoa operointisopimus on GetMessage. Huomaa, kuinka määritteet on määritetty. Lisäksi, jos palvelusopimuksessasi on menetelmä, jolla ei ole määritetty toimintasopimusmääritettä, palvelu ei voi paljastaa menetelmää, toisin sanoen palvelun kuluttaja ei voi kuluttaa menetelmää.

DataContracts, MessageContracts ja FaultContracts

DataContractia käytetään kuvaamaan tietoja, jotka on vaihdettava langan kautta. Sitä käytetään määrittämään, kuinka tietoja voidaan vaihtaa palveluntarjoajan ja palvelun kuluttajan välillä. Voit käyttää [DataContract] -attribuuttia koristellaksesi tyyppiäsi, jotta tiedot voidaan sarjata ennen niiden siirtämistä langan yli. Määritellessäsi tietosopimuksia sinun on yleensä käytettävä tietojenkäsittelyjäseniä määrittelemään tietosopimuksen ominaisuudet.

Seuraava koodinpätkä osoittaa, kuinka voit sisustaa luokan [DataContract] -attribuutilla.

[DataContract]

julkisen luokan työntekijä

{

[DataMember]

julkisen merkkijonon tunnus;

[DataMember]

julkinen merkkijono Etunimi;

[DataMember]

julkinen merkkijono Sukunimi;

}

Viestisopimus on sopimus, jota voidaan käyttää koristamaan viestin teksti WCF: ssä. Useimmissa tapauksissa sinun ei tarvitse käyttää viestisopimuksia - datasopimusten käyttö riittää. Jos tarvitset hienojakoista hallintaa SOAP-viesteillesi, voit hyödyntää viestisopimuksia. Voit käyttää SOAP-otsikoita viestisopimusten avulla.

Voit määrittää viestisopimusten avulla vaaditun SOAP-viestin muodon. Vaikka MessageHeaderAttribute voidaan soveltaa jäseniin, jotka haluat sisällyttää SOAP-otsikoihin, MessageBodyMemberAttribute-ominaisuutta voidaan käyttää määrittämään jäsenet, joiden tulisi olla osa SOAP-sanoman runkoa.

Voit määrittää viestisopimuksen soveltamalla MessageContractAttribute-kohtaa alla esitetyllä tavalla.

[MessageContract]

julkisen luokan tapahtuma

{

[MessageHeader] public DateTime päivämäärä;

[MessageBodyMember] julkinen keskimääräinen summa;

}

WCF: n virhesopimusta käytetään määrittelemään ja levittämään virheitä, joita voi ilmetä huoltotoimenpiteen suorittamisen yhteydessä. Pohjimmiltaan voit käyttää vikasopimuksia välittääksesi virheilmoitukset palvelun kuluttajalle, kun palvelussa tapahtuu virhe. Huomaa, että voit sisustaa käyttösopimuksesi vikasopimuksella - huoltosopimussopimukseen voi liittyä yksi tai useampi vikasopimus. Tässä on esimerkki, joka osoittaa, kuinka vikasopimuksia voidaan käyttää. Huomaa, että kaksi vikasopimusta nimeltä FaultContractOne ja FaultContractTwo on sovellettu toimintasopimukseen alla olevassa koodiesimerkissä.

[Palvelusopimus]

käyttöliittymän sopimus

{

[FaultContract (typeof (FaultContractOne)]]

[FaultContract (typeof (FaultContractTwo))]]

[OperationContract]

merkkijono GetMessage ();

 }

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