Con i Visual Studio Tools for Office 2005 (VSTO2005) sono state introdotte delle funzionalità molto interessanti che non facevano parte della versione 2003 dei VSTO.
Cominciamo dicendo che le novità hanno toccato diverse aree come:
- maschera progetti
- il designer visuale
- nuovi controlli
- supporto actions pane
- data programming e data binding
- data caching
- programmazione server-side
Maschera progetti
La prima cosa che solitamente viene fatta dopo avere installato Visual Studio.NET Beta 2 è creare un progetto di qualsiasi tipo e così ho fatto io. Dall’esperienza dei VSTO 2003 mi aspettavo che nella form New Project ci fosse un menu other project type dove trovare i template delle soluzioni office, ma così non è stato. Espandendo il nodo dei progetti C# troviamo una nuova voce di menù: Office. La versione 2005 dei VSTO e tutti i template di progetto sono già installati di default con l’ambiente di sviluppo. Tra i template presenti troviamo anche quello che ci permette di creare soluzioni basate sui template di Excel ( non presente nella versione VSTO 2003).
Una differenza sostanziale è stata introdotta nell’organizzazione logica delle soluzioni basate su Word ed Excel. Le soluzioni Word basata sui VSTO 2005 presenta un code-behind per ogni documento (.doc) o template di documento (.dot) del progetto mentre le soluzioni Excel hanno un solo code-behind per il workbook, ma hanno file di code-behind separati per ogni worksheet.
Designer
La possibiltà di poter editare e modificare un documento Word o inserire formule in un foglio di Excel direttamente dall’ambiente di sviluppo è uno dei cambiamenti più evidenti che sono stati introdotti dai VSTO 2005. Sia Word, sia Excel sono stati integrati all’interno di Visual Studio ed è possibile inoltre utilizzare tutte le funzionalità native di ognuna delle applicazioni office per gestirne il layout e altre operazioni che facciamo ogni giorno con questi strumenti.
Per esempio: l’unico modo per creare una tabella su un documento Word con i VSTO 2003 è quello di scrivere del codice utilizzando gli oggetti di Word, con i VSTO 2005 basta selezionare dal menù di Visual Studio Table – Insert – Table. I menù standard di Word o di Excel vengono visualizzati sulla barra dei menu di Visual Studio quando un documento è aperto nel designer.
Nuovi controlli
Rispetto alla versione 2003, adesso abbiamo la possibilità di inserire i controlli presenti nella Toolbox di Visual Studio sul documento, modificarne le proprietà e gestirne gli event handler. Tutto questo in modalità design, proprio come se il documento fosse una Windows Form.
I controlli windows forms generalmente hanno le stesse funzionalità che si hanno sulle Windows Form, con alcune differenze:
· non è possibile settare il Tab Order dei controlli presenti su un documento;
· non è possibile utilizzare controlli di raggruppamento come i GroupBox, con il piccolo svantaggio di dover scrivere un po’ di codice per gestire dei radio buttons.
La possibilità di inserire controlli windows su un documento Word o su un foglio di Excel riduce drasticamente le differenze che c’erano tra lo sviluppo di applicazioni Windows e lo sviluppo di applicazioni basate sui VSTO.
Altra interessante novità riferita ai controlli sono i View Controls. I View Controls sono nuovi controlli che estendono gli oggetti nativi di Office, come gli oggetti Ranges, Cells, Bookmarks, che con la versione 2005 dei VSTO espongono eventi ed hanno funzionalità di data binding. Questi controlli sono presenti nella Toolbox di Visual Studio.
Supporto Actions Pane
La vesione 2003 di Office ha introdotto la possibilità di sviluppare smart document, che permette di creare ed agganciare ad un documento Word o ad un foglio di Excel, delle funzionalità custom all’inteno di un Document Action task pane, fornendo agli utenti delle funzionalità aggiuntive per lavorare con i documenti. Chi ha sviluppato smart document con la versione 2003 dei VSTO si ricorderà che occorreva implementare l’interfaccia ISmartDocument e scrivere codice facendo largo uso dell’istruzione switch o Select Case a seconda dei gusti; i VSTO 2005 Beta 2 introducono l’oggetto ActionsPane, che è un’implementazione del Document Actions task pane, la quale permette la creazione di actions pane personalizzati in modo molto semplice:
Button bt = new Button();
bt.Text = "Bottone";
this.ActionsPane.Controls.Add(bt);
Questa nuova feature ci permette quindi di creare degli user control per poi aggiungerli all’Actions Pane e programmare gli eventi come si farebbe per un’applicazione Windows Forms.
Data Programming e Data Binding
Uno degli obiettivi primari delle soluzioni basate sui VSTO 2005 è la separazione dei dati dal documento (View). I dati di un documento sono i numeri, il testo e così via, mentre la parte View è riferita all’interfaccia utente delle applicazioni Office e al suo object model.
Tranne che per la capacità di mappare un XML a varie celle e range i documenti Word 2003 e i fogli di Excel 2003, per propria natura, non hanno il concetto nativo di separazione dei dati: tutto è sempre contenuto all’interno del documento.
I VSTO 2005 sfruttano il concetto di “XML data island” per ottenere questo tipo di separazione, abilitando gli sviluppatori a scrivere codice di aggiornamento dati senza modificare il codice dello strato View tramite dei data set “tipizzati” mappati sull’XML data island.
Il data binding dei VSTO 2005 funziona allo stesso modo del data binding delle Windows Forms.
Questa nuova funzionalità permette di fare il drag and drop di data source tipizzati sul documento e automaticamente vengono inclusi i controlli che sono agganciati alla sorgente dati.
Facendo un esempio, tramite la nuova finestra Data Sources (Menu Data, poi Show Data Sources – Shortcut: Ctrl+Alt+D) se trasciniamo la tabella Categories di un data source (NortwindDataSet) creato all’interno di un documento Word 2003, i Visual Studio Tools for Office 2005 creano gli oggetti necessari per eseguire il data binding, come l’oggetto DataSet, il TableAdapter e il DataConnector ed in più creano i controlli che a run-time conterranno i dati. Il Binding dei dati può essere fatto in modalità semplice, che significa associare la proprietà di un controllo ad un singolo elemento dei dati, oppure in modalità complessa cioè associare in binding un array di dati.
Tutti i View control supportano la modalità di Binding semplice tranne l’XMLNodes che è un controllo collection e quindi non supporta il data binding. Il data binding complesso è supportato dall’oggetto ListObject View che ha una proprietà DataSource dove è possibile associare una serie di colonne di un DataSet.
Data Caching
Lo store dei dati attraverso il concetto di data island solitamente fornisce un’efficace meccanismo per lo sviluppo di soluzioni Office con scenari off-line. Gli oggetti che contengono i dati vengono messi in cache all’interno del documento stesso con il vantaggio di poter manipolare i dati in modalità disconnessa, fino a che la connessione con la base dati sarà nuovamente disponibile. Ovviamente questo tipo di scenario introduce la necessità di gestire la sincronia dei dati in cache locale con quelli presenti sul server.
E’ possibile abilitare il caching dei data all’interno del documento marcando con l’attributo CachedAttribute le istanze dei data container, per esempio come un dataset:
[Microsoft.VisualStudio.Tools.Applications.Runtime.CachedAttribute()]
internal WordTestCS.NorthwindDataSet northwindDataSet;
Programmazione Server-Side
La separazione fisica tra dati e interfacce ha ridotto notevolmente tutte le problematiche che esistevano quanto sviluppavamo applicazioni Office e ne facevamo il deployment sul server. La programmazione server-side offre la possibilità di manipolare dati di un documento senza utilizzare Office 2003, usando la classe ServerDocument. Si nota subito come questa funzionalità renda scalabile una applicazione basata su Office 2003, ad esempio offrendo la possibilità di creare un documento Word da un’applicazione asp.net.
Possiamo concludere dicendo che finalmente possiamo scrivere applicazioni Enterprise basate sui Visual Studio Tools for Office 2005 senza aver bisogno di installare Word o Excel sul server.
Nei prossimi post entrerò nei dettagli di tutte queste funzionalità, scrivendo un pò di codice ed entrando nel vivo dell'azione ;)
Ciao a tutti
Gianluca
?>