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.