21.07.2005, 13:56 Uhr
Anwendungen mit Office 2003
Mit Visual Studio 2005 Tools for Office (VSTO 2005) lassen sich auf Basis von Word, Excel und Outlook clevere Lösungen für die Büro-Automation entwickeln.

SCREEN 1: Ein Office-Dokument kann mittels VSTO in der Funktionalität erweitert werden. (Illustration: cw/thü)
Smart Clients bieten eine elegante Kombination der Vorteile aus der Thin- und Fat-Client-Welt und empfehlen sich als ideale Plattform für die Anforderungen an heutige Anwendungen: eine reichhaltige Benutzeroberfläche, Verteilung der Rechenlast auf Client und Server, mit der Möglichkeit, zeitweise offline arbeiten zu können, und ein einfaches Management (siehe auch Artikel Seite 50). Die Grundsteine für Smart Clients im Microsoft Office-Umfeld wird von Visual Studio 2005 Tools for Office gelegt. Es bildet den zentralen Dreh- und Angelpunkt für die Entwicklung von Office-basierten Lösungen. In der aktuellen Version 2003 werden die Office-Anwendungen Word und Excel 2003 unterstützt; dies wird auch für die Version 2005 der Fall sein. Da-rüber hinaus hat Microsoft vor kurzem auf der TechEd in den USA die Unterstützung für Outlook angekündigt.
Moderne Bürolösungen
Die Office-Programmierung spielt sich heutzutage kaum mehr im häuslichen Umfeld ab. Vielmehr benötigen Unternehmen eine umfangreiche, flexible und vor allem an die gegebenen Umstände anpassbare Dokumentenverarbeitung. Innerhalb eines auf Office basierenden Workflows werden nicht nur benutzerdefinierte Schaltflächen in Word-Dokumenten und individuelle Dialoge, sondern weiterführende Möglichkeiten benötigt, um Unternehmensdaten auswerten und visualisieren zu können (Screen 1).
Listing 1:
private Office.CommandBarButton CreateBtn(Office.CommandBar Parent, string Caption) {Office.CommandBarButton CBarButton = null;try {CBarButton = (Office.CommandBarButton)Parent.Controls.Add(Office.MsoControlType.msoControlButton, "CBarButton", Type.Missing, Type.Missing, true);CBarButton.Caption = Caption;CBarButton.Visible = true;}catch(Exception e) {MessageBox.Show(e.Message, e.Source,MessageBoxButtons.OK,MessageBoxIcon.Error);}return CBarButton;}
VSTO macht die Office-Programmierung salonfähig: .NET-Entwickler können Office-Anwendungen in der gewohnten .NET-Sprache implementieren und werden durch ihr Lieblingstool Visual Studio weit reichend unterstützt. Dadurch, dass die Laufzeitumgebung von VSTO auf dem .NET Framework aufsetzt, haben sie umfassenden Zugriff auf dessen Leistungsmerkmale. Mit diesem Gedanken im Hinterkopf wird klar, dass VSTO VBA nicht verdrängt, sondern die durch VBA vorhandenen Möglichkeiten erweitert und auf die Enterprise-Ebene bringt. Man muss sich VSTO so vorstellen, dass eine .NET Assembly beim Laden eines Office-Dokuments unsichtbar im Hintergrund ausgeführt wird. Die Assembly ist Teil des Office-Dokuments und wird nicht als eigenständige Anwendung betrachtet. Diese Funktionalität wird durch einen Loader ermöglicht.In der Version 2005 der Visual Studio Tools for Office (Stand Beta 2) werden die Office-Anwendungen Word und Excel - später auch Outlook - innerhalb der Entwicklungsumgebung Visual Studio gehostet (Screen 2).
Im Designer der IDE kann also mit Office-Anwendungen gearbeitet werden, und es «fühlt sich so an», als würde man eine Windows-Forms-Anwendung erstellen. Sogar die Toolbars der Anwendungen werden dargestellt und sind voll funktionsfähig.
Programmieren mit VSTO 2005
Mit VSTO 2005 Beta 2 kann man Steuerelemente aus dem Bereich Windows Forms ebenso verwenden, wie neue View Controls für Office. Die grosse Diskrepanz zwischen Office- und Windows-Anwendungen wird reduziert. Elemente, wie Zellen, Listen und Bookmarks, werden zu «First Class»-Steuerelementen, die einfach innerhalb des Codes genutzt werden können. Sie bieten Datenbindung (Data Binding) ebenso wie das von .NET-Entwicklern gewohnte Ereignismodell. Innerhalb eines Office-Projekts in Visual Studio 2005 besitzt jedes Office-Dokument eine korrespondierende Codebehind-Datei. In (Screen 2) ist beispielsweise zu sehen, dass dort die Dokumentvorlage WordTemplate1.dot eine Beziehung zur Codebehind-Datei ThisDocument.cs hat. (Listing 1) zeigt einen Code-Ausschnitt, der verdeutlicht, wie (Steuer-)Elemente im Dokument in der Codebehind-Datei dynamisch erzeugt und manipuliert werden können. Auch die aus Microsoft Office 2003 bekannte Document Actions Task Pane wird unterstützt. VSTO stellt dafür ein ActionsPane-Objekt zur Verfügung, welches das Erstellen und Manipulieren der Document Actions Task Pane für Word und Excel wesentlich vereinfacht. Auch das Erzeugen von Smart Tags wird zu einem Kinderspiel. (Listing 2) zeigt, wie sich in wenigen Zeilen Code ein Smart Tag anlegen lässt, das mit einer ActionsPane interagiert.
Listing 2:MyActionsPaneControl1 myApc1 = new MyActionsPaneControl1();private void ThisDocument_Startup(object sender, System.EventArgs e){SmartTag ST =new SmartTag("http://smarttags.avanade.com#SampleSmartTag","SampleSmartTag");ST.Terms.Add("Hello World");Action AddtoActionsPaneAction = new Action("Here comes text.");ST.Actions = new Action[] { AddtoActionsPaneAction };AddtoActionsPaneAction.Click +=new ActionClickEventHandler(AddtoActionsPaneAction_Click);this.VstoSmartTags.Add(ST);this.ActionsPane.Controls.Add(myApc1);}void AddtoActionsPaneAction_Click(object sender, ActionEventArgs e){myApc1.label1.Text = e.Text;}
Trennung von Daten und Ansicht
Im Gegensatz zu VBA und VSTO 2003 ist in der neuen Version das primäre Ziel der Trennung von Daten und Ansicht (View) in Office-Dokumenten deutlich besser umgesetzt. Der Begriff «View» bezieht sich in diesem Zusammenhang auf das grafische Benutzerinterface und das Objektmodell der Office-Anwendung; die «Daten» sind die im Dokument dargestellten Texte, Zahlen und Grafiken. In VSTO 2005 lassen sich nun die Daten direkt manipulieren, ohne das bekannte Objektmodell der Office-Anwendungen nutzen zu müssen. Zum Beispiel muss bei der Manipulation von Daten eines Excel-Dokuments nicht zwingend mit einem Worksheet und den einzelnen Zellen einer Tabelle gearbeitet werden. Vielmehr kann die Programmierung durch Verwendung von so genannten Data Islands recht komfortabel gestaltet werden. Data Islands sind nichts anderes als XML-Dokumente, welche die Daten eines Office-Dokuments beinhalten; dies führt zu einem Schema-orientierten Programmiermodell - mit typisierten Datasets.Daten können an beliebiger Stelle gelagert werden: auf Client- und Server-Seite. Durch ein Caching auf dem Client ist dadurch ein Offline-Betrieb des Smart Clients möglich.
Das neue Modell der Trennung von Daten und View und der Einsatz von Data Islands hat aber noch weit reichendere Konsequenzen. Denn mit der neuen Version von VSTO ist es möglich, auf dem Server die Data Islands innerhalb eines Office-Dokuments zu manipulieren, ohne eine Instanz der betreffenden Office-Anwendung erzeugen zu müssen. So ist es beispielsweise nicht notwendig, Word auf dem Server zu installieren, wenn dort per VSTO Word-Dokumente beziehungsweise die darin enthaltenen Data Islands manipuliert werden sollen. Wenn dann auf dem Client das Word-Dokument geöffnet wird, werden Ansicht und damit die dargestellten Daten mit den Data Islands per Data Binding synchronisiert.
Fazit
Entwickler von Windows-Forms- oder auch ASP.NET-Anwendungen haben bisher die Vorzüge von Visual Studio geniessen dürfen. Mit VSTO 2005 kommen nun endlich auch Entwickler von Office-Lösungen in den Genuss, Dinge wie Debugger, Source Code Control oder auch Datenbindung komfortabel verwenden zu können.
Darüber hinaus kann im Bereich der Sicherheit auch die .NET-eigene Code Access Security benutzt werden. Endanwender oder Administratoren können so entscheiden, welche VSTO-Anwendungen in welchen Sicherheits-Kontext ausgeführt werden dürfen. In einem üblichen Szenario würde beispielsweise eine .NET-Assembly einer VSTO-Anwendung auf einem Netzwerk-Share abgelegt werden, während das Office-Dokument selbst auf der lokalen Maschine vorhanden ist (vielleicht per Email dorthin gesendet). Die .NET-Assembly und das Dokument sind verheiratet, indem im Office-Dokument selbst entsprechende Meta-Informationen hinterlegt sind. In diesem Zusammenhang bereitet das von VSTO unterstützte «Click-Once»-Deployment kleinere Schwierigkeiten. Denn hier ist dann die Verteilung beziehungsweise das Einrichten einer entsprechenden (CAS-) Sicherheits-Policy notwendig; es bleibt also nicht bei einem «Click-Once», sondern eher (mindestens) ein «Click-Twice».
Die versprochenen (und bisher in Beta 2 zu sehenden) Erweiterungen in VSTO in der Version 2005 bringen erhebliche Fortschritte für die Entwicklung von Enterprise-Lösungen im Office-Bereich. Es werden allerdings auch hohe Ansprüche an die Client-Maschinen gestellt, denn dort müssen das .NET Framework 2.0, die VSTO-Runtime und Office Professional Edition 2003 installiert sein.
Der Autor:Jörg Freiberger ist Associate Principal Consultant im Bereich .NET Solution Develepment bei Avanade Deutschland. Jörg Freiberger