Roberto Brunetti

Developing in the cloud

.NET Programming

Archives

Workflow Foundation: Uno Spettacolo !

Chi ci conosce sa che non facciamo pubblicità a prodotti e tecnologie: spesso cerchiamo di evidenziare quanto sia importante conoscere a fondo una tecnologia prima di utilizzarla. Da qualche anno gli strumenti di sviluppo semplificano sempre di più la vita agli sviluppatori, ma è diventato sempre più difficile mettere insieme i pezzi: le tecnologie sono sempre più legate l'una all'altra ed è impossibile sapere tutto di tutto. I prodotti, lasciati ai loro default, funzionano ad un livello medio: non potrebbe essere diversamente. Spesso ci sono oggetti o componenti che vanno benissimo in certi contesti, ma sono assolutamente inappropriati in altri; tanto per cambiare mi vengono in mente le Session di ASP.NET che utilizzate in contesti molto piccoli non danno nessun tipo di problema e aiutano nello sviluppo, ma portate in applicazioni più serie (voglio anche dire applicazioni in cui occorre sapere cosa c'è nella sessione di ogni utente: ad esempio il carrello della spesa su un sito di eCommerce) sono assolutamente inutilizzabili.

Workflow Foundation rientra in questa categoria di tecnologie: nasce come prodotto per gestire Worfklow (punto). Come tale deve essere impiegato in scenari statefull e stateless, può gestire i processi di Business così come la User Interface. Settimana scorsa ho erogato il nostro corso su WF da un nostro cliente e come è accaduto per tutte le edizioni precedenti, la prima mattina vola via sulle caratteristiche principali; l'impatto sull'audience è notevole e i commenti più blasonati sono "Spettacolo", "Quanto si semplifica lo sviluppo e la manuteniblità", "Utilissimo per dare uno strumento di disegno a chi non scrive codice ma conosce la problematica e lo stesso strumento allo sviluppatore di Activity che eseguire le operazioni fisiche".

Il pomeriggio del primo giorno si riprendono tutti gli argomenti e si comincia a scendere nei dettagli di Hosting e Runtime (senza ancora affrontare i servizi) e la giornata sta per concludersi con l'entusiamo alle stelle visti quanti servizi espone. Si affronta l'argomento asincrono, già perchè Wf lavora in asincrono per default e iniziano i primi dolori :-) Lavorare in asincrono è bello, oltre che efficace.

La mattina seguente si affronta il ManualScheduler che esegue le workflow instance sullo stesso thread del chiamante e la fiducia ritorna ai massimi livelli: ci sono però molte controindicazioni a lavorare in sincrono e il modo con cui si affronta l'hosting in applicazioni server-side (ASP.NET ad esempio) ricomplica anche lo scenario sincrono in quanto per evitare persistenze inutili (e soprattutto pesanti) occorre prestare molta attenzione e scrivendo il codice bene e configurando il runtime e la persistenza nel modo corretto. Tutti i parametri spaventano a prima vista.

Poi si apre lo scenario comunicazioni con l'esterno partendo da Eventi e Metodi di scambio dati con host, che si effettua sempre tramite interfacce, e di seguito si affronta la comunicazione con altri workflow e con servizi ASMX tramite Activity asincrone che si avvalgono di code: a prima vista è una cosa complicata da realizzare e il "terrore" negli occhi dei partecipanti è visibile anche a luce spenta :-) Subito dopo però si evidenziano i benefici di lavorare in questo modo e tutto diventa di nuovo entusiasmante.

Si chiude il tutto (il terzo giorno di solito) con una analisi dei servizi di persistenza, traking, commit e work batch, IPending Work: sui primi la valutazione iniziale è "cacchio", non è esattamente questa l'escalmazione ma ci assomiglia molto soprattutto nelle prime due lettere :-), mentre sugli ultimi due punti ritorna il panico.

Workflow è veramente un gran prodotto: serve solamente una buona preparazione e un po' di pratica; del resto su tutti i prodotti servono questi due ingredienti. Sicuramente si possono fare tanti casini e il prodotto è relativamente nuovo quindi chi non lo approccia nel modo corretto si trova un qualcosa che vive di vita propria; in realtà la configurazione e il corretto utilizzo consentono di fare cose eccellenti.

La nostra prima applicazione su Workflow risale ormai a due anni fa (abbiamo iniziato con la Beta su un progetto reale) e, nonostante le varie prove semplici e lo studio che avevamo alle spalle prima di intraprendere questa strada, Paolo e io abbiamo dovuto spendere un po' di tempo prima di trovare la strada giusta per il tipo di applicazione. A distanza di due anni posso dire che abbiamo preso la strada giusta e alla fine, lo sviluppo, anche nei primi mesi dopo le elucubrazioni di cui sopra, è stato molto più che soddisfacente in termini di produttività e modifiche che abbiamo dovuto fare in corsa causa analisi incompleta. Modificare i flussi da un designer significa risparmiare molto, ma molto tempo, rispetto a dover riprendere in mano centinaia di righe di codice.

Il nostro mondo è bello proprio perchè possiamo lavorare con tecnologie come questa: a mio avviso è il più bel prodotto che sia stato presentato negli ultimi anni e rapprensenta un notevole, per non dire enorme, passo avanti nella scrittura di applicazioni.

Spero di avervi convinto a dare almeno un'occhiata a questa tecnologia.

PS: per chi non ha mai visto questa tecnologia abbiamo pensato ad una sessione di quasi 4 ore alla nostra DevCon 2008 che si terrà a Milano a fine maggio.