La faccenda di Oslo comincia a farsi più chiara, purtroppo non per gli speaker che stanno dando troppi concetti per scontato ed infatti tra gli attendees le voci sulla poca chiarezza sono sempre più forti.
La chiarezza me la sono fatta stressando alcune persone del team nello spazio exhibitors.
Olso permette, grazie al neonato linguaggio M, di definire due cose:
- uno schema che definisce la forma dei dati
- una grammatica che permette di definire un DSL per manipolare questi dati
Attualmente la parte di definizione dello schema permette di avere come repository solo SQL Server ma in futuro questo verrà esteso con molti altri "provider". Il modello dati (da non confondersi nel modo più assoluto con il modello ad oggetti considerato che M non è un linguaggio OOP) permette di definire 1:1 come sono definiti i dati dentro un 'container' (SQL Server nel nostro caso) e come sono le relazioni tra questi.
In pratica posso definire un nuovo tipo (equivalente di una tabella di un db) composto da una serie di informazioni (per esempio id, nome, etc.) che definiscono le colonne della tabella. Il linguaggio permette di definire tipi complessi e le relazioni dei tipi. Tutte queste cose vanno viste come le astrazioni che un normale linguaggio di programmazione ha nei confronti della piattaforma hardware.
Se M è il "linguaggio C" di SQL, un tipo in M è paragonabile ad una struct del C. Ricordo ancora una volta che M non è OOP e definisce solo dei value type ... qui si parla di dati e basta.
Per la cronaca M consente anche di creare view dei dati e di eseguire query usando la sintassi Linq.
Questo è stato il topic della sessione di Chris Sells e Martin Gaudgin (vecchie conoscenze del sottoscritto all'epoca della mailing list su DCOM nella fine anni 90).
I concetti fondamentale su cui stresso anche durante i miei corsi sono: type system e metadati, due problemi con cui il mondo dell'informatica deve fare i conti più pesanti. La compilazione di M crea un bel file .mx che contiene sostanzialmente metadati che sono fondamentali per poter descrivere il modello dei dati. La presenza di questo livello di astrazione consente di separare totalmente le differenze di type system tra mondo dei DB e del Framework.NET.
Type System e emetadati sono le motivazioni che hanno portato alla creazione di tecnologie come COM, Corba, Java e .NET Framework.
Che ci faccio con tutto questo? Gli speaker mostrano i tool di Oslo e tra questi uno che permette di creare da .mx il file di Entity Framework (ecco dove volevano arrivare!) e nei bit sono presenti ovviamente altri tool tutti da scoprire.
Vogliamo andare oltre? ok :)
Che ci faccio con i dati? Non si era detto che Olso permetteva di creare dei DSL per creare delle regole di manipolazione dei dati. È così che la persona del team mi ha mostrato la parte di grammar.
Prima abbiamo scritto la frase testuale "create a word document dated 10/29/2008" e grazie ad M che ha le capacità di un linguaggio funzionale, ha scritto le regole di parsing che hanno permesso di:
- istanziare il tipo document
- assegnargli l'enumeratore "Word" nel suo tipo
- assegnargli una data di creazione
- assegnargli un Id Guid (aveva creato un int identity ma gliel'ho fatto cambiare con un guid ;-) )
- inserire l'ambaradan dentro il db (viene generata la insert automaticamente)
Infine da una console application possiamo istanziare una sorta di runtime che ci permette di usare tutto ciò e se volete mappare questi dati alle vostre entity con la Persistance Ignorance, detto fatto, c'è Entity Framework.
Tanto per capirci ho avuto conferma che con la parte di DSL è possibile (ed è tra gli esempi dell'SDK) costruire un nuovo linguaggio con tanto di for, if, etc. etc. che viene parsato ed eseguito.
Signori questo è Oslo e se la cosa vi piace:
- L'architettura dati va ripensata ed è una evoluzione di quella rivoluzione iniziata da Linq
- Provvede ad uno strato di astrazione dai dati che è prezioso come l'oro
- Permette il versioning sulle varie versioni dello schema
- Fornisce metadati che ci permettono di pluggare di tutto di più
- Ci da la possibilità di creare un DSL specifico ma se ci basta una delle grammar fornite da Microsoft, questa parte è già pronta.
Bene, ora basta con la teoria perché non c'è nulla di meglio che sbatterci la testa con i bit sotto le dita.