Le novità di Communication e Workflow Foundation e la loro cooperazione nel .NET Framework 3.5

4 pagine in totale: <<Indietro 1 2 3 [4]

Workflow Service

In WF 3.5 sono presenti due nuove Activity: SendActivity e ReceiveActiviy. La prima permette di invocare operazioni di servizi WCF, sia OneWay oppure aspettando una risposta o un fault. La ReceiveActivity, invece, è in grado di implementare un'operazione di un servizio WCF attraverso un flusso di lavoro, dandogli così il nome di Workflow Service. In pratica una chiamata ad un servizio WCF esposto tramite uno speciale host, permette di attivare un'istanza di WF, di processarne la richiesta tramite essa ed eventualmente di rispondergli.

Poiché un workflow può durare nel tempo ed impiegare anche anni, il servizio WCF sfrutta i Durable Service per memorizzare il proprio stato in un unione ai servizi di persistenza che già WF dispone. In realtà i Durable Service sono nati principalmente per lavorare con i WF e non a caso si trovano nell'assembly System.WorkflowServices.dll.

Le due nuove Activity, quindi, supportano la possibilità di identificare un dialogo mediante la proprietà ContextToken (possono essere molteplici all'interno di una stessa istanza), mentre la ReceiveActivity con CanCreateInstance consente di indicare se creare una nuova istanza del servizio di workflow, permettendo inoltre anche scenari in cui due o più flussi di lavoro si parlano tra di loro.

Per ospitare e istanziare i Workflow Service è presente una nuova la classe WorkflowServiceHost che permette di mettere in ascolto il servizio e di attivare internamente il runtime di WF:

// Creo l'host del servizio 
WorkflowServiceHost workflowHost = new WorkflowServiceHost(typeof(CartServiceWorkflow)); 
 
// Mi metto in ascolto 
workflowHost.Open(); 
Console.WriteLine("I am listening."); 
Console.WriteLine("Press <enter> to exit."); 
 
// Attendo <invio> per chiudere l'host 
Console.ReadLine(); 
workflowHost.Close(); 

In alternativa il WorkflowServiceHostFactory consente di esporre il servizio tramite file .svc in IIS:

<%@ServiceHost Service="ASPItalia.com.Services.CartServiceWorkflow" 
    Factory="System.ServiceModel.Activation.WorkflowServiceHostFactory" %> 

In entrambi i casi, occorre specificare nel config l'endPoint e il behavior come nell'esempio dei Durable Service. Inoltre nel behavior è possibile configurare il runtime del WF e quali servizi caricare:

<workflowRuntime name="WorkflowServiceHostRuntime" validateOnCreate="true" enablePerformanceCounters="true">  
    <services>  
        <!-- persistenza su SQL del WF --> 
        <add type="System.Workflow.Runtime.Hosting.SqlWorkflowPersistenceService, System.Workflow.Runtime, Version=3.0.00000.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 
            connectionString="..." 
            LoadIntervalSeconds="1" 
            UnLoadOnIdle="true" />  
    </services>  
</workflowRuntime> 

Conclusioni

In questo articolo si sono viste le principali nuove caratteristiche introdotte nel .NET Framework 3.5, volte ad apportare piccoli ritocchi a librerie che si sono già dimostrate potenti e complete. Tutto questo grazie all'ottima architettura che WF e in particolare WCF hanno e allora loro capacità di poter essere estesi in tutte le loro parti, permettendo, in questa nuova release, di adattarsi facilmente all'evoluzione del web.

Lo speciale completo su Visual Studio 2008, Windows Server 2008 e SQL Server 2008

4 pagine in totale: <<Indietro 1 2 3 [4]

Contenuti dell'articolo

Commenti
Dai un voto a questo articolo, ci aiuterà a migliorare il nostro sito (1 è il voto minimo, 5 il massimo).

Per procedere al rating dell'articolo devi essere autenticato.

Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.

TUTORIALS


IN EVIDENZA
MISC