Programmering

Mine to cent på kontrakter i WCF

WCF (Windows Communication Foundation) er en sikker, pålitelig og skalerbar meldingsplattform for utvikling av tjenester i .Net. Når du jobber med WCF, må du først opprette en tjenestekontrakt og deretter definere tjenestedriften eller operasjonskontraktene i den. Du har mange forskjellige typer kontrakter i WCF - servicekontrakter, datakontrakter, feilkontrakter, meldekontrakter og operasjonskontrakter.

WCF-tjenester avslører kontrakter for å lette kommunikasjonen med tjenesteforbrukerne. En kontrakt er en standard som brukes i WCF for å spesifisere hva tjenesten skal gjøre. Kontrakter i WCF kan kategoriseres i to forskjellige kategorier:

  • Behavioral Contracts: I WCF kan vi ha tre atferdskontrakter, nemlig ServiceContract, OperationContract og FaultContract.
  • Strukturelle kontrakter: Disse inkluderer DataContract og MessageContract.

Servicekontrakter og driftskontrakter

En ServiceContract brukes til å betegne tjenestedriften som er tilgjengelig for tjenesteforbrukeren på et bestemt tjenestens sluttpunkt. I hovedsak brukes ServiceContract til å spesifisere operasjonene som er tilgjengelige for tjenesteklienten å konsumere. En ServiceContract er definert ved hjelp av ServiceContract-attributtet - vanligvis brukt på et grensesnitt.

En ServiceContract kan definere meldingsutvekslingsmønsteret blant tjenesteleverandøren og tjenesteforbrukeren og kan ha en eller flere tjenester. disse er kjent som driftskontrakter. En operasjonskontrakt brukes til å definere signaturen til servicemetoden og også transaksjonsflyt, retning av servicedriften og også feilkontrakten (e) som kan være assosiert.

Kodelisten som er gitt nedenfor illustrerer hvordan en typisk tjenestekontrakt defineres.

[Servicekontrakt]

grensesnitt ITestService

{

[OperationContract]

streng GetMessage ();

}

offentlig klasse TestService: ITestService

{

offentlig streng GetMessage ()

      {

returner "Hello World!";

      }

}

I kodelisten vist ovenfor er den eneste operasjonskontrakten i servicekontrakten GetMessage. Legg merke til hvordan attributtene er spesifisert. Også, hvis du har en metode i tjenestekontrakten din som ikke har attributtet for operasjonskontrakten satt, kan metoden ikke eksponeres av tjenesten, dvs. metoden kan ikke konsumeres av tjenesteforbrukeren.

DataContracts, MessageContracts, and FaultContracts

En DataContract brukes til å beskrive dataene som må byttes ut over ledningen. Den brukes til å spesifisere hvordan dataene kan utveksles mellom tjenesteleverandøren og tjenesteforbrukeren. Du kan bruke attributtet [DataContract] til å dekorere typen din slik at dataene kan serieiseres før de sendes over ledningen. Når du definerer datakontrakter, må du vanligvis bruke datamedlemmer til å definere egenskapene til datakontrakten.

Følgende kodebit viser hvordan du kan dekorere en klasse med [DataContract] -attributtet.

[DataContract]

offentlig klasse Ansatt

{

[DataMember]

offentlig streng-ID;

[DataMember]

offentlig streng Fornavn;

[DataMember]

offentlig streng Etternavn;

}

En meldingskontrakt er en som kan brukes til å dekorere kroppen til en melding i WCF. I de fleste tilfeller trenger du ikke bruke meldingsavtaler - bruk av datakontrakter vil være tilstrekkelig. Hvis du trenger en finkornet kontroll på SOAP-meldingene dine, kan du dra nytte av meldekontrakter. Du kan bruke meldekontrakter for å få tilgang til SOAP-overskriftene.

Du kan bruke meldekontrakter til å spesifisere formatet på SOAP-meldingen som må kreves. Mens MessageHeaderAttribute kan brukes på medlemmene du vil inkludere i SOAP-overskriftene, kan MessageBodyMemberAttribute brukes til å definere medlemmene som skal være en del av kroppen til SOAP-meldingen.

Du kan definere en meldingskontrakt ved å bruke MessageContractAttribute som vist nedenfor.

[MessageContract]

offentlig klasse Transaksjon

{

[MessageHeader] offentlig DateTime-dato;

[MessageBodyMember] offentlig int beløp;

}

En feilkontrakt i WCF brukes til å definere og formidle feilene som kan oppstå når en serviceoperasjon utføres. I hovedsak kan du utnytte feilkontrakter for å overføre feilmeldingene til tjenesteforbrukeren når det oppstår en feil i tjenesten din. Merk at du kan dekorere operasjonskontraktene ved hjelp av en feilkontrakt - en servicekontrakt kan ha en eller flere feilkontrakter. Her er et eksempel som viser hvordan feilkontrakter kan brukes. Merk at to feilkontrakter kalt FaultContractOne og FaultContractTwo har blitt brukt på driftskontraktskontrakten i kodeeksemplet gitt nedenfor.

[Servicekontrakt]

grensesnittkontrakt

{

[FaultContract (typeof (FaultContractOne))]

[FaultContract (typeof (FaultContractTwo))]

[OperationContract]

streng GetMessage ();

 }

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