Silverlight für VFP Entwickler

Venelina Jordanova, Uwe Habermann

Die meisten VFP Entwickler sind in den letzten Jahren auf der Suche nach neuen Entwicklungswerkzeugen. Während sich einige von uns bereits frühzeitig für andere Entwicklungsplattformen wie Java oder Visual Studio entschieden haben, befinden sich die meisten VFP Entwickler noch immer in der Orientierungsphase. Das Warten hat sich gelohnt! Endlich ist eine Technologie verfügbar, durch deren Anwendung VFP Entwickler die Nase wieder nach ganz vorn bekommen. Die modernsten Benutzeroberflächen mit Animationen, Transitionen und Multi-Touch Unterstützung erstellen, Internet Anwendungen programmieren und weiterhin mit VFP Datenbanken und sogar mit VFP Code arbeiten. Mit Silverlight ist das alles möglich. Mit diesem Artikel starten wir eine Serie von Artikeln, mit denen wir VFP Entwickler mit Silverlight vertraut machen wollen.

Einführung

Bevor wir auf Silverlight näher eingehen, wollen wir das Ziel beschreiben.

VFP Anwendungen heute

VFP Anwendungen entsprechen heute nicht mehr dem neuesten Stand der Technik. Die Benutzeroberfläche der Entwicklungsumgebung von VFP 9 ist auf dem Niveau von Office 97. Mit den erstellten Anwendungen sieht es meist nicht besser aus. Oft sind Menüs und Symbolleisten zur Steuerung der Anwendung vorhanden, die in den letzten 10 oder mehr Jahren nicht verändert wurden. Einige Entwickler verwenden die von DBI mit Sedna kostenlos bereitgestellten ActiveX Steuerelemente, mit denen Menüs und Symbolleisten im Stil von Office 2003 erstellt werden können. Auch ein Navigationsbereich, so ähnlich wie in Outlook, lässt sich mit den DBI Steuerelementen realisieren. Auf diesem Weg lassen sich Benutzeroberflächen erstellen, die „nur“ sieben Jahre alt aussehen. Auf der Codeplex Webseite sind zahlreiche Projekte für VFP frei verfügbar, mit denen modernere Benutzeroberflächen erstellt werden können. Mit der Nutzung von GDI+ lassen sich Formularhintergründe mit Farbverläufen erstellen und anspruchsvolle Geschäftsgrafiken können erstellt werden. Auf Codeplex ist auch eine Multifunktionsleiste im Stil von Office 2007 verfügbar. Wer alle diese Werkzeuge nutzt, kommt zu einer relativ aktuellen Benutzeroberfläche. Aber die Entwicklung bleibt nicht stehen. Mit Office 2010 ist eine neue Multifunktionsleiste verfügbar, bei der die Bedienbarkeit erheblich verbessert ist.

Multifunktionsleiste im Stil von Office 2007 in einer VFP 9 Anwendung

VFP Entwickler erhalten von ihren Kunden immer mehr Anfragen zur Entwicklung von Anwendungen mit reicher Benutzeroberfläche oder zur Entwicklung von Internet Anwendungen. Diesen Anforderungen können wir nicht gerecht werden. Dazu kommt, dass VFP leider nicht weiterentwickelt wird, wie wir alle wissen. Wir müssen uns also nach neuen Entwicklungswerkzeugen umsehen, um die Wünsche unserer Kunden erfüllen zu können. Mit Silverlight haben wir die Möglichkeit dazu.

Das Ziel

Unser Ziel ist es, einen Migrationspfad für VFP Entwickler zu Silverlight zu beschreiben und Werkzeuge zu entwickeln, die diesen Weg erleichtern.

Als Ergebnis schwebt uns eine Silverlight Anwendung vor, die im Internet Browser als Internet Anwendung ausgeführt wird und somit weltweit auf allen Geräten mit Internetanschluss verfügbar ist. Die gleiche Anwendung soll ohne Änderung des Codes als Desktop Anwendung installiert werden können und so auf einzelnen PCs, auch ohne Internetanschluss, eingesetzt werden können. Dazwischen liegen der Einsatz im Intranet sowie der Einsatz als Netzwerkanwendung.

Wir wollen Silverlight Anwendungen entwickeln, die alles können, was VFP Anwendungen können und außerdem natürlich alle Vorteile und Neuheiten von Silverlight nutzen. Es soll möglich sein Datenbankanwendungen zu entwickeln, die auf eine VFP Datenbank oder eine SQL Server Datenbank zugreifen.

Am liebsten wäre uns natürlich, wenn wir auch weiterhin mit VFP die Geschäftslogik und vielleicht auch den Datenzugriff implementieren könnten. Wie wir noch sehen werden, bietet Silverlight die Möglichkeit VFP Code in einem COM Server auszuführen. Spätestens jetzt sollte jeder VFP Entwickler hellhörig werden, denn hiermit gehen alle Träume und Wünsche in Erfüllung.

Eine Neuentwicklung von großen VFP Anwendungen mit Silverlight kommt für die meisten von uns nicht in Frage. Oft stecken viele Mannjahre in den mit VFP entwickelten Anwendungen. An eine Neuentwicklung mit einer noch fremden Umgebung ist nicht zu denken. Trotz aller Vorteile von Silverlight, müssen wir also einen schmackhaften Weg bereiten

Wir müssen einen Weg finden, mit dem VFP Anwendungen weitgehend automatisch nach Silverlight migriert werden können. Wir brauchen Werkzeuge, die diese Migration vornehmen.

Programmierung mit C# soll vermieden werden, aber ganz ohne Code geht es natürlich nicht. Wir wollen ein Vorlageprojekt erstellen, das so generisch ist, dass es von anderen VFP Entwicklern für Geschäftsanwendungen in der Regel nicht verändert werden braucht. Natürlich kann der Code in C# ergänzt und erweitert werden, wenn Geschäftslogik erforderlich ist. Es soll aber auch möglich sein, VFP Code in einem COM Server auszuführen. Der COM Server soll in VFP entwickelte Geschäftslogik und auch den Datenzugriff beinhalten können.

Typisches VFP Formular

Mit einem Werkzeug nach Silverlight migriertes Formular

Migration von Formularen

Tatsächlich stehen in Silverlight die meisten Steuerelemente zur Verfügung, die wir aus VFP kennen. Und Silverlight Steuerelemente haben auch viele der Eigenschaften, die wir aus VFP kennen. Wenn man das Verhalten und die Eigenschaften aller Steuerelemente analysiert, kann man die Umsetzung von VFP nach Silverlight beschreiben.

Was liegt näher, als ein Werkzeug zu entwickeln, das ein VFP Formular zu einer Silverlight Seite migriert? Nun, die Entwicklung eines solchen Werkzeugs ist bereits in Arbeit. Die Migration des Formulars selbst sowie aller darauf befindlichen Steuerelemente, wie Seitenrahmen, Labels und Textboxen, ist bereits möglich. Wie auf den Abbildungen zu sehen ist, fehlen im Silverlight Formular noch einige Elemente, zum Beispiel das Icon und die Schaltflächen, um das Formular zu minimieren und maximieren. Demnächst wird unser Werkzeug aber auch diese Bedienelemente unterstützen.

Migration von Berichten

Mit Berichten können wir einen ähnlichen Weg beschreiten. Die Definition von VFP Berichten lässt sich aus der FRX Tabelle auslesen. In Silverlight wird ein Bericht genauso beschrieben, wie eine Seite, die auf dem Bildschirm angezeigt wird. Der Weg der Konvertierung des Layouts ist also einfach. Ein wenig Programmierung ist erforderlich, weil der Detailbereich so oft wiederholt werden muss, wie Details auf eine Seite passen. Die Berichtsbeschreibung in Silverlight ist seitenorientiert und unterscheidet sich hierin von VFP.

Migration von Code

Wie wir schon erwähnt haben, kann in Silverlight Anwendungen VFP Code aus einem COM Server ausgeführt werden. Wenn eine VFP Anwendung nach Silverlight migriert werden soll, die nach einem sauberen Schichtenmodell implementiert wurde, wird es relativ einfach, den Code der Geschäftslogik und des Datenzugriffs in einen COM Server zu verpflanzen. Wenn die Geschäftslogik mit der Programmierung der Benutzeroberfläche vermischt ist, wird es ein bisschen aufwendiger. Der Code muss getrennt werden, weil im COM Server kein Code für die Benutzeroberfläche enthalten sein darf. Es darf also insbesondere auch nicht mit Wait Window oder Messagebox gearbeitet werden. Diese Änderung des VFP Codes ist für erfahrene VFP Entwickler aber einfach zu bewerkstelligen.

Jetzt haben wir Ideen zur Migration von Formularen, Berichten und Code. Das alles soll in einer Silverlight Anwendung laufen. Wir brauchen noch einen Anwendungsrahmen, der die migrierten Formulare und Berichte ausführen kann und einen VFP COM Server ansteuern kann. So eine Vorlageanwendung wollen wir erstellen.
Diese Vorlageanwendung soll wichtige Grundfunktionalität enthalten, die in jeder Silverlight Geschäftsanwendung vorhanden sein muss.

Die Benutzeroberfläche

Die Benutzeroberfläche soll viele Vorteile nutzen, die Silverlight bietet. Aus VFP Anwendungen sind wir eine MDI (multiple document interface) Oberfläche gewohnt. So eine Oberfläche müssen wir auch in Silverlight bereitstellen, schon um einen schnellen und einfachen Umstieg zu Silverlight zu ermöglichen. MDI entspricht leider nicht den neuesten Guidelines von Microsoft. Nach neueren Erkenntnissen glaubt man, dass MDI Benutzeroberflächen für normale Anwender zu komplex sind und die Vorteile von MDI daher kaum genutzt werden. Neuere Guidelines empfehlen SDI Benutzeroberflächen zu implementieren, bei denen ein Formular bildschirmfüllend angezeigt wird.

Visual Studio 2010 mit MDI Fenstern

Genau genommen sind in der Entwicklungsumgebung von VFP beide Arten von Benutzeroberflächen enthalten. Die Fenster der Designer und des Code Editors lassen sich maximiert und im Fenster darstellen. So sind SDI und MDI in einer Anwendung vereint. In Visual Studio ist es ähnlich. Ein Vorteil ist hier, dass maximierte Fenster einen „Tab“ oder Reiter ähnlich einem Seitenrahmen in VFP haben. Dieser Reiter hat eine Beschriftung. Durch einen Klick auf einen Reiter kann ein Fenster aktiviert werden. All dies soll in unseren künftigen Silverlight Anwendungen auch möglich sein.

Visual Studio 2010 mit SDI Fenstern

In neueren Guidelines wird aber auch viel Freiheit für die Gestaltung neuer Benutzeroberflächen gelassen. Mit Silverlight sind ganz andere Bedienungsmöglichkeiten denkbar, als sie mit MDI und SDI abgebildet werden können. Denken wir an eine Anwendung, bei der viele Formulare gleichzeitig geöffnet werden können. Möglichst alle diese Formulare sollten gleichzeitig sichtbar sein, ohne einander zu überdecken. Wenn ein Formular das Augenmerk des Anwenders hat, wird es vergrößert und die anderen Formulare werden verkleinert.

Auf jeden Fall sollen alle Bedienungsvariationen mit Animationen und Transitionen ausgestattet sein. Animationen mögen auf den ersten Blick als Spielerei erscheinen, haben jedoch einen Vorteil, wenn es um die Bedienbarkeit geht. Wenn der Benutzer in einer VFP Anwendung auf eine Schaltfläche klickt um ein Formular zu starten, erscheint die Windows Sanduhr. Der Benutzer merkt, dass er warten muss. Er merkt, dass die Anwendung langsam ist. In einer Silverlight Anwendung haben wir die Möglichkeit auf eine Aktion des Benutzers praktisch unmittelbar mit der Anzeige einer Animation zu reagieren. Der Benutzer erhält so den Eindruck, dass ein Formular langsam erscheint, während im Hintergrund die Daten geladen werden. Wenn die Daten geladen sind, kann die Animation unmittelbar beendet werden. Der Benutzer sieht eine Animation und weiß nicht, dass wir diese Zeit benötigen, um im Hintergrund Vorgänge auszuführen. Ein kleiner psychologischer Trick, der das Benutzungserlebnis entscheidend verbessern kann.

Transitionen beschreiben Übergänge. Zum Beispiel kann der Übergang eines Formulars von der Normalansicht zur maximierten Ansicht mit einer Transition animiert werden. Auch der Übergang der Anzeige eines Datensatzes zur Anzeige eines anderen Datensatzes kann durch eine Transition zu einem verbesserten Benutzererlebnis werden. Typische Transition sind Überblendungen oder das Verschieben von Elementen. Transitionen können in der Regel ohne Programmierung erstellt werden.

Silverlight Beispielanwendung von Microsoft: Patient Journey Demonstration