Sviluppo del servizio del flusso di lavoro con priorità al contratto ("contract-first")Contract First Workflow Service Development

A partire da .NET Framework 4.5.NET Framework 4.5, Windows Workflow Foundation (WF) offre una maggiore integrazione tra servizi web e i flussi di lavoro sotto forma di sviluppo del flusso di lavoro di primo livello del contratto.Starting with .NET Framework 4.5.NET Framework 4.5, Windows Workflow Foundation (WF) features better integration between web services and workflows in the form of contract-first workflow development. Lo strumento di sviluppo di flussi di lavoro con priorità al contratto consente di progettare il contratto innanzitutto nel codice.The contract-first workflow development tool allows you to design the contract in code first. Lo strumento consente di generare automaticamente un modello di attività nella casella degli strumenti per le operazioni nel contratto.The tool then automatically generates an activity template in the toolbox for the operations in the contract. In questo argomento viene fornita una panoramica del mapping di attività e proprietà di un servizio del flusso di lavoro agli attributi di un contratto di servizio.This topic provides an overview of how the activities and properties in a workflow service map to the attributes of a service contract. Per un esempio dettagliato di creazione di un servizio flusso di lavoro priorità al contratto, vedere procedura: creare un servizio flusso di lavoro che utilizza un contratto di servizio esistente.For a step-by-step example of creating a contract-first workflow service, see How to: Create a workflow service that consumes an existing service contract.

Contenuto dell'argomentoIn this topic

Mapping di attributi del contratto di servizio per gli attributi del flusso di lavoroMapping service contract attributes to workflow attributes

Le tabelle nelle sezioni seguenti specificano gli attributi e le proprietà WCF e il relativo mapping alle attività e alle proprietà di messaggistica in un flusso di lavoro con priorità al contratto ("contract-first").The tables in the following sections specify the different WCF attributes and properties and how they are mapped to the messaging activities and properties in a contract-first workflow.

Attributi del contratto di servizioService Contract Attributes

Nome proprietàProperty Name SupportatoSupported DescrizioneDescription Convalida WFWF Validation
CallbackContractCallbackContract NoNo Ottiene o imposta il tipo di contratto di callback quando il contratto è duplex.Gets or sets the type of callback contract when the contract is a duplex contract. (N/D)(N/A)
ConfigurationNameConfigurationName NoNo Consente di ottenere o impostare il nome usato per individuare il servizio in un file di configurazione dell'applicazione.Gets or sets the name used to locate the service in an application configuration file. (N/D)(N/A)
HasProtectionLevelHasProtectionLevel Yes Ottiene un valore che indica se al membro è stato assegnato un livello di protezione.Gets a value that indicates whether the member has a protection level assigned. Receive.ProtectionLevel non deve essere null.Receive.ProtectionLevel should not be null.
NomeName YesYes Ottiene o imposta il nome per il <portType > elemento Web Services Description Language (WSDL).Gets or sets the name for the <portType> element in Web Services Description Language (WSDL). Receive.ServiceContractName.LocalName deve corrispondere.Receive.ServiceContractName.LocalName should match.
Spazio dei nomiNamespace YesYes Ottiene o imposta lo spazio dei nomi di <portType > elemento Web Services Description Language (WSDL).Gets or sets the namespace of the <portType> element in Web Services Description Language (WSDL). Receive.ServiceContractName.NameSpace deve corrispondere.Receive.ServiceContractName.NameSpace should match
ProtectionLevelProtectionLevel Yes Specifica se l'associazione del contratto deve supportare il valore della proprietà ProtectionLevel.Specifies whether the binding for the contract must support the value of the ProtectionLevel property. Receive.ProtectionLevel deve corrispondere.Receive.ProtectionLevel should match.
SessionModeSessionMode NoNo Consente di ottenere o impostare un valore che stabilisce se le sessioni sono consentite, non consentite oppure obbligatorie.Gets or sets whether sessions are allowed, not allowed or required. (N/D)(N/A)
TypeIdTypeId NoNo Se implementato in una classe derivata, ottiene un identificatore univoco per l'attributoWhen implemented in a derived class, gets a unique identifier for this Attribute. (ereditato dall'attributo).(Inherited from Attribute.) (N/D)(N/A)

Inserire qui il corpo della sottosezione.Insert subsection body here.

Attributi del contratto di operazioneOperation Contract Attributes

Nome proprietàProperty Name SupportatoSupported DescrizioneDescription Convalida WFWF Validation
AzioneAction Yes Consente di ottenere o impostare l'azione WS-Addressing del messaggio di richiesta.Gets or sets the WS-Addressing action of the request message. Receive.Action deve corrispondere.Receive.Action should match.
AsyncPatternAsyncPattern NoNo Indica che un'operazione è implementata in modo asincrono utilizzando un blocco Begin<methodName > e di fine<methodName > coppia di metodi in un contratto di servizio.Indicates that an operation is implemented asynchronously using a Begin<methodName> and End<methodName> method pair in a service contract. (N/D)(N/A)
HasProtectionLevelHasProtectionLevel Yes Ottiene un valore che indica se i messaggi di questa operazione devono essere crittografati o firmati o se devono presentare entrambi i meccanismi di protezione.Gets a value that indicates whether the messages for this operation must be encrypted, signed, or both. Receive.ProtectionLevel non deve essere null.Receive.ProtectionLevel should not be null.
IsInitiatingIsInitiating NoNo Ottiene o imposta un valore che indica se il metodo implementa un'operazione in grado di avviare una sessione nel server (se tale sessione esiste).Gets or sets a value that indicates whether the method implements an operation that can initiate a session on the server(if such a session exists). (N/D)(N/A)
IsOneWayIsOneWay Yes Ottiene o imposta un valore che indica se l'operazione restituisce un messaggio di risposta.Gets or sets a value that indicates whether an operation returns a reply message. (Nessun SendReply per Receive OPPURE nessun ReceiveReply per Send).(No SendReply for this Receive OR no ReceiveReply for this Send).
IsTerminatingIsTerminating NoNo Ottiene o imposta un valore che indica se l'operazione di servizio causa la chiusura della sessione da parte del server dopo l'invio di un eventuale messaggio di risposta.Gets or sets a value that indicates whether the service operation causes the server to close the session after the reply message, if any, is sent. (N/D)(N/A)
NomeName Yes Ottiene o imposta il nome dell'operazione.Gets or sets the name of the operation. Receive.OperationName deve corrispondere.Receive.OperationName should match.
ProtectionLevelProtectionLevel Yes Ottiene o imposta un valore che specifica se i messaggi di un'operazione devono essere crittografati o firmati o se devono presentare entrambi i meccanismi di sicurezza.Gets or sets a value that specifies whether the messages of an operation must be encrypted, signed, or both. Receive.ProtectionLevel deve corrispondere.Receive.ProtectionLevel should match.
ReplyActionReplyAction Yes Ottiene o imposta il valore dell'azione SOAP del messaggio di risposta dell'operazione.Gets or sets the value of the SOAP action for the reply message of the operation. SendReply.Action deve corrispondere.SendReply.Action should match.
TypeIdTypeId NoNo Se implementato in una classe derivata, ottiene un identificatore univoco per l'attributoWhen implemented in a derived class, gets a unique identifier for this Attribute. (ereditato dall'attributo).(Inherited from Attribute.) (N/D)(N/A)

Attributi del contratto di messaggioMessage Contract Attributes

Nome proprietàProperty Name SupportatoSupported DescrizioneDescription Convalida WFWF Validation
HasProtectionLevelHasProtectionLevel Yes Ottiene un valore che indica se per il messaggio è specificato un livello di protezione.Gets a value that indicates whether the message has a protection level. Nessuna convalida (Receive.Content e SendReply.Content devono corrispondere al tipo di contratto di messaggio).No validation (Receive.Content and SendReply.Content must match the message contract type).
IsWrappedIsWrapped Yes Ottiene o imposta un valore che specifica se il corpo del messaggio contiene un elemento wrapper.Gets or sets a value that specifies whether the message body has a wrapper element. Nessuna convalida (Receive.Content e SendReply.Content devono corrispondere al tipo di contratto di messaggio).No validation (Receive.Content and Sendreply.Content must match the message contract type).
ProtectionLevelProtectionLevel NoNo Ottiene o imposta un valore che specifica se il messaggio deve essere crittografato o firmato o se deve presentare entrambi i meccanismi di sicurezza.Gets or sets a value that specified whether the message must be encrypted, signed, or both. (N/D)(N/A)
TypeIdTypeId Yes Se implementato in una classe derivata, ottiene un identificatore univoco per l'attributoWhen implemented in a derived class, gets a unique identifier for this Attribute. (ereditato dall'attributo).(Inherited from Attribute.) Nessuna convalida (Receive.Content e SendReply.Content devono corrispondere al tipo di contratto di messaggio).No validation (Receive.Content and SendReply.Content must match the message contract type).
WrapperNameWrapperName Yes Ottiene o imposta il nome dell'elemento wrapper del corpo del messaggio.Gets or sets the name of the wrapper element of the message body. Nessuna convalida (Receive.Content e SendReply.Content devono corrispondere al tipo di contratto di messaggio).No validation (Receive.Content and SendReply.Content must match the message contract type).
WrapperNamespaceWrapperNamespace NoNo Ottiene o imposta lo spazio dei nomi dell'elemento wrapper del corpo del messaggio.Gets or sets the namespace of the message body wrapper element. (N/D)(N/A)

Attributi del contratto datiData Contract Attributes

Nome proprietàProperty Name SupportatoSupported DescrizioneDescription Convalida WFWF Validation
IsReferenceIsReference NoNo Ottiene o imposta un valore che indica se mantenere i dati del riferimento all'oggetto.Gets or sets a value that indicates whether to preserve object reference data. (N/D)(N/A)
NomeName Yes Ottiene o imposta il nome del contratto dati per il tipo.Gets or sets the name of the data contract for the type. Nessuna convalida (Receive.Content e SendReply.Content devono corrispondere al tipo di contratto di messaggio).No validation (Receive.Content and SendReply.Content must match the message contract type).
Spazio dei nomiNamespace Yes Ottiene o imposta lo spazio dei nomi del contratto dati per il tipo.Gets or sets the namespace for the data contract for the type. Nessuna convalida (Receive.Content e SendReply.Content devono corrispondere al tipo di contratto di messaggio).No validation (Receive.Content and SendReply.Content must match the message contract type).
TypeIdTypeId NoNo Se implementato in una classe derivata, ottiene un identificatore univoco per l'attributoWhen implemented in a derived class, gets a unique identifier for this Attribute. (ereditato dall'attributo).(Inherited from Attribute.) (N/D)(N/A)

Attributi del contratto di erroreFault Contract Attributes

Nome proprietàProperty Name SupportatoSupported DescrizioneDescription Convalida WFWF Validation
AzioneAction Yes Consente di ottenere o impostare l'azione del messaggio di errore SOAP specificato come parte del contratto dell'operazione.Gets or sets the action of the SOAP fault message that is specified as part of the operation contract. SendReply.Action deve corrispondere.SendReply.Action should match.
DetailTypeDetailType Yes Consente di ottenere il tipo di un oggetto serializzabile contenente le informazioni sull'errore.Gets the type of a serializable object that contains error information. SendReply.Content deve corrispondere al tipo.SendReply.Content should match the type
HasProtectionLevelHasProtectionLevel NoNo Ottiene un valore che indica se al messaggio di errore SOAP è stato assegnato un livello di protezione.Gets a value that indicates whether the SOAP fault message has a protection level assigned. (N/D)(N/A)
NomeName NoNo Consente di ottenere o impostare il nome del messaggio di errore in WSDL (Web Services Description Language).Gets or sets the name of the fault message in Web Services Description Language (WSDL). (N/D)(N/A)
Spazio dei nomiNamespace NoNo Consente di ottenere o impostare lo spazio dei nomi dell'errore SOAP.Gets or sets the namespace of the SOAP fault. (N/D)(N/A)
ProtectionLevelProtectionLevel NoNo Consente di specificare il livello di protezione che l'associazione deve applicare all'errore SOAP.Specifies the level of protection the SOAP fault requires from the binding. (N/D)(N/A)
TypeIdTypeId NoNo Se implementato in una classe derivata, ottiene un identificatore univoco per l'attributoWhen implemented in a derived class, gets a unique identifier for this Attribute. (ereditato dall'attributo).(Inherited from Attribute.) (N/D)(N/A)

Informazioni di implementazione e ulteriore supportoAdditional Support and Implementation Information

Funzionalità del contratto di servizio non supportatoUnsupported service contract features

  • L'utilizzo delle attività della libreria TPL (Task Parallel Library) nei contratti non è supportato.Use of TPL (Task Parallel Library) Tasks in contracts is not supported.

  • L'ereditarietà nei contratti di servizio non è supportata.Inheritance in Service Contracts is not supported.

Generazione di attività di messaggistica configurateGeneration of configured messaging activities

Sono stati aggiunti due metodi statici pubblici alle attività Receive e SendReply per supportare la generazione di attività preconfigurate del messaggio durante l'uso dei servizi dei flussi di lavoro con priorità al contratto ("contract-first").Two public static methods are added to the Receive and SendReply activities to support the generation of pre-configured message activities when using contract-first workflow services.

L'attività generata da questi metodi deve passare la convalida del contratto e quindi questi metodi vengono usati internamente come parte della logica di convalida per Receive e SendReply.The activity generated by these methods should pass contract validation, and therefore these methods are used internally as part of the validation logic for Receive and SendReply. OperationName, ServiceContractName, Action, SerializerOption, ProtectionLevel e KnownTypes sono tutti preconfigurati per corrispondere al contratto importato.The OperationName, ServiceContractName, Action, SerializerOption, ProtectionLevel, and KnownTypes are all pre-configured to match the imported contract. Nella pagina delle proprietà del contenuto per le attività nella finestra di progettazione del flusso di lavoro, il messaggio o parametri sezioni sono configurate in precedenza in base al contratto.In the content properties page for the activities in the workflow designer, the Message or Parameters sections are also pre-configured to match the contract.

Errore WCF vengono gestiti tramite la restituzione di un set separato di contratti configurato SendReply attività per ognuno degli errori che compaiono nella Faults FaultDescriptionCollection.WCF fault contracts are also handled by returning a separate set of configured SendReply activities for each of the faults that show up in the Faults FaultDescriptionCollection.

Per altre parti di OperationDescription che non sono supportate dai servizi WF oggi (ad esempio, i comportamenti di WebGet/WebInvoke o i comportamenti dell'operazione personalizzato), l'API ignorerà questi valori come parte della generazione e della configurazione.For other parts of OperationDescription that are unsupported by WF services today (e.g. WebGet/WebInvoke behaviors, or custom operation behaviors), the API will ignore those values as part of the generation and configuration. Non verranno generate eccezioni.No exceptions will be thrown.