21.07.2005, 14:21 Uhr
UI-Technologie für die Longhorn-Ära
Unter dem Codenamen Avalon arbeitet Microsoft an einer neuen API für die Präsentationsschicht, die den Umgang mit Dokumenten vereinfachen und die verschiedenen I/O-Technologien vereinheitlichen soll.
Auf der Professional Developers Conference (PDC) 2003 in Los Angeles hat Microsoft erstmals Avalon präsentiert. Dabei handelt es sich um das neue Grafiksubsystem der nächsten Betriebssystemgeneration von Microsoft mit dem Codenamen Longhorn. Mit Avalon will Microsoft die Vorteile von Web-Anwendungen mit den Rich-Client-Technologien von Windows vereinen und eine neue moderne Plattform für die Entwicklung von Smart Clients schaffen. Im Grunde genommen handelt es sich bei Avalon um eine recht umfangreiche Klassenbibliothek, die Bestandteil von WinFX, der Nachfolge-API des .Net Frameworks ist. Anders als ursprünglich vorgesehen, wird WinFX auch für Windows XP verfügbar sein, womit Avalon-Anwendungen auch auf der aktuellen Windows-Plattform abgespielt werden können.
XAML: XML für UIs
Eine der Kerntechnologien von Avalon ist die auf XML basierende Markup-Sprache XAML (Extensible Application Markup Language). Gemeinsam mit einer .NET-Programmiersprache - wie C# oder VB.NET - kann XAML dazu verwendet -werden, um neuartige, moderne Oberflächen zu gestalten und mit Logik auszu-statten. XAML wird ähnlich wie HTML oder ASP.NET verwendet, um das Layout (Screen 1) einer Oberfläche (wie Textfelder, Buttons, Grafiken etc) zu beschreiben. Avalon wird als eine der zentralen Smart-Client-Technologien in Longhorn bezeichnet. Wer sich mit dem Klassensystem von Avalon ein wenig näher beschäftigt, wird feststellen, dass sich damit in Rekordzeit ausgefeilte Oberflächen entwickeln lassen. Damit dürfte Avalon in Zukunft auf Windows-Plattformen erste Wahl sein, wenn es um die Entwicklung von intelligenten Client-Anwendungen geht.
Microsoft erwartet, dass XAML-Code nicht durch den Programmierer selber von Hand codiert wird, sondern durch Designertools anderer Hersteller generiert wird. Adobe hat beispielsweise bereits auf der PDC 2003 eine Version von After Effects demonstriert, die XAML-Code exportieren konnte. Sehen wir uns aber trotz dieser Tatsache XAML ein wenig näher an, um die Grundidee, die hinter der Technologie steckt, besser verstehen zu können.
Trennung von Design und Code
Die Vorteile von Avalon und XAML liegen klar au f der Hand: Analog wie bei der Web-Entwicklung kann zwischen Layout- und Programmcode unterschieden werden. Dadurch können Grafiker und Entwickler getrennt an der Programmoberfläche arbeiten: Während erstere die visuelle Gestaltung realisieren, kümmern sich letztere um die Programmlogik. Der grösste Vorteil liegt jedoch in der Einfachkeit von Avalon und XAML. Das folgende Codebeispiel zeigt, wie ein paar Buttons mit Hilfe von XAML definiert werden können:Wie Sie aus dem Code erkennen können, handelt es sich um normalen XML Code. Im Grunde genommen können Sie sich die Entwicklung mit Avalon wie die Webentwicklung mit ASP.NET vorstellen: Die Oberfläche wird mit Hilfe von XML Code (HTML oder XAML) deklarativ beschrieben und die Seitenlogik wird in einer .NET-Programmiersprache in einem Code-behind-File realisiert. Wenn Sie daher bereits mit der ASP.NET Entwicklung vertraut sind, wird Ihnen auch die Entwicklung mit Avalon nicht allzu schwer fallen. In diesem Beispiel (Listing 1, Screen 2) wurde das Element mit verschiedenen Attributen wie HorizontalAlignment, Width, Background und FontSize definiert. Eine solche XAML-Definition lässt sich sehr leicht einer .NET-Avalon-Klasse zuordnen: Es gibt nämlich im Namespace MSAvalon.Windows.Controls die Klasse Button und diese hat unter anderem die beiden Eigenschaften Background und FontSize. Durch diese deklarative Entwicklung können Oberflächen viel schneller und einfacher realisiert werden, als wenn die komplette Oberflächenbeschreibungen in Form von C# oder VB.NET Code vorliegt.
Listing 1:
Width="100"Margin="10,10,10,10">Button 1 Width="150"Background="Orange" Margin="10,10,10,10">Button 2Width="200"FontSize="24pt" Margin="15,15,15,15">Button 3
Listing 2:Calculate
Listing 3:private void ButtonClick(object sender, EventArgs e){MessageBox.Show("Sie haben auf den Button geklickt!");^}
Programmierung per Code-Behind
Das Konzept, dass eine .NET-Klasse in Form von XML-Code abgebildet werden kann, ist im Grunde genommen nichts Neues und wurde bereits vor ein paar Jahren von der freien Entwicklungsumgebung #Develop eingesetzt. Was passiert jetzt aber im Hintergrund von XAML? Des Rätsels Lösung ist simple, denn eine XAML-Datei wird einfach durch einen entsprechenden Compiler in eine konkrete .NET-Klasse übersetzt. Da es sich hierbei um eine Partial-Class handelt (neues Sprachfeature von C# 2.0), können ohne Probleme in einer separaten Datei entsprechende Ereignisbehandlungsfunktionen implementiert werden. Das nächste Beispiel zeigt, wie mit C# (Listing 3) aus das Click-Ereignis eines Buttons (Listing 2) reagiert werden kann.
Breite Medienunterstützung
Avalon geht mit XAML aber noch viel weiter: Es lassen sich nicht nur «normale» Benutzerinterfaces gestalten, wie wir das heute von unseren Anwendungen gewohnt sind, sondern auch echte 3D-Oberflächen, die im Hintergrund DirectX 3D für das Rendering verwenden. Zudem unterstützt Avalon auch andere Multimedia- sowie Ein- und Ausgabe-Elemente, um etwa Animationen, -Videos, Typographie, Sounds, Sprache -(Ein- und Ausgabe) und vieles mehr in die Anwendung integrieren zu können. Ebenfalls Bestandteil von Avalon wird das an der -diesjährigen WinHEC vorgestellte Dokumentformat Metro sein, mit dem sich digitale Dokumente im Stil von Adobes PDF-Format generieren und verarbeiten lassen. Microsoft plant, Avalon auch mit Features auszustatten, mit denen sich Daten einfacher an die Benutzeroberfläche anbinden lassen. Zu diesem Zweck ist auch eine nahtlose Integration mit Indigo, der nächsten Kommunikationstechnologie von Microsoft vorgesehen. Das bedeutet, dass es für XAML-Elemente möglich sein wird, ihren aktuellen Inhalt direkt von einem Indigo-Service zu beziehen. Das folgende Listing zeigt, wie mit XAML eine einfache Animation realisiert werden kann. Dabei wird die Lichtdurchlässigkeit eines Rechtecks im Zeitraum von 5 Sekunden verändert (Listing 4).
Listing 4:xmlns="http://schemas.microsoft.com/winfx/avalon/2005"xmlns:x="http://schemas.microsoft.com/winfx/xaml/2005">Width="100" Height="100"Fill="Blue" />TargetName="myAnimatedRectangle" Path="(Rectangle.Opacity)">From="1.0" To="0.0" ^Duration="0:0:5" AutoReverse="True" RepeatBehavior="Forever" />
Auch für Windows XP geplant
Avalon wird ein integraler Bestandteil von Longhorn, der nächsten Betriebssystem-generation von Microsoft, sein. Zusätzlich wird Avalon zum Zeitpunkt des Longhorn-Releases für Windows XP als Gratisdownload zur Verfügung stehen. Laut aktuellen Aussagen von Microsoft soll Longhorn -gegen Ende 2007 verfügbar werden. Wer nicht warten und bereits heute mit Avalon und XAML experimentieren möchte, kann auf den seit Ende Mai verfügbaren Beta 1 Release Candidate von Avalon zurückgreifen. Dieser kann via http://msdn.microsoft.com/library default.asp?url=/library/en-us/dnlong/html/hgtomayavalonctp.asp kostenlos heruntergeladen und mit der aktuellen Visual Studio 2005 Beta 2 (auch mit den Express-Versionen) genutzt werden.
Fazit
Die grosse Frage, die heute jeden beschäftigt ist, wie sich Avalon mit diesen neuen Konzepten durchsetzen wird. Wenn Sie heute Longhorn-Anwendungen ansehen, die mit Hilfe von Avalon entwickelt wurden, glaubt man, dass man sich in einer anderen Welt befindet: Alles ist schön bunt, alles bewegt sich und alles ist mit Hilfe von 3D realisiert. Das Teletubbyland von Windows XP wirkt im Vergleich dazu geradezu fade. Vermutlich kann die echte Leistungsvielfalt von Avalon erst mit der Zeit erkannt werden. Es wird ein Umdenken in den Köpfen nötig sein, damit diese neuen Konzepte in unsere Anwendungen einfliessen können. Und dieses Umdenken wird sicherlich nicht von heute auf morgen gehen. Eine weitere Tatsache, die Microsoft bereits auf der PDC 2003 klar kommuniziert hat ist, dass seitens Microsoft nur ein einfacher, simpler XAML Designer mitgeliefert wird. Wer wirklich leistungsfähige 3D-Oberflächen entwickeln möchte, muss sich daher auf ein Tool eines Fremdherstellers einlassen, was natürlich wiederum mit zusätzlichen Kosten und Aufwand verbunden sein wird.
Der Autor:Klaus Aschenbrenner ist Software-Architekt und technischer Berater bei Anecon, Wien.
Klaus Aschenbrenner