Ein großer Sprung
Mit der Silverlight-Philosophie verspricht Microsoft vollmundig die plattformunabhängige Entwicklung von Web- und Desktop-Anwendungen auf einer Code-Basis. Ist die nun vorliegende zweite Version ein Schritt in diese Richtung?
- Daniel Greitens
Das plattformübergreifende Web-User-Interface Silverlight 2 von Microsoft war schon als Beta-Version seit vielen Monaten in aller Munde [1]. Nach dem schwachen Start der ersten Ausgabe Ende letzten Jahres wurde nun Version 2.0 für Windows und Mac OS fertiggestellt. Die Linux-Gemeinde muss auf Moonlight – das Silverlight-Pendant von Novell – allerdings noch warten.
Silverlight überträgt User-Interface-Techniken von Windows- auf Webanwendungen. Ziel ist, Client- und Webapplikationen auf der gleichen technischen Basis entwickeln zu können. Zum Teil ist das mit ASP.Net- und WinForm-Anwendungen auch schon machbar, denn man kann .Net-Komponenten gleichzeitig in beiden Programmen verwenden. Allerdings nur den Teil der Applikation, der unabhängig vom Benutzer-Interface ist. Die Technik der grafischen Ausgabe von Programmen ist nämlich vollkommen unterschiedlich und muss für On- und Offline-Programme redundant entwickelt und gepflegt werden.
Dieses Dilemma soll die WPF (Windows Presentation Foundation) aufheben. Sie hat sich bereits mit dem .Net Framework 3.0 und somit mit dem Launch von Vista langsam, aber sicher verbreitet und findet mehr und mehr Anklang bei Softwareunternehmen. Das Framework bietet neue Möglichkeiten für das Design von Client-Anwendungen: Vektor-Grafik, Video, Animation, 3D und vieles mehr. Silverlight ist nun der kleine Bruder von WPF und als Portierung der WPF-Technik auf das Web zu verstehen.
Ein Code für alle Anwendungen
Silverlight-Anwendungen werden nicht installiert, sondern laufen über ein kleines Plug-in in nahezu allen gängigen Browsern. Klein ist das Plug-in, weil es ein erheblich geringeres Funktionsspektrum als WPF vorzuweisen hat. Eine Web-Anwendung unterliegt ohnehin anderen Bedingungen. Eine Silverlight-Applikation wird in einem „Isolated Storage“ ausgeführt und somit besteht beispielsweise kein Zugriff auf das lokale Dateisystem. Es stehen auch keine direkten Datenbank-Zugriffsmechanismen zur Verfügung, denn beim Benutzer einer Web-Anwendung liegen in der Regel weder eine Datenbank noch darin enthaltene Daten vor. Stattdessen ist Silverlight mit hinreichend Mechanismen zur Kommunikation über Webservices bestückt.
Gemeinsam haben WPF- und Silverlight-Programme eine einheitliche Architektur, bestehend aus „XAML“-Dateien (eXtensible Application Markup Language), die die Benutzerschnittstelle in einer XML-basierten Sprache beschreiben, sowie den Code-Behind-Dateien, die die Logik beinhalten. Diese gemeinsame Architektur soll es zukünftig ermöglichen, Client- und Webanwendungen auf gleicher Basis zu entwickeln.
Da die Ausführung einer Silverlight-Applikation nicht die Installation des auf Windows angewiesenen .Net-Framework voraussetzt und es das Plug-in für verschiedene Betriebssysteme und Browser gibt, eröffnet Silverlight völlig neue Möglichkeiten: Die Entwicklung von plattformübergreifenden Client-Server-Anwendungen auf Basis von Microsofts .Net-Technologie.
Silverlight 1.0 machte da aber noch nicht wirklich mit. Es bot weder die Möglichkeit, Managed Code zu implementieren (stattdessen musste in Unmanaged Javascript programmiert werden), noch standen ähnliche Steuerelemente wie in WPF zur Verfügung. Silverlight 1 brachte gerade mal ein Rechteck, eine Ellipse und nur ein einziges LayoutPanel, nämlich das Canvas, mit. Nicht mal ein Button stand „out of the box“ zur Verfügung. Dieser geringe Funktionsumfang war kaum mit der zugrunde liegenden Philosophie von WPF und Silverlight vereinbar. So wundert es nicht, dass die erste Version bislang nur mäßigen Anklang gefunden hat.
Mit den Startschwierigkeiten von Silverlight 1.0 räumt die neue Version gründlich auf. Bereits mit der ersten Beta der 2.0-Version zeigte Microsoft die Zielrichtung auf: Silverlight 2 wird über einen großen Satz an Steuerelementen verfügen und .Net-Programmierung ermöglichen. Beta 2 untermauerte diese Erwartung weiter und mit dem Launch ist es nun Gewissheit: Das Plug-in kann der gesetzten Philosophie den Weg bereiten. Der Funktionsumfang von Silverlight 2.0 umfasst alle gängigen Steuerelemente wie Button, List-, Check- und Radiobox sowie die wichtigsten LayoutPanels. Die Objektbibliothek von Expression Blend 2 SP1 zeigt in Abbildung 1 die Liste an Steuerelementen. Hinzu kommt, dass die Entwicklungswerkzeuge Visual Studio und Expression Blend mit kostenlosen Service Packs auf den Stand von Silverlight 2 gehoben werden (s. dazu „Gleichgezogen“, Seite 68 in dieser Ausgabe).
Die Runtime, und wie man dazu kommt
Das Plug-in von Silverlight 2 verträgt sich mit unterschiedlichen Systemvoraussetzungen. Es unterscheidet und unterstützt mehrere Betriebssysteme (Windows, Mac OS) und Browser (IE, Firefox, Safari). Für Linux ist das Plug-in unter dem Namen „Moonlight“ in Arbeit. Öffnet man eine Silverlight-Anwendung im Browser, analysiert eine fest eingebundene Komponente das System. Ist die Silverlight-Version auf dem Client installiert, startet die Anwendung. Wenn nicht, kann der Anwender über einen Button mit zwei Klicks das Plug-in installieren.
Für Silverlight wurde ein neues visuelles Statusmodell für Steuerelemente entwickelt. Ein Steuerelement kann demnach beliebig viele visuelle Status besitzen, im Falle eines Button beispielsweise die vordefinierten „MouseOver“ und „Click“. Der Button kann dann in den einzelnen Status isoliert gestaltet werden. Die Dauer eines Übergangs von einem Status zum anderen („Transition“) kann der Entwickler in Sekunden angeben. Ausgelöst wird der Wechsel aus dem Code heraus, wobei die Runtime automatisch zur Laufzeit die Zwischenschritte berechnet. Somit ist die Gestaltung eines Steuerelements gegenüber der sonstigen Darstellung gekapselt und der Entwickler muss für diese gängigen Szenarien keine vollständige Animation anlegen.
Silverlight 2.0 bietet wie erwähnt die Möglichkeit, Logik in Form von .Net-Code (in VB, C#, Javascript, IronPython, IronRuby und vielen anderen Programmiersprachen) zu implementieren. Da für Silverlight-Applikationen – anders als für WPF-Anwendungen – eine strikte Trennung von XAML und .Net unumgänglich ist, steht der .Net-Code ausschließlich in den dafür vorgesehenen Code-(Behind-)Dateien. Da Blend diese Projekte ebenfalls kompilieren kann, kann man theoretisch mit einem schlichten Texteditor die Programmzeilen schreiben, erheblich produktiver ist aber die Entwicklung mit Visual Studio.
Neben den kostenpflichtigen Visual-Studio-Versionen (beginnend bei der Standardversion) kann der Entwickler auch die kostenlose Version „Web Developer 2008 Express“ einsetzen. Die „Silverlight Tools für Visual Studio“ sind kompatibel, der funktionale Unterschied für kleinere Projekte ist dabei marginal. Leider gibt es bis dato für Blend 2 mit SP 1, weder von Microsoft noch von anderen, eine das Budget nicht belastende Alternative.
Da Expression Blend und Visual Studio mit gleichem Projektformat arbeiten, kann der Entwickler ein Silverlight-Projekt in beiden Programmen gleichermaßen erstellen, öffnen und bearbeiten. Wenn man das im Team macht (z.B. Designer und Programmierer), bekommt der Kollege automatisch eine Mitteilung, wenn der Partner seine Datei speichert. Eine Änderung, die bei paralleler Entwicklung sicher häufiger vorkommen kann, wäre die grafische Änderung der Steuerelemente durch den Designer. In Anlehnung an WPF ist es nämlich möglich, diese mit Blend grafisch nach Wunsch zu manipulieren. Das hat dann zwar mit der Programmlogik nichts zu tun, der Anwendungsprogrammierer hätte es aber vielleicht trotzdem gerne gewusst.
Fazit
Silverlight 2.0 ist eine runde Sache, die Spaß und Sinn macht. Die Philosophie, Client- und Webanwendungen auf gleicher Basis realisieren zu können, nimmt langsam Form an. Die Dynamik der rasanten Entwicklung in Form einer großen Anzahl an Betas, Previews und Release Candidats wird nun hoffentlich erst mal nachlassen.
Einige Weiterentwicklungen von Silverlight hinterlassen bei genauer Betrachtung allerdings Fragezeichen, denn das Plug-in ist nun so weit nach vorne geprescht, dass es in einigen Punkten WPF hinter sich gelassen hat. Den VisualStateManager gibt es beispielsweise für WPF nicht. Das führt zu Inkompatibilitäten, was bedeutet, dass der XAML-Code einer Silverlight-Anwendung je nach eingesetztem Funktionsumfang nicht mit dem einer WPF-Anwendung kompatibel sein muss. Nun liegt es an WPF nachzuziehen.
Bleibt zu hoffen, dass sich beide irgendwann einig werden und der Code einer Webanwendung tatsächlich eins zu eins kompatibel mit dem einer Client-Anwendung ist.
Daniel Greitens
ist Geschäftsführer der auf Microsoft-Technologie spezialisierten Kommunikationsagentur maximago in Lünen.
Literatur
[1] Regina Dowling, Jörg Müller; dreiteiliges Silverlight-2-Tutorial; iX 8 bis 10/2008
Außerdem lesen Sie in der Printausgabe einen Artikel zu Expression Blend 2. (wm)