Programmēšana

Mani divi centi par līgumiem WCF

WCF (Windows Communication Foundation) ir droša, uzticama un pielāgojama ziņojumapmaiņas platforma pakalpojumu izveidei .net. Strādājot ar WCF, vispirms jāizveido pakalpojumu līgums un pēc tam tajā jānosaka pakalpojumu darbības vai darbības līgumi. Jums WCF ir daudz dažādu līgumu veidu - pakalpojumu līgumi, datu līgumi, kļūdu līgumi, ziņojumu līgumi un darbības līgumi.

WCF pakalpojumi atklāj līgumus, lai atvieglotu saziņu ar pakalpojumu patērētājiem. Līgums ir standarts, ko WCF izmanto, lai norādītu, kas pakalpojumam ir jādara. Līgumus WCF var iedalīt divās atšķirīgās kategorijās:

  • Uzvedības līgumi: WCF mums var būt trīs uzvedības līgumi, proti, ServiceContract, OperationContract un FaultContract.
  • Strukturālie līgumi: Tie ietver DataContract un MessageContract.

ServiceContracts un OperationContracts

ServiceContract tiek izmantots, lai apzīmētu pakalpojumu darbības, kas pakalpojuma patērētājam ir pieejamas noteiktā pakalpojuma galapunktā. Būtībā ServiceContract tiek izmantots, lai norādītu darbības, kuras pakalpojuma klientam ir pieejamas patērēšanai. ServiceContract tiek definēts, izmantojot atribūtu ServiceContract - parasti tas tiek lietots interfeisam.

ServiceContract var definēt ziņojumu apmaiņas modeli starp pakalpojumu sniedzēju un pakalpojumu patērētāju, un tam var veikt vienu vai vairākas pakalpojumu darbības; tos sauc par darbības līgumiem. Darbības līgums tiek izmantots, lai noteiktu pakalpojuma metodes parakstu, kā arī darījuma plūsmu, pakalpojuma darbības virzienu, kā arī defektu līgumu (-us), kas var būt saistīts.

Nākamais kodu saraksts parāda, kā tiek definēts tipisks pakalpojumu līgums.

[ServiceContract]

interfeiss ITestService

{

[OperationContract]

virkne GetMessage ();

}

publiskā klase TestService: ITestService

{

publiskā virkne GetMessage ()

      {

atgriezties "Sveika pasaule!";

      }

}

Iepriekš parādītajā kodu sarakstā vienīgais pakalpojumu līguma darbības līgums ir GetMessage. Ievērojiet, kā ir norādīti atribūti. Turklāt, ja jūsu pakalpojumu līgumā ir metode, kurai nav iestatīts darbības līguma atribūts, pakalpojums nevar atklāt metodi, t.i., pakalpojumu patērētājs nevar patērēt metodi.

DataContracts, MessageContracts un FaultContracts

DataContract tiek izmantots, lai aprakstītu datus, kas jāapmainās ar vadu. To izmanto, lai norādītu, kā datu apmaiņu var veikt starp pakalpojumu sniedzēju un pakalpojuma patērētāju. Varat izmantot atribūtu [DataContract], lai izrotātu savu tipu, lai datus varētu sērijveidot, pirms tie tiek nodoti pa vadu. Nosakot datu līgumus, jums parasti jāizmanto datu dalībnieki, lai definētu datu līguma īpašības.

Šis koda fragments parāda, kā jūs varat izrotāt klasi ar atribūtu [DataContract].

[DataContract]

sabiedrības klase Darbinieks

{

[DataMember]

publiskās virknes ID;

[DataMember]

publiskā virkne Vārds;

[DataMember]

publiskā virkne Uzvārds;

}

Ziņojuma līgums ir līgums, ko var izmantot, lai noformētu ziņojuma pamati WCF. Vairumā gadījumu jums nevajadzēs izmantot ziņojumu līgumus - pietiks ar datu līgumu izmantošanu. Ja jums ir nepieciešama precīza SOAP ziņojumu kontrole, varat izmantot ziņojumu līgumu priekšrocības. Lai piekļūtu SOAP galvenēm, varat izmantot ziņojumu līgumus.

Varat izmantot ziņojumu līgumus, lai norādītu pieprasāmā SOAP ziņojuma formātu. Lai gan MessageHeaderAttribute var piemērot dalībniekiem, kurus vēlaties iekļaut SOAP galvenēs, MessageBodyMemberAttribute var izmantot, lai definētu dalībniekus, kuriem jābūt SOAP ziņojuma pamattekstā.

Jūs varat definēt ziņojumu līgumu, lietojot MessageContractAttribute, kā parādīts zemāk.

[MessageContract]

publiskā klase Darījums

{

[MessageHeader] public DateTime datums;

[MessageBodyMember] public int summa;

}

Kļūdu līgums WCF tiek izmantots, lai definētu un izplatītu kļūdas, kas var rasties, veicot pakalpojumu darbību. Būtībā jūs varat izmantot kļūdu līgumus, lai kļūdu ziņojumus nodotu pakalpojumu patērētājam, kad jūsu pakalpojumā rodas kļūda. Ņemiet vērā, ka darbības līgumus varat noformēt, izmantojot vainas līgumu - pakalpojuma darbības līgumam var būt saistīts viens vai vairāki vainas līgumi. Šis piemērs parāda, kā var izmantot līgumus par kļūdām. Ņemiet vērā, ka zemāk norādītajā kodu piemērā operācijas līguma līgumam ir piemēroti divi kļūdu līgumi ar nosaukumu FaultContractOne un FaultContractTwo.

[ServiceContract]

interfeiss Līgums

{

[FaultContract (typeof (FaultContractOne)]]]

[FaultContract (typeof (FaultContractTwo))]]

[OperationContract]

virkne GetMessage ();

 }