Dela via


Utveckling av tjänsten Contract First Workflow

Från och med .NET Framework 4.5 har Windows Workflow Foundation (WF) bättre integrering mellan webbtjänster och arbetsflöden i form av kontrakt-första arbetsflödesutveckling. Med det första arbetsflödesutvecklingsverktyget för kontrakt kan du först utforma kontraktet i kod. Verktyget genererar sedan automatiskt en aktivitetsmall i verktygslådan för åtgärderna i kontraktet. Det här avsnittet innehåller en översikt över hur aktiviteter och egenskaper i en arbetsflödestjänst mappar till attributen för ett tjänstkontrakt. Ett steg-för-steg-exempel på hur du skapar en kontrakt-första arbetsflödestjänst finns i Så här skapar du en arbetsflödestjänst som använder ett befintligt tjänstkontrakt.

I det här avsnittet

Mappa tjänstkontraktsattribut till arbetsflödesattribut

Tabellerna i följande avsnitt anger de olika WCF-attributen och egenskaperna och hur de mappas till meddelandeaktiviteterna och egenskaperna i ett kontrakt först-arbetsflöde.

Attribut för tjänstkontrakt

Egenskapsnamn Stöds beskrivning WF-validering
CallbackContract Nej Hämtar eller anger typen av återanropskontrakt när kontraktet är ett duplex-kontrakt. (Ej tillämpligt)
ConfigurationName Nej Hämtar eller anger namnet som används för att hitta tjänsten i en programkonfigurationsfil. (Ej tillämpligt)
HasProtectionLevel Ja Hämtar ett värde som anger om medlemmen har en tilldelad skyddsnivå. Receive.ProtectionLevel får inte vara null.
Name Ja Hämtar eller anger namnet på <portType-elementet> i Web Services Description Language (WSDL). Receive.ServiceContractName.LocalName ska matcha.
Namnområde Ja Hämtar eller anger namnområdet för <portType-elementet> i Web Services Description Language (WSDL). Receive.ServiceContractName.NameSpace ska matcha
ProtectionLevel Ja Anger om bindningen för kontraktet måste ha stöd för värdet för egenskapen ProtectionLevel. Receive.ProtectionLevel ska matcha.
SessionMode Nej Hämtar eller anger om sessioner tillåts, inte tillåts eller krävs. (Ej tillämpligt)
TypeId Nej När det implementeras i en härledd klass hämtar du en unik identifierare för det här attributet. (Ärvd från attribut.) (Ej tillämpligt)

Infoga underavsnittstext här.

Attribut för åtgärdskontrakt

Egenskapsnamn Stöds beskrivning WF-validering
Åtgärd Ja Hämtar eller anger åtgärden WS-Addressing för begärandemeddelandet. Receive.Action ska matcha.
AsyncPattern Nej Anger att en åtgärd implementeras asynkront med hjälp av metodparet Begin<methodName> och End<methodName> i ett tjänstkontrakt. (Ej tillämpligt)
HasProtectionLevel Ja Hämtar ett värde som anger om meddelandena för den här åtgärden måste vara krypterade, signerade eller båda. Receive.ProtectionLevel får inte vara null.
Initiera Nej Hämtar eller anger ett värde som anger om metoden implementerar en åtgärd som kan initiera en session på servern (om en sådan session finns). (Ej tillämpligt)
IsOneWay Ja Hämtar eller anger ett värde som anger om en åtgärd returnerar ett svarsmeddelande. (Ingen SendReply för detta Ta emot eller ingen MottagningReply för denna Skicka).
IsTerminera Nej Hämtar eller anger ett värde som anger om tjänståtgärden gör att servern stänger sessionen efter att svarsmeddelandet har skickats. (Ej tillämpligt)
Name Ja Hämtar eller anger namnet på åtgärden. Receive.OperationName ska matcha.
ProtectionLevel Ja Hämtar eller anger ett värde som anger om meddelandena för en åtgärd måste krypteras, signeras eller båda. Receive.ProtectionLevel ska matcha.
ReplyAction Ja Hämtar eller anger värdet för SOAP-åtgärden för åtgärdens svarsmeddelande. SendReply.Action ska matcha.
TypeId Nej När det implementeras i en härledd klass hämtar du en unik identifierare för det här attributet. (Ärvd från attribut.) (Ej tillämpligt)

Attribut för meddelandekontrakt

Egenskapsnamn Stöds beskrivning WF-validering
HasProtectionLevel Ja Hämtar ett värde som anger om meddelandet har en skyddsnivå. Ingen validering (Receive.Content och SendReply.Content måste matcha meddelandekontraktstypen).
IsWrapped Ja Hämtar eller anger ett värde som anger om meddelandetexten har ett wrapper-element. Ingen validering (Receive.Content och Sendreply.Content måste matcha meddelandekontraktstypen).
ProtectionLevel Nej Hämtar eller anger ett värde som anger om meddelandet måste krypteras, signeras eller båda. (Ej tillämpligt)
TypeId Ja När det implementeras i en härledd klass hämtar du en unik identifierare för det här attributet. (Ärvd från attribut.) Ingen validering (Receive.Content och SendReply.Content måste matcha meddelandekontraktstypen).
WrapperName Ja Hämtar eller anger namnet på omslutningselementet i meddelandetexten. Ingen validering (Receive.Content och SendReply.Content måste matcha meddelandekontraktstypen).
WrapperNamespace Nej Hämtar eller anger namnområdet för meddelandetextomslutningselementet. (Ej tillämpligt)

Attribut för datakontrakt

Egenskapsnamn Stöds beskrivning WF-validering
IsReference Nej Hämtar eller anger ett värde som anger om objektreferensdata ska bevaras. (Ej tillämpligt)
Name Ja Hämtar eller anger namnet på datakontraktet för typen. Ingen validering (Receive.Content och SendReply.Content måste matcha meddelandekontraktstypen).
Namnområde Ja Hämtar eller anger namnområdet för datakontraktet för typen. Ingen validering (Receive.Content och SendReply.Content måste matcha meddelandekontraktstypen).
TypeId Nej När det implementeras i en härledd klass hämtar du en unik identifierare för det här attributet. (Ärvd från attribut.) (Ej tillämpligt)

Attribut för felkontrakt

Egenskapsnamn Stöds beskrivning WF-validering
Åtgärd Ja Hämtar eller anger åtgärden för SOAP-felmeddelandet som anges som en del av åtgärdskontraktet. SendReply.Action ska matcha.
DetailType Ja Hämtar typen av ett serialiserbart objekt som innehåller felinformation. SendReply.Content ska matcha typen
HasProtectionLevel Nej Hämtar ett värde som anger om SOAP-felmeddelandet har en tilldelad skyddsnivå. (Ej tillämpligt)
Name Nej Hämtar eller anger namnet på felmeddelandet i Web Services Description Language (WSDL). (Ej tillämpligt)
Namnområde Nej Hämtar eller anger namnområdet för SOAP-felet. (Ej tillämpligt)
ProtectionLevel Nej Anger den skyddsnivå som SOAP-felet kräver från bindningen. (Ej tillämpligt)
TypeId Nej När det implementeras i en härledd klass hämtar du en unik identifierare för det här attributet. (Ärvd från attribut.) (Ej tillämpligt)

Ytterligare support- och implementeringsinformation

Funktioner för tjänstkontrakt som inte stöds

  • Användning av TPL-aktiviteter (aktivitetsparallellt bibliotek) i kontrakt stöds inte.

  • Arv i servicekontrakt stöds inte.

Generering av konfigurerade meddelandeaktiviteter

Två offentliga statiska metoder läggs till i aktiviteterna Receive och SendReply för att stödja genereringen av förkonfigurerade meddelandeaktiviteter när du använder kontraktbaserade arbetsflödestjänster.

Aktiviteten som genereras av dessa metoder bör godkännas av kontraktvalidering, och därför används dessa metoder internt som en del av valideringslogik för Receive och SendReply. , OperationNameServiceContractName, Action, SerializerOption, ProtectionLeveloch KnownTypes är alla förkonfigurerade för att matcha det importerade kontraktet. På sidan innehållsegenskaper för aktiviteterna i arbetsflödesdesignern är avsnitten Meddelande eller Parametrar också förkonfigurerade för att matcha kontraktet.

WCF-felkontrakt hanteras också genom att returnera en separat uppsättning konfigurerade SendReply aktiviteter för vart och ett av felen Faults FaultDescriptionCollectionsom visas i .

För andra delar av OperationDescription som inte stöds av WF-tjänster idag (t.ex. WebGet/WebInvoke-beteenden eller anpassade åtgärdsbeteenden) ignorerar API:et dessa värden som en del av genereringen och konfigurationen. Inga undantag utlöses.