Programovanie

Moje dva centy za zmluvy v WCF

WCF (Windows Communication Foundation) je bezpečná, spoľahlivá a škálovateľná platforma na zasielanie správ pre vývoj služieb v .Net. Pri práci s WCF musíte najskôr vytvoriť zmluvu o službe a potom v nej definovať operácie služby alebo zmluvy o prevádzke. Vo WCF máte veľa rôznych typov zmlúv - zmluvy o službách, zmluvy o údajoch, zmluvy o chybách, zmluvy o správach a zmluvy o prevádzke.

Služby WCF vystavujú zmluvy na uľahčenie komunikácie so spotrebiteľmi služieb. Zmluva je štandard, ktorý sa používa v WCF na určenie toho, čo má služba robiť. Zmluvy v WCF možno rozdeliť do dvoch samostatných kategórií:

  • Behaviorálne kontrakty: V WCF môžeme mať tri behaviorálne kontrakty, konkrétne ServiceContract, OperationContract a FaultContract.
  • Štrukturálne zmluvy: Patria sem DataContract a MessageContract.

Servisné zmluvy a prevádzkové zmluvy

ServiceContract sa používa na označenie operácií služby, ktoré sú k dispozícii pre spotrebiteľa služby v konkrétnom koncovom bode služby. V zásade sa ServiceContract používa na špecifikáciu operácií, ktoré sú klientovi služby k dispozícii na spotrebovanie. ServiceContract je definovaný pomocou atribútu ServiceContract - zvyčajne sa používa na rozhranie.

ServiceContract môže definovať vzor výmeny správ medzi poskytovateľom služby a zákazníkom služby a môže mať jednu alebo viac operácií služby; tieto sú známe ako prevádzkové zmluvy. Zmluva o prevádzke sa používa na definovanie podpisu metódy služby a tiež toku transakcií, smeru operácie služby a tiež zmluvy (-ov) o poruche, ktoré môžu byť spojené.

Ďalej uvedený zoznam kódov ilustruje, ako je definovaná typická zmluva o poskytovaní služieb.

[Servisná zmluva]

rozhranie ITestService

{

[OperationContract]

reťazec GetMessage ();

}

verejná trieda TestService: ITestService

{

verejný reťazec GetMessage ()

      {

návrat „Hello World!“;

      }

}

V zozname kódov zobrazenom vyššie je jedinou zmluvou o prevádzke v zmluve o poskytovaní služieb služba GetMessage. Všimnite si, ako boli zadané atribúty. Ak máte vo svojej zmluve o službe tiež metódu, ktorá nemá nastavený atribút prevádzkovej zmluvy, metódu nemôže služba odhaliť, t. J. Metódu nemôže spotrebovať spotrebiteľ služby.

DataContracts, MessageContracts a FaultContracts

DataContract sa používa na popis údajov, ktoré je potrebné vymieňať si po drôte. Používa sa na určenie spôsobu výmeny údajov medzi poskytovateľom služby a zákazníkom služby. Atribút [DataContract] môžete použiť na ozdobenie svojho typu, aby bolo možné dáta serializovať skôr, ako sa prenesú po drôte. Pri definovaní kontraktov údajov by ste zvyčajne museli na definovanie vlastností kontraktu údajov použiť dátové členy.

Nasledujúci úryvok kódu ukazuje, ako môžete ozdobiť triedu pomocou atribútu [DataContract].

[DataContract]

verejná trieda Zamestnanec

{

[DataMember]

verejné ID reťazca;

[DataMember]

verejný reťazec Meno;

[DataMember]

verejný reťazec Priezvisko;

}

Zmluva o správe je zmluva, ktorá sa dá použiť na ozdobenie tela správy v WCF. Vo väčšine prípadov by ste nemuseli používať kontrakty na správy - stačilo by použitie kontraktov na dáta. Ak potrebujete podrobnejšie riadenie svojich správ SOAP, môžete využiť výhody kontraktov na správy. Na prístup k hlavičkám SOAP môžete použiť zmluvy na správu.

Kontrakty správ môžete použiť na zadanie formátu správy SOAP, ktorý je potrebné vyžadovať. Zatiaľ čo MessageHeaderAttribute je možné použiť na členov, ktorých chcete zahrnúť do hlavičiek SOAP, MessageBodyMemberAttribute sa dá použiť na definovanie členov, ktorí by mali byť súčasťou tela správy SOAP.

Zmluvu na správu môžete definovať použitím MessageContractAttribute, ako je uvedené nižšie.

[MessageContract]

transakcia verejnej triedy

{

[MessageHeader] public DateTime dátum;

[MessageBodyMember] verejná čiastka;

}

Poruchová zmluva v WCF sa používa na definovanie a šírenie chýb, ktoré sa môžu vyskytnúť pri vykonaní operácie služby. V podstate môžete využiť zmluvy o chybe na odovzdanie chybových správ spotrebiteľovi služby, keď sa vo vašej službe vyskytne chyba. Upozorňujeme, že svoje prevádzkové zmluvy môžete vyzdobiť pomocou zmluvy o poruche - zmluva o prevádzke služby môže mať priradenú jednu alebo viac zmlúv o poruchách. Tu je príklad, ktorý ukazuje, ako sa dajú využiť zmluvy o chybe. Upozorňujeme, že na kontrakt prevádzkovej zmluvy v príklade kódu uvedenom nižšie boli použité dve zmluvy o chybe s názvom FaultContractOne a FaultContractTwo.

[Servisná zmluva]

zmluva o rozhraní

{

[FaultContract (typeof (FaultContractOne))]

[FaultContract (typeof (FaultContractTwo))]

[OperationContract]

reťazec GetMessage ();

 }