Ausprobiert: Silverlight 3 Beta

Microsoft wird nicht müde, im Markt für Rich Internet Applications mitzumischen und stellt die dritten Versionen von Silverlight und Expression Blend vor (siehe auch Page 06/2009 und 07/2009). Mehr als 50 zusätzliche Funktionen hat Microsoft allein der etwa 4 MByte großen Abspielplattform Silverlight spendiert – beindruckend ist, dass das Silverlight Plug-in damit sogar kleiner geworden ist. Und auch die dazu passende Autorenumgebung Expression Blend 3 geizt nicht mit Neuerungen.

„Out of Browser“: Auch wenn sich Silverlight von Flash in vielen wesentlichen Konzepten unterscheidet, liegt der Vergleich nahe: Schließlich handelt sich bei beiden um eine Laufzeitumgebung für Web-Inhalte, die für Windows, Mac und – noch mit Einschränkungen – unter dem Namen Moonlight auch für Linux verfügbar ist. Silverlight ist das Pendant zum Flash Player und kümmert sich um die Wiedergabe der Inhalte.

Neu ist, dass Silverlight-Anwendungen mit der Out-of-Browser-Technik ähnlich wie bei Adobes AIR als lokale Programme laufen. Und anders als bei AIR und Flash unterscheiden sich die Browser-Version und die lokale Umgebung bei Silverlight offenbar nicht. Bestehende und neue Silverlight-Anwendungen können durch eine einfache Ergänzung in der Beschreibungsdatei (AppManifest.xml) lokal verfügbar gemacht werden. Aus Sicherheitsgründen muss die lokale Installation aber vom Anwender bestätigt werden. Dies kann über das Kontextmenü oder direkt in der Anwendung per Benutzerereignis (z. B. Mausklick) durchgeführt werden. Der Internet-Zugang ist ab dann optional und kann per „Application.Current.RunningOffline“ geprüft werden. Und für lokale Daten verfügt Silverlight über ein isoliertes Verzeichnis (Isolated Storage).

Expression Blend: Grundsätzlich reicht das kostenlose und mit dem Flex SDK vergleichbare Silverlight SDK (Software Development Kit) für die Entwicklung aus. Grafische Arbeiten und Animationen lassen sich aber deutlich einfacher mit Expression Blend erstellen. Dabei ähnelt Blend in weiten Teilen Flash.

Zahlreiche Komponenten und die mit Version 3 deutlich verbesserten Programmierhilfen legen den Vergleich mit dem Flex Builder nahe. Endlich kann auch in Expression Blend nicht nur die Oberflläche sondern auch Programmcode komfortabel erstellt werden. Vermutlich wird mit Silverlight 3 weniger Code zur Steuerung der Oberflächen benötigt werden, da Bindungen nun auch direkt zwischen Oberflächenelementen möglich sind und sich die Anzahl der bindbaren Eigenschaften erhöht hat. Wenn beispielsweise ein Schieberegler (Slider) die Transparenz (Opacity) eines Objektes ändern kann, dann lässt sich das ganz ohne Code nur durch eine einfache Bindung bewerkstelligen. Wobei mit Visual Studio natürlich weiterhin eine auf Entwickler zugeschnitte Programmierumgebung verfügbar ist. Da sich diese mit Expression Blend das gleiche Projektformat teilt, steht dem gleichzeitigen Einsatz auch nichts im Wege.

Mittlerweile verarbeitet Expression Blend Photoshop- und Illustrator-Dateien ohne den Umweg über Expression Design. Die Import-Funktion befindet sich im File-Menü. Mischmodi und Live-Effekte gehen aber in der Beta leider noch nicht.

Die größte Neuerung in Blend ist vermutlich SketchFlow. Damit ist es möglich, den Fluss einer Anwendung ähnlich wie mit Visio zu skizieren. Daraus entsteht automatisch ein Prototype, der Schritt für Schritt verfeinert werden kann. Leider stand diese Funktion ebenso wie die neuen Verhalten (Behaviours) zum Testzeitpunkt nicht zur Verfügung. Weitere Details dazu finden sich aber in dem Video der MIX09-Keynote ab Minute 96 unter http://videos.visitmix.com/MIX09/KEY01.

Bereits in der Beta enthalten ist eine Kommentarfunktion unter dem Menü „Tools -> Create Annotation“. Diese versieht die Quellen mit Anmerkungen, ohne dass diese in die fertige Anwendung hinein kompiliert werden. Nützlich ist das beispielsweise während der Entwicklung für die Kommunikation im Team.

Weiter verbessert hat Microsoft die Werkzeuge, mit denen sich die grafische Oberfläche einer Anwendung modifizieren lässt. Dieses Skinning basiert weitestgehend auf Templates, dank derer die Logik und die Gestaltung klar voneinander getrennt sind. Es reicht aus, ein grafisches Element zu wählen und dieses dann über das Menü „Tools -> Make Into Control“ zu einem Template oder bei zusammengesetzten Elementen zum Teil (Part) eines Templates zu machen. Über die eigentliche Implementierung der dahinter liegenden Logik muss sich der Designer keine Gedanken mehr machen, sondern nur noch die einzelnen Design-Elemente passend zuordnen. Dasselbe gilt für die Zustände der gesamten Anwendung oder einzelner Bestandteile. Diese und deren animierte Übergänge werden über States mit Hilfe des Visual State Managers verwaltet.

Bei komplexen Oberflächen fehlen während der Entwicklung häufig noch die Daten für den Test, was die Gestaltung komplexer Oberflächen erschwert. Expression Blend liefert hier mit den Live-Daten Abhilfe und generiert die erforderlichen Beispieldaten automatisch. Im Fenster Data werden dafür Beispieldaten angelegt und deren Struktur festgelegt. Es kann auch auf bestehende Daten z. B. über XML-Dateien zurückgegriffen werden. Die Testdaten können wahlweise auf die Nutzung in Expression Blend beschränkt oder auch in der fertigen Anwendung enthalten sein.

Animationen arbeiten in Silverlight anders als in Flash immer zeitbasiert. D. h. eine Animation benötigt auf jedem Rechner dann auch wirklich die gleiche Zeit. Das Jonglieren mit Einzelbildern und Bildraten ist somit nicht nötig. Dabei ähnelt die Erstellung von Animationen Werkzeugen wie After Effects. Die Veränderungen werden für jede Eigenschaft in Schlüsselbildern innerhalb eigener Spuren festgehalten. Hinzugekommen sind vorgefertigte Easing-Funktionen, die für das Beschleunigen und Abbremsen einer Animation zuständig sind.

Rendering: Wie Flash seit Version 10 verwendet Silverlight eine häufig als 2 ½ D bezeichnete räumliche Darstellung, bei der die eigentlichen Objekte zweidimensional sind aber im Raum inkl. perspektivischer Verzerrung dargestellt werden. Diese kann ohne Programmierung auf jedes Oberflächenlement angewendet und animiert werden. Die Elemente behalten ihr ursprüngliches Verhalten wie Animation und Interaktivität bei. 3D findet sich innerhalb des Fensters Properties in den erweiterten Eigenschaften des Bereichs Transform. Mit Pixel-Shader-Effekten wie Unschärfe und Schlagschatten hat Silverlight auch in diesem Bereich zu Flash aufgeschlossen. Eigene Shader lassen sich wie bei Flash mit Zusatzsoftware erstellen: Bei Flash kommt der Pixel Bender mit der Programmiersprach Hydra zum Einsatz, Silverlight setzt auf für DirectX bekannte Werkzeuge wie das Effect Compiler Tool und die Sprache HLSL (High Level Shader Language), so dass bereits eine Vielzahl an zusätzlichen Effekten verfügbar sind. Die pixelgenaue Manipulation von Bitmaps und das Bitmap-Cashing für bessere Performance dürfen da nicht fehlen.

Audio und Video: Seit geraumer Zeit ist bereits bekannt, dass Silverlight wie der Mitbewerber Flash nun auch hochauflösende Videos in H.264 und AAC wiedergibt und dabei auf Hardware-Beschleunigung zurückgreifen kann. Die Formatvielfalt ist dank RAW-Video und –Audio Unterstützung und der MediaStreamSource-Klasse jedoch nicht auf die in Silverlight eingebauten Varianten beschränkt, sondern kann beliebig erweitert werden. Ein Beispiel für die Widergabe von WAV-Dateien findet sich unter http://blogs.msdn.com/gillesk/archive/2009/03/23/playing-back-wave-files-in-silverlight.aspx. Dank Smooth Streaming ist die Wiedergabe und Steuerung hochauflösender Videos nicht auf aufwändige Video-Server angewiesen, sondern gibt sich mit normalem http zufrieden. DRM (Digital Rights Management) namens PlayReady ist ebenfalls vorhanden, ohne dass Zusatzsoftware erforderlich wäre.

Navigation: Das Problem des Deep-Linkings, also das direkte Verzweigen zu Inhalten in der Anwendung, löst Silverlight 3 über Anwendungszustände, die mit einer URL verbunden werden. Anders als bei Flash, wo auf zusätzliche Software wie SWFAddress zurückgegriffen werden muss, ist das direkt in Silverlight eingebaut.

Zumindest unter Windows sind Silverlight-Anwendungen einfach barrierefrei zu gestalten, da dies von Haus aus bereits umfassend unterstützt wird. Dies ist aber nicht auf Screenreader beschränkt, so dass Silverlight-Anwendungen ohne weiteres Zutun beispielsweise auch per Sprache steuerbar sind. Für eine optimierte Lesbarkeit kann Silverlight auch auf die Systemfarben zugreifen und so leicht auf individuelle Bedürfnisse des Anwenders reagieren. In Anbetracht des in absehbarer Zeit erscheinenden Windows 7 ist es außerdem hilfreich, dass Silverlight 3 auch Multitouch unterstützt.

Fazit: Silverlight und Expression Blend sind in der dritten Version in vielen Belangen bereits auf Augenhöhe mit den konkurrierenden Technologien von Adobe. Und laut Microsoft arbeiten bereits mehr als 400.000 Entwickler an Silverlight-Anwendungen (http://www.microsoft.com/presspass/presskits/silverlight/docs/Silverlight3FS.doc). Doch bisher mangelt es an eindrucksvollen Beispielen, die über das Bekannte aus der Flash-Welt hinausgehen. Doch Silverlight folgt durchaus Konzepten, die je nach Anwendungsfall Vorteile bieten. Dazu zählen Smooth Streaming für HD-Videos, zeitbasierte Animationen, eine klare Trennung von Code und Design, grafische Anpassung über Templates usw. Und offensichtlich nimmt Adobe diese Herausforderung ernst und hat für das nächten Release von Flex bereits Neuerungen angekündigt, die einigen dieser Konzepte ähneln.

Die größte Einstiegshürde für Silverlight hat Microsoft eliminiert: Endlich können auch alleine mit Expression Blend ganz ohne umfangreicher Entwicklungsumgebung ansprechende interaktive Inhalte umgesetzt werden. Expression Blend 3 steht zum Ausprobieren als Beta unter http://silverlight.net/GetStarted/silverlight3/default.aspx bereit. Die finale Version wird für den Spätsommer erwartet. Leider ist Blend jedoch nur für Windows verfügbar, Mac- und Windows-Anwender können aber auf die Eclipse-Tools für Silverlight ausweichen, die kostenlos unter http://www.eclipse4sl.org verfügbar sind.

One thought on “Ausprobiert: Silverlight 3 Beta

Comments are closed.