WinFX: WCF, WWF, Linq, WinFS

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

Windows Workflow Foundation

Il nome non lascia spazio a molta fantasia: Windows Workflow Foundation è la parte che in WinFX è dedicata alla costruzione di architetture basate su workflow.

Nello specifico, WWF è distribuito già come beta 2, con tanto di licenza GoLive (che consente cioè di usare in produzione WWF).

WWF basa il proprio funzionamento su quelle che sono definite Activities, cioè attività da eseguire durante il flusso definito all'interno di un designer che è anche integrato in VS 2005 (e lo sarà ancora maggiormente con la prossima release di Visual Studio, che al momento è in alpha con il nome in codice di Orcas). Proprio il designer è il punto di forza di WWF, perché consente di definire flussi logici anche complessi in maniera visuale, modellando poi se necessario il funzionamento nello specifico dei vari nodi attraverso codice applicativo. Sono inclusi anche alcuni template, tra cui uno che fornisce già le funzionalità per costruire macchine a strati.

Dicevamo delle Activities: di default ce ne sono diverse, che sono pensate per gli scenari più diffusi: invocare un web services, recuperare informazioni da un database, inviare e-mail, effettuare chiamate HTTP.

Ovviamente WWF è in grado di sfruttare anche le altre tecnologie di WinFX, come WCF, e trova una comoda base di utilizzo anche in applicazioni ASP.NET, soprattutto del settore finance o commerciale, in tutti quegli scenari dove i flussi logici dietro ad un'operazione possono essere anche complessi, con molte varianti e combinazioni.

L'altro concetto da tenere a mente con WWF è infatti quello delle Rules, ovvero delle regole che governano il flusso da noi definito. Esiste un vero e proprio Rule Engine, che può essere ovviamente esteso per aggiungere regole extra, che ad esempio implementino quelle che sono le regole della nostra business logic.

WWF è probabilmente la parte che in WinFX sarà usata maggiormente in scenari Enterprise, dato che è possibile creare flussi complessi, che possono praticamente essere adattati a qualsiasi necessità.

E' ad esempio possibile scrivere servizi che inviino e-mail e siano in grado di analizzare la risposta ricevuta, proseguendo il flusso solo quando venga ricevuta una riposta.

Più in generale, come tutti i componenti di WinFX, WWF è un insieme di managed code che consente, attraverso API, di essere sfruttato da qualsiasi applicazione managed. Ed è sempre possibile, all'interno di un workflow, eseguire codice.

Il che rende WWF semplice e potente al tempo stesso.

Linq e DLinq: quando il compilatore cambia forma

E' senza dubbio uno dei pezzi di WinFX attorno a cui il dibattito è più acceso e controverso. Linq è essenzialmente un approccio per dare una parvenza di object orientation all'accesso ai dati, in modo particolare per quanto riguarda le funzioni di query.

Più che un ORM, Linq può essere considerato un ottimo sistema per avere un object-to-relation persistence model che consenta un approccio strongly typed e type safe anche per il modello relazionale. Quest'ultimo ha dalla sua un'enorme diffusione, una tutto sommato vasta base di accettazione, ma non si sposa benissimo con il modello ad oggetti che siamo abituati ad utilizzare oggi, sia con il .NET Framework che con altre tecnologie, come Java o Python.

Dunque Linq, che sta per .NET Language Integrated Query, è un insieme di estensioni ai linguaggi che rende possibile annegare dentro la definizione delle classi anche codice che serve per interrogare collezioni usando una sintassi che è un misto tra SQL ed un approccio object oriented.

L'obiettivo principale di Linq è quello di rendere il più object oriented possibile il modello relazionale, creando un layer (automatico, dove possibile) di persistenza dei dati sotto forma di oggetti.

Il risultato è senza dubbio simile a quello che gli ORM, come NHybernate, consentono di fare, ma l'approccio è differente. Con gli ORM viene definito un mapping, cioè una mappatura, tra il modello relazionale, che è quasi sempre un database, ed il modello ad oggetti, nel nostro caso attraverso la generazione di oggetti, all'interno di classi.

In questi casi viene utilizzato un linguaggio simil-SQL che serve per interrogare ed il vero vantaggio è quello di poter trattare i dati come oggetti, anche se si è costretti comunque a dover usare ancora SQL, seppure in una sua variante. Chiaramente con questo approccio è il mapper a generare poi le query per i vari database ed il vantaggio per lo sviluppatore è anche quello di poter cambiare la base dati variando solo il mapping e non il codice utilizzato all'interno delle classi, che continuerà ad utilizzare il dialetto SQL dell'ORM.

Linq invece ha un approccio diverso, dovuto al fatto che Microsoft può permettersi di toccare i compilatori e quindi integrare al meglio queste tecnologie all'interno dei propri prodotti.

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

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