VSTO-V3, Onderdeel van Visual Studio 2008
De derde versie van VSTO (Visual Studio Tools for the Office System, in de volksmond soms uitgesproken als ‘Visto’) is uitgegroeid tot een volwassen toolkit voor het snel en efficiënt ontwikkelen van zogenaamde Office Business Applications (OBA’s). De toolkit is uitgegroeid van een verzameling losse installers en runtimes met beperkte mogelijkheden tot een zeer krachtig en volledig in Visual Studio 2008 geïntegreerd product dat gebruik kan maken van de gangbare technologieën zoals WCF, WPF en LINQ.
Deze versie van de toolkit is voor het eerst geschikt voor Office 2003 en alle versies van Office 2007. Omdat VSTO nu deel uitmaakt van Visual Studio 2008 hoeft de developer niet apart de portemonnee te trekken voor een uitbreiding op Visual Studio of een duurdere Office versie aan te schaffen.
De developer hoeft niet apart de portemonnee te trekken voor een uitbreiding op Visual Studio
In dit artikel wordt uiteengezet wat de nieuwe features zijn voor VSTO in Visual Studio 2008 en het kan dienen als basis voor een serie technische artikelen waarin elk van deze nieuwe technieken worden uitgelegd en gedemonstreerd.
Geschiedenis
Office ontwikkeling was voorbehouden aan de zogenaamde VBA (Visual Basic for Applications) ontwikkelaars en deze werden doorgaans niet gezien als ‘echte’ ontwikkelaars. Het voordeel echter was dat op eenvoudige wijze snel en eventueel door gebruik te maken van de Macro Recorder toepassingen ‘in elkaar konden worden gedraaid’ die voor kantoorafdelingen wel degelijk zeer productief en kostenbesparend bleken te zijn.
VSTO 2003
Ergens rond de eeuwwisseling verscheen daar echter het fenomeen .NET aan de horizon en de toekomst van VBA werd elk jaar minder zeker. Langzamerhand raakten ook meer ontwikkelaars thuis in de nieuwe ontwikkelmogelijkheden van het .NET platform en er werden nieuwe eisen gesteld. Tot op dat moment werd er nog steeds gezocht naar goede methoden voor het ontwikkelen van Office toepassingen en daar verscheen de eerste versie van Visual Studio Tools for the Office System op het toneel. Deze versie deed een poging om Office in de managed code omgeving te brengen en was nog beperkt in zijn functionaliteiten. De versie maakte het voor het eerst mogelijk om ‘customizations’ aan te brengen aan Word en Excel documenten. De security/beveiliging was op dat moment, net als bij zijn opvolger, zeer strikt geregeld.
VSTO 2005
Ten opzichte van de beperkte eerste versie, die slechts ondersteuning bood aan Word 2003 en Excel 2003 document customizations, worden VSTO 2005 de customizations uitgebreid voor Infopath en Outlook 2003. Niet al te schokkend dus, maar de kracht van deze versie ligt in de functionele uitbreiding waarbij het mogelijk wordt om vanuit de Visual Studio 2005 IDE de Word en Excel documenten te modelleren en op de documenten zogenaamde Host Controls aan te brengen en de documenten te voorzien van ‘slots’ om Cached Data in op te slaan. Ook werd het mogelijk om Custom ActionPanes aan te brengen en werd een eerste poging gedaan om de documenten aan de server-zijde te benaderen met het ServerDocument interface.
Op het gebied van security en deployment blijkt deze versie echter in een regelrecht probleemgebied terecht te zijn gekomen. Ontwikkelaars die tools en customizations in zeer korte tijd konden ontwikkelen, hadden de grootst mogelijke problemen om de tools uitgerold te krijgen vanwege de zware beveiligingseisen.
VSTO 2005 SE
Omdat het Trinity (VSTO) Team qua release strategie in een spagaat leek te zitten tussen het Visual Studio Team en het Office System Team, moest er worden gezocht naar een manier om klanten van tools te voorzien die bestemd waren voor de actuele (nieuwe) Office set.
Op het moment dat Office 2007 aan de fabrikant werd vrijgegeven om in de markt te gezet te worden was Visual Studio pas halverwege zijn release strategie voor de aankomende versie. Dit hield in dat het uitrolschema van Office 2007 en Visual Studio 2008 niet op elkaar aansloten. Je begrijpt dat op het moment van uitrollen van Office 2007 ook werd verwacht dat er nieuwe ontwikkeltools zouden verschijnen en er niet kon worden verwacht van gebruikers dat deze nog anderhalf tot twee jaar zouden moeten wachten op een volgende Visual Studio versie, alvorens ze verder konden gaan met het ontwikkelen van nieuwe toepassingen of het migreren van hun bestaande toepassingen naar de zojuist uitgebrachte Office 2007 release.
Hier komt VSTO 2005 SE (Second Edition) dus op tafel. Het ontwikkelteam – welke onderdeel is van de Developer Division, verantwoordelijk voor de Visual Studio release strategie – wijkt af van de Visual Studio release cycle en men besluit om een interim release in de markt te zetten die het mogelijk maakt om naast de Office 2003 applicaties ook Office 2007 applicaties te voorzien van Application Level customizations en het tevens mogelijk te maken om bestaande VSTO 2005 toepassingen onder Office 2007 te laten werken.
VSTO 2008
VSTO 2008, de derde versie, is zoals eerder al vermeld volledig geïntegreerd in Visual Studio 2008. Door deze naadloze aansluiting bij de omgeving van Visual Studio zijn feitelijk alle grenzen verdwenen en kan gebruik gemaakt worden van de mogelijkheden die het .NET framework aan de applicatieontwikkelaar biedt.
In deze versie kunnen dus eigenlijk alle denkbare toepassingen worden ontwikkeld met als groot verschil ten opzichte van ‘gewone’ toepassingen dat deze zijn gespecialiseerd in de aansluiting met het Office System.
De lancering zal wereldwijd eind februari plaatsvinden
De lancering van deze versie zal wereldwijd voor het grote publiek eind februari plaatsvinden, maar VSTO 2008 kan door de MSDN abonnees al worden gedownload. Mensen die geen beschikking over MSDN willen of kunnen hebben, hebben de mogelijkheid om tot de lancering gebruik te maken van de trial versie welke negentig dagen is te gebruiken om vervolgens over te stappen op de release versie.
Hieronder worden de onderdelen die kenmerkend zijn voor VSTO 2008 worden per stuk uitgelicht.
Document Customizations
VSTO 2008 is de eerste versie waarmee werkelijke Office 2007 document customizations kunnen ontwikkeld. Dit in tegenstelling tot VSTO 2005 SE waarmee slechts de in VSTO 2005 ontwikkelde document customizations in ‘compatibiliteitsmode’ onder Office 2007 bleven werken.
Application Customizations (Add-ins)
Naast de document customizations biedt VSTO 2008 voor de meeste Office client-applicaties de mogelijkheid om application customizitions te bouwen voor Office 2007.
Ribbon Designer
Tot voor kort moesten de Fluent UI interface, zoals de Ribbons in Office met een duur woord genoemd werd, met de hand worden aangemaakt. Met de bewerkelijke handelingen van het aanmaken en aanpassen van moeilijk te doorgronden XML bestanden was het mogelijk om voor een toepassing een Ribbon te definiëren. Vanaf nu kan deze Ribbon worden gedefinieerd met behulp van de Ribbon Designer. Daar is het mogelijk om een Ribbon aan te maken en tegen het object model daarvan te praten. Ook is het mogelijk om vanuit deze Ribbon Designer een export te doen zodat je alsnog het XML bestand krijgt waarin naar wens aanpassingen kunnen worden gedaan. Deze designer maakt het leven van de Office ontwikkelaar een stuk eenvoudiger. Er is voor gekozen om deze designer op gelijke wijze te laten functioneren als de Windows Forms Designer, zodat je ook hier met een dubbelklik op de button die je op het de ribbon hebt getrokken een kant en klare Handler definieert waaraan je eigen code kunt toevoegen.

Fig. 1: Ribbon Designer
Custom Task Pane Designer
Ook bij de TaskPane Designer komt een bekend gevoel naar voren. Ook met deze designer ontwikkelt de ontwikkelaar de User Controls als waren het de gebruikelijke Dialogs of Forms. Het verschil is uiteraard dat er op eenvoudige wijze met de Office applicatie of het Office document kan worden gecommuniceerd, omdat vanuit de designer en de bijbehorende code-view het object model van applicatie of document tot je beschikking staat.
Form Region Designer
Voor Outlook is er de Form Region Designer ontwikkeld waarmee met behulp van wizards een pad wordt doorlopen om te bepalen waar de Form zich manifesteert en in welk gebied (Mail, Notes, Meeting ...). Er kan door middel van de wizard worden gekozen of een Form Region het complete berichtgebied afdekt, of b.v. slechts de onderkant van het oorspronkelijke form. Op eenvoudige wijze kan dus de interface van Outlook naar wens worden aangepast.

Fig. 2: Outlook Form Regions Wizard
Workflow en SharePoint support
Waar het in VSTO 2005 een heidens karwei was om een Workflow ook maar aan de praat te krijgen vanwege de vele configuratiebestanden en allerlei andere factoren waar het mis kon gaan, is in VSTO 2008 de Workflow en SharePoint support aangebracht. Hiermee is het testen en debuggen van de workflow een heel stuk eenvoudiger geworden. Na het opbouwen van de workflow in de Workflow Designer kan door een enkele druk op de knop - de compile en debug knop - in één run de Workflow worden gecompileerd en geïnstalleerd op de opgegeven SharePoint omgeving.
Uiteraard is het nog wel zaak dat er een flinke dosis SharePoint kennis nodig is om goede SharePoint toepassingen te bouwen maar vergeleken met de vorige versie zijn ook hier heel wat pijnpunten verdwenen.
Word Content Controls
Ken je ze nog, de oude Bookmarks? In Office 2007 zijn daar de Word Content Controls bijgekomen, min of meer ter vervanging van de wat minder stabiele Bookmarks. Niet alleen zijn de Word Content Controls qua uiterlijk een stuk fraaier dan de Bookmarks, maar ze zijn nu ook als Host Control door middel van Drag and Drop op te nemen op het host document.
De Content Controls kunnen worden gebruikt voor bescherming van de inhoud door de inhoud van de control niet wijzigbaar te maken, de control kan worden gekoppeld aan data middels de Data Binding features en je kunt ze laten reageren op events. Op de printer zie je niet dat het controls zijn en je kunt ze voorzien van allerlei hulpmiddelen zoals de Date Picker voor invoer van een datum. Veel van dit gedrag is standaard voor de Word Content Control maar VSTO 2008 maakt het mogelijk om alles programmeerbaar te maken.

Fig. 3: Word Content Controls
VBA en VSTO interactie
VSTO routines kunnen met versie drie beschikbaar worden gemaakt voor VBA. Dit houdt in dat VSTO een extra reference aanbrengt in de VBA omgeving waardoor alle publieke interfaces welke zijn gedefinieerd binnen de ontwikkelde VSTO applicatie ook zichtbaar worden voor de ‘buitenwereld’ (ofwel de VBA IDE). Op die manier wordt het mogelijk om functies of procedures te maken in managed code in de .NET taal van je eigen smaak en vervolgens roep je deze aan vanuit de VBA omgeving.
Omgekeerd is dit ook mogelijk: je roept vanuit de VSTO omgeving een door jou ontwikkelde VBA procedure aan en keert daarna weer terug in de VSTO routine.
Het voordeel van dit alles is dat er kan worden besloten om geleidelijk delen van de Office toepassing vanuit VBA te migreren naar de .NET omgeving en niet alle gedane investeringen naar de prullenbak te verwijzen.

Fig. 4: VSTO naar VBA interoperability
ClickOnce Deployment
Als laatste onderdeel komen we, zoals gebruikelijk bij software ontwikkeling, bij de uitrol van de software.
Voer in Google eens de termen CASPOL en VSTO in en je zult tot de conclusie komen dat er heel wat mensen in de problemen zijn gekomen bij het uitrollen van een VSTO toepassing bij voorgaande VSTO versies. In deze nieuwe versie is voor de deployment het ClickOnce principe toegepast.
ClickOnce maakt het mogelijk om op een eenvoudige maar veilige manier de VSTO add-ins en document customizations uit te rollen. Er kan gebruik worden gemaakt van lokale, HTTP, UNC, CD, DVD en USB locaties van waaruit kan worden geïnstalleerd.
In deze nieuwe versie is voor de deployment het ClickOnce principe toegepast
ClickOnce brengt met zich mee dat ook offline situaties worden ondersteund, omdat bij het ontbreken van een verbinding gebruik wordt gemaakt van de ClickOnce cache en zodra er een verbinding ontstaat en een nieuwe versie wordt waargenomen, deze optioneel of geforceerd geïnstalleerd kan worden. In geval van calamiteiten kan zelfs besloten worden om een versie rollback door te voeren.
Een ander aspect van de ClickOnce deployment is dat je kunt aangeven of de diverse runtime onderdelen zoals het .NET framework of bijvoorbeeld SQL Express runtimes bij installatie via het internet moeten worden gedownload of als optie al geïnstalleerd moeten staan.
De frequentie waarop wordt gekeken of een nieuwe installatie beschikbaar is voor de ontwikkelde toepassing van het gebruikte document, is door de ontwikkelaar instelbaar. Indien gewenst kan worden besloten om niet te laten controleren op nieuwere versies en altijd gebruik te maken van de versie die op dat moment geïnstalleerd staat.

Fig. 5: ClickOnce Deployment
Conclusie
In dit artikel is, zonder in code te duiken, uiteengezet hoe de Visual Studio Tools for Office vanuit zijn eerste versie zijn uitgegroeid van klein aantal hulpmiddelen tot een set gereedschappen om volwaardige en productiviteit verhogende Office Business Applications te ontwikkelen die kunnen dienen ter ondersteuning van de bedrijfsvoering. Tevens zijn daarbij in het laatste deel van het artikel in helikopterview de nieuwe onderdelen de revue gepasseerd. Hopelijk ben je hiermee voorzien van voldoende informatie om je zelfstandig te kunnen verdiepen in al deze nieuwe mogelijkheden.