Condividi tramite


Distribuzione di un flusso di lavoro come servizio Web

Il framework di Windows Workflow Foundation supporta l'interoperabilità con i servizi Web. Ciò comprende la possibilità di esporre un flusso di lavoro come servizio Web ai client ASP.NET e agli altri flussi di lavoro. Windows Workflow Foundation supporta la pubblicazione di un flusso di lavoro come servizio Web ASP.NET su un server Web o server farm con ASP.NET in esecuzione su Internet Information Services (IIS) 6.0. Dal momento che il supporto è basato su ASP.NET 2.0, erediterà la maggior parte delle funzionalità di un servizio Web ASP.NET standard.

La libreria di attività di base di Windows Workflow Foundation contiene le attività WebServiceInputActivity e WebServiceOutputActivity che consentono a un flusso di lavoro di essere utilizzato come endpoint di servizio Web. Per informazioni sull'utilizzo di queste attività di servizi Web, vedere Utilizzo dell'attività WebServiceInputActivity e Utilizzo dell'attività WebServiceOutputActivity.

Hosting Web di flussi di lavoro

Le classi primarie utilizzate per l'hosting Web di flussi di lavoro sono:

WorkflowWebHostingModule

La classe WorkflowWebHostingModule è il meccanismo di routing predefinito utilizzato per inviare una richiesta di servizio Web a un'istanza di flusso di lavoro appropriata tramite cookie ASP.NET. È pertanto necessario che i client che inviano queste richieste supportino i cookie.

Benché Windows Workflow Foundation offra questo meccanismo di routing predefinito, è possibile implementare un meccanismo di routing personalizzato. Ad esempio, nei casi in cui non è possibile attivare i cookie nel client, quest'ultimo può essere configurato in modo da creare l'istanza del flusso di lavoro con un ID specifico. Questo ID può quindi essere passato in ogni richiesta di servizio Web. La pipeline di richieste può essere configurata con gestori SOAP o HTTP in modo da intercettare la chiamata, recuperare l'ID dell'istanza del flusso di lavoro dalle informazioni contenute nell'intestazione e quindi impostare l'elemento HttpContext.Current.Items.Add("__WorkflowInstanceId__", workflowInstanceId) sull'ID in arrivo.

ManualWorkflowSchedulerService

La classe ManualWorkflowSchedulerService è un'implementazione specifica della classe WorkflowSchedulerService che controlla il numero di thread generati in un processo ASP.NET riutilizzando il thread che ha inviato la richiesta Web ASP.NET relativa all'esecuzione dell'istanza del flusso di lavoro. Ciò garantisce che, in qualsiasi momento, il numero di thread attivi nel runtime del flusso di lavoro sia uguale al numero di richieste Web attive nel processo ASP.NET.

Limitazioni dei flussi di lavoro esposti come servizi Web

Il funzionamento del routing delle istanze si basa su una sessione ASP.NET. Come consumer di un servizio Web, deve supportare un cookie ASP.NET.

Anche se il modello ricezione di richiesta/invio di risposta può essere configurato come asincrono in un flusso di lavoro, al consumer di un servizio Web vengono applicate le limitazioni generali di ASP.NET. Ovvero, un'istanza non può eseguire la migrazione di processi tra operazioni richiesta/risposta in sospeso.

Un servizio Web flusso di lavoro utilizza i cookie per tenere traccia dello stato. Se si pubblica un flusso di lavoro come servizio Web, è necessario attivare i cookie nel codice client che lo richiama. Ad esempio:

CalculatorWorkflow_WebService service = new CalculatorWorkflow_WebService();
service.CookieContainer = new System.Net.CookieContainer();

Ciò consente di eseguire chiamate a metodi nell'oggetto "service".

Vedere anche

Riferimenti

WebServiceInputActivity
WebServiceOutputActivity
WorkflowWebHostingModule
ManualWorkflowSchedulerService

Concetti

Comunicazione con altri flussi di lavoro
Utilizzo dell'attività WebServiceInputActivity
Utilizzo dell'attività WebServiceOutputActivity

Footer image

Copyright © 2007 Microsoft Corporation. Tutti i diritti riservati.