Orcas March CTP: non solo LINQ, AJAX e WPF, ma anche WorkflowServices

Da pochi giorni è disponibile la March CTP di Visual Studio codename Orcas. Si parla molto e per lo più di LINQ, AJAX e miglior supporto a WPF. Personalmente credo molto in LINQ e mi appassiona vedere come è stato realizzato. AJAX non mi “scalda” :-) più di tanto e WPF … lo sapete sono solo palle che rimbalzano! (ovviamente scherzo … ma non sono un uomo che si occupa di UI con WPF, per questo ci sono Luka e RoB nel nostro gruppo). In ogni caso, come segnalato anche in questo post, le nuove funzionalità introdotto nella Orcas CTP di Marzo riguardano diversi e numerosi altri ambiti.

Ad esempio ci sono alcune classi e assembly che consentono di ospitare workflow definiti con WF in ServiceHost di WCF. Esiste infatti un assembly di nome System.WorkflowServices che espone una classe di nome System.ServiceModel.Activation.WorkflowServiceHostFactory, che non fa altro che creare una istanza di una classe System.ServiceModel.WorkflowServiceHost, che a sua volta rende accessibile un workflow di WF tramite chiamate SOAP via WCF.

A tale scopo è stata anche definita una coppia di nuovi binding NetTcpContextBinding e WSHttpContextBinding per meglio gestire l’associazione (context) tra le istanze dei flussi e l’infrastruttura di comunicazione. Proprio per questo, sfruttando le caratteristiche dell’architettura estendibile e personalizzabile di WF, è stato definito un nuovo runtime scheduler (System.Workflow.Runtime.Hosting.SynchronizationContextWorkflowSchedulerService) che internamente utilizza il SynchronizationContext di System.Threading e il System.Threading.ThreadPool).

Le potenzialità di questo nuovo “mattoncino” sono evidenti: avere logica di business implementata tramite WF ed esposta in modo rapido tramite WCF, senza richiedere a noi poveri sviluppatori di scrivere “quintali” di codice per gestire le istanze dei workflow, la loro persistenza, il loro stato, ecc.

Se avessi avuto queste opportunità nel progetto che usa WF per la gestione della produzione in stabilimento che ho concluso insieme a RoB il mese scorso e che sta andando on-line in questi giorni … beh avrei scritto cordi almeno 15gg di meno …

Avremo modo di tornare più approfonditamente su questi temi sia in post futuri che magari a DevCon.