Condividi tramite


Sviluppo del servizio del flusso di lavoro con priorità al contratto ("contract-first")

A partire da .NET Framework 4.5, Windows Workflow Foundation (WF) offre una maggiore integrazione tra i servizi Web e i flussi di lavoro sotto forma di sviluppo di flussi di lavoro con priorità al contratto. Lo strumento di sviluppo di flussi di lavoro con priorità al contratto consente di progettare il contratto innanzitutto nel codice. Lo strumento consente di generare automaticamente un modello di attività nella casella degli strumenti per le operazioni nel contratto. 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. Per un esempio dettagliato della creazione di un servizio del flusso di lavoro con priorità al contratto ("contract-first"), vedere Procedura: Creare un servizio di flusso di lavoro che usa un contratto di servizio esistente.

Contenuto dell'argomento

Mapping degli attributi del contratto di servizio agli attributi del flusso di lavoro

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").

Attributi del contratto di servizio

Nome proprietà Supportata Descrizione Convalida WF
CallbackContract No Ottiene o imposta il tipo di contratto di callback quando il contratto è duplex. (N/D)
ConfigurationName No Consente di ottenere o impostare il nome usato per individuare il servizio in un file di configurazione dell'applicazione. (N/D)
HasProtectionLevel Ottiene un valore che indica se al membro è stato assegnato un livello di protezione. Receive.ProtectionLevel non deve essere null.
Nome Ottiene o imposta il nome dell'elemento <portType> in WSDL (Web Services Description Language). Receive.ServiceContractName.LocalName deve corrispondere.
Spazio dei nomi Ottiene o imposta lo spazio dei nomi dell'elemento <portType> in WSDL (Web Services Description Language). Receive.ServiceContractName.NameSpace deve corrispondere.
ProtectionLevel Specifica se l'associazione del contratto deve supportare il valore della proprietà ProtectionLevel. Receive.ProtectionLevel deve corrispondere.
SessionMode No Consente di ottenere o impostare un valore che stabilisce se le sessioni sono consentite, non consentite oppure obbligatorie. (N/D)
TypeId No Se implementata in una classe derivata, ottiene un identificatore univoco per questo attributo. (ereditato dall'attributo). (N/D)

Inserire il corpo della sottosezione qui.

Attributi del contratto dell'operazione

Nome proprietà Supportata Descrizione Convalida WF
Azione Consente di ottenere o impostare l'azione WS-Addressing del messaggio di richiesta. Receive.Action deve corrispondere.
AsyncPattern No Indica che un'operazione è implementata in modo asincrono usando una coppia costituita dai metodi Begin<methodName> ed End<methodName> in un contratto di servizio. (N/D)
HasProtectionLevel 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. Receive.ProtectionLevel non deve essere null.
IsInitiating No 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). (N/D)
IsOneWay Ottiene o imposta un valore che indica se l'operazione restituisce un messaggio di risposta. (Nessun SendReply per Receive OPPURE nessun ReceiveReply per Send).
IsTerminating No 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. (N/D)
Nome Ottiene o imposta il nome dell'operazione. Receive.OperationName deve corrispondere.
ProtectionLevel 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. Receive.ProtectionLevel deve corrispondere.
ReplyAction Ottiene o imposta il valore dell'azione SOAP del messaggio di risposta dell'operazione. SendReply.Action deve corrispondere.
TypeId No Se implementata in una classe derivata, ottiene un identificatore univoco per questo attributo. (ereditato dall'attributo). (N/D)

Attributi del contratto del messaggio

Nome proprietà Supportata Descrizione Convalida WF
HasProtectionLevel Ottiene un valore che indica se per il messaggio è specificato un livello di protezione. Nessuna convalida (Receive.Content e SendReply.Content devono corrispondere al tipo di contratto di messaggio).
IsWrapped Ottiene o imposta un valore che specifica se il corpo del messaggio contiene un elemento wrapper. Nessuna convalida (Receive.Content e SendReply.Content devono corrispondere al tipo di contratto di messaggio).
ProtectionLevel No Ottiene o imposta un valore che specifica se il messaggio deve essere crittografato o firmato o se deve presentare entrambi i meccanismi di sicurezza. (N/D)
TypeId Se implementata in una classe derivata, ottiene un identificatore univoco per questo attributo. (ereditato dall'attributo). Nessuna convalida (Receive.Content e SendReply.Content devono corrispondere al tipo di contratto di messaggio).
WrapperName Ottiene o imposta il nome dell'elemento wrapper del corpo del messaggio. Nessuna convalida (Receive.Content e SendReply.Content devono corrispondere al tipo di contratto di messaggio).
WrapperNamespace No Ottiene o imposta lo spazio dei nomi dell'elemento wrapper del corpo del messaggio. (N/D)

Attributi del contratto dei dati

Nome proprietà Supportata Descrizione Convalida WF
IsReference No Ottiene o imposta un valore che indica se mantenere i dati del riferimento all'oggetto. (N/D)
Nome Ottiene o imposta il nome del contratto dati per il tipo. Nessuna convalida (Receive.Content e SendReply.Content devono corrispondere al tipo di contratto di messaggio).
Spazio dei nomi Ottiene o imposta lo spazio dei nomi del contratto dati per il tipo. Nessuna convalida (Receive.Content e SendReply.Content devono corrispondere al tipo di contratto di messaggio).
TypeId No Se implementata in una classe derivata, ottiene un identificatore univoco per questo attributo. (ereditato dall'attributo). (N/D)

Attributi del contratto di errore

Nome proprietà Supportata Descrizione Convalida WF
Azione Consente di ottenere o impostare l'azione del messaggio di errore SOAP specificato come parte del contratto dell'operazione. SendReply.Action deve corrispondere.
DetailType Consente di ottenere il tipo di un oggetto serializzabile contenente le informazioni sull'errore. SendReply.Content deve corrispondere al tipo.
HasProtectionLevel No Ottiene un valore che indica se al messaggio di errore SOAP è stato assegnato un livello di protezione. (N/D)
Nome No Consente di ottenere o impostare il nome del messaggio di errore in WSDL (Web Services Description Language). (N/D)
Spazio dei nomi No Consente di ottenere o impostare lo spazio dei nomi dell'errore SOAP. (N/D)
ProtectionLevel No Consente di specificare il livello di protezione che l'associazione deve applicare all'errore SOAP. (N/D)
TypeId No Se implementata in una classe derivata, ottiene un identificatore univoco per questo attributo. (ereditato dall'attributo). (N/D)

Altre informazioni di implementazione e di supporto

Funzionalità del contratto di servizio non supportate

  • L'utilizzo delle attività della libreria TPL (Task Parallel Library) nei contratti non è supportato.

  • L'ereditarietà nei contratti di servizio non è supportata.

Generazione di attività di messaggistica configurate

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").

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. OperationName, ServiceContractName, Action, SerializerOption, ProtectionLevel e KnownTypes sono tutti preconfigurati per corrispondere al contratto importato. Nella pagina delle proprietà di contenuto per le attività nella finestra di progettazione del flusso di lavoro, anche le sezioni Messaggio o Parametri sono preconfigurate in base al contratto.

I contratti di errore WCF vengono gestiti anche tramite la restituzione di un set separato di attività SendReply configurate per ognuno degli errori che vengono visualizzati in FaultsFaultDescriptionCollection.

Per altre parti di OperationDescription che non sono attualmente supportate dai servizi WF (ad esempio, i comportamenti di WebGet/WebInvoke o i comportamenti di operazioni personalizzate) l'API ignorerà questi valori come parte della generazione e della configurazione. Non verranno generate eccezioni.