Programiranje

Moja dva centa za pogodbe v WCF

WCF (Windows Communication Foundation) je varna, zanesljiva in razširljiva platforma za sporočanje za razvoj storitev v .Netu. Pri delu z WCF morate najprej ustvariti pogodbo o storitvi in ​​nato v njej definirati storitvene operacije ali operativne pogodbe. V WCF imate veliko različnih vrst pogodb - pogodbe o storitvah, pogodbe o podatkih, pogodbe o napakah, pogodbe o sporočilih in pogodbe o delovanju.

Storitve WCF izpostavljajo pogodbe za lažjo komunikacijo s potrošniki storitev. Pogodba je standard, ki se v WCF uporablja za določanje, kaj naj storitev opravlja. Naročila v WCF lahko razdelimo v dve ločeni kategoriji:

  • Vedenjske pogodbe: V WCF imamo lahko tri vedenjske pogodbe, in sicer ServiceContract, OperationContract in FaultContract.
  • Strukturne pogodbe: Sem spadajo DataContract in MessageContract.

Pogodbe o storitvah in pogodbe o obratovanju

ServiceContract se uporablja za označevanje operacij storitve, ki so na voljo potrošniku storitve na določeni končni točki storitve. V bistvu se ServiceContract uporablja za določanje operacij, ki so na voljo odjemalcu storitve. ServiceContract je definiran z uporabo atributa ServiceContract - običajno se uporablja za vmesnik.

ServiceContract lahko določi vzorec izmenjave sporočil med ponudnikom storitev in potrošnikom storitve in ima lahko eno ali več storitev; ti so znani kot operativne pogodbe. Pogodba o operaciji se uporablja za definiranje podpisa storitvene metode in tudi pretoka transakcij, smeri servisne operacije in tudi pogodb (-e) napake, ki so lahko povezane.

Naslednji seznam kod prikazuje, kako je opredeljena tipična pogodba o storitvah.

[ServiceContract]

vmesnik ITestService

{

[OperationContract]

niz GetMessage ();

}

javni razred TestService: ITestService

{

javni niz GetMessage ()

      {

vrnitev "Pozdravljen svet!";

      }

}

V zgornjem seznamu kod je edina pogodba o delu v pogodbi o storitvah GetMessage. Upoštevajte, kako so bili določeni atributi. Če imate v pogodbi o storitvi metodo, ki nima nastavljenega atributa pogodbe o izvajanju, storitev ne more izpostaviti metode, tj. Potrošnik storitve ne more porabiti metode.

DataContracts, MessageContracts in FaultContracts

DataContract se uporablja za opis podatkov, ki jih je treba izmenjati prek žice. Uporablja se za določanje načina izmenjave podatkov med ponudnikom storitev in potrošnikom storitve. Atribut [DataContract] lahko uporabite za okrasitev vašega tipa, tako da je mogoče podatke serializirati, preden jih prenesete po žici. Pri definiranju podatkovnih pogodb bi morali običajno uporabiti podatkovne člane za določanje lastnosti podatkovne pogodbe.

Naslednji delček kode prikazuje, kako lahko okrasite razred z atributom [DataContract].

[DataContract]

javni razred Zaposlen

{

[DataMember]

ID javnega niza;

[DataMember]

javni niz FirstName;

[DataMember]

javni niz LastName;

}

Sporočilo o sporočilu je tisto, s katerim lahko okrasimo telo sporočila v WCF. V večini primerov vam ne bi bilo treba uporabljati pogodb za sporočila - zadostovala bi uporaba podatkovnih pogodb. Če potrebujete natančen nadzor nad sporočili SOAP, lahko izkoristite pogodbe za sporočila. Za dostop do glav SOAP lahko uporabite pogodbe za sporočila.

S pogodbami za sporočila lahko določite obliko sporočila SOAP, ki ga je treba zahtevati. MessageHeaderAttribute je mogoče uporabiti za člane, ki jih želite vključiti v glave SOAP, lahko MessageBodyMemberAttribute uporabite za določanje članov, ki naj bodo del telesa sporočila SOAP.

Pogodbo o sporočilu lahko določite tako, da uporabite MessageContractAttribute, kot je prikazano spodaj.

[MessageContract]

javni razred Transakcija

{

[MessageHeader] javni datum DateTime;

[MessageBodyMember] javni int znesek;

}

Pogodba o napaki v WCF se uporablja za definiranje in širjenje napak, ki se lahko pojavijo, ko se izvede servisna operacija. V bistvu lahko izkoristite pogodbe o napakah, da sporočila o napakah posredujete potrošniku storitve, ko pride do napake v vaši storitvi. Upoštevajte, da lahko svoje operativne pogodbe okrasite s pogodbo o napaki - pogodba o servisni operaciji ima lahko eno ali več pogodb o napakah. Tu je primer, ki prikazuje, kako se lahko uporabljajo pogodbe o napakah. Upoštevajte, da sta bili pogodbi o operativni pogodbi v spodnjem primeru kode uporabljeni dve pogodbi o napakah z imenom FaultContractOne in FaultContractTwo.

[ServiceContract]

vmesnik pogodba

{

[FaultContract (typeof (FaultContractOne))]

[FaultContract (vrsta (FaultContractTwo))]

[OperationContract]

niz GetMessage ();

 }

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