Directed Graph Markup Language: che cos’è?
Directed Graph Markup Language. Suona strano vero?
E’ una delle grosse novità di Visual Studio 2010 Ultimate Edition (e parzialmente della Premium, vedremo dopo il perchè). Vi ricordate, quando ancora si chiamava Architecture Edition, la possibilità di fare graficare le dipendenze di classe, oppure di visualizzare tutti gli assemblies in un grafico?
Bene, tutto quello è gestito da codice di markup, in modo similare a Windows Presentation Foundation o Windows Workflow Foundation, il DGML.
Un nuovo documento (in .dgml ovviamente) si crea tranquillamente dall’Architecture Explorer.
Questa è la guida delle “gestures” da usare con il mouse:
Notiamo anche che:
Dunque anche quella pagina è fatta in DGML! Come conferma anche il titolo della Tab.
Questo è lo scheletro di un progetto DGML:
Ma ora mettiamo le mani nel codice! Premetto che, per le funzionalità base del linguaggio, ciò che bisogna sapere è l’uso dei link. Poi abbiamo altri oggetti, ma il link è quello fondamentale.
Un link ha come proprietà fondamentali:
- Source, ossia da quale elemento deve partire il link
- Target, ossia l’elemento di arrivo
Vediamo cosa accade utilizzando questo snippet di codice molto intuitivo:
Questo è il risultato renderizzato in Visual Studio 2010:
Ovviamente si possono fare anche relazioni multiple, come questa:
O questa:
Oltre ai links (che hanno anche molte altre proprietà, come i colori e delle label da applicare), che sono l’unità fondamentale del DGML, abbiamo anche altri due elementi, ossia le Categories e i Nodes.
Le Categories permettono di raggruppare in modo semplice alcune proprietà che si ripetono in molti links. Eccone un esempio rapido:
Infine abbiamo i nodi, che sono dei contenitori grafici per i vari links. Eccone ancora un esempio (notare l’uso delle Categories, e di come le proprietà vengano riadattate):
Osserviamo il codice:
Le categorie che avevo impostato prima (CT1 e CT2) vengono ereditate direttamente dai nodi. Scrivendo nell’editor “Category=”Contains”” automaticamente viene creata la nuova proprietà che fa contenere ai nodi gli elementi corrispondenti. Io per semplicità ho usato per entrambi Contains, ma nulla vieta di crearne ad hoc. L’unico “constraint”, se cosi vogliamo chiamarlo, è il dover creare un link che abbia come Source il nome del nodo, e come Target il primo elemento di esso.
A mio avviso DGML rappresenta un modo molto flessibile di rappresentare un’architettura, considerando anche che è integrato all’interno di Visual Studio Ultimate.
Si, prima ho anche accennato alla Premium. Nella Premium è possibile aprire i grafici DGML in sola lettura. E chi non ha nemmeno la Premium? Si esportano come immagine o XPS
Alla prossima!
October 29th, 2009 - 00:45
Grandissimo! Tu hai sempre 5 assi nella manica