Was Silverlight 3 noch fehlt!

Silverlight 3 ist ein großer Fortschritt mit zahlreichen hervorragenden neuen Funktionen. Doch leider gibt es auch noch (!) den einen oder anderen Stolperstein. Aber es sind ja noch ein paar Tage bis zur fertigen dritten Version und die Hoffnung stirbt zuletzt. Und außerdem kann man ja meist irgendwie drum herum arbeiten (dazu vielleicht – wenn mal Zeit ist – in einem späteren Beitrag mehr). Schöner wäre es jedoch, würde das direkt funktionieren. Hier nun meine persönliche gewichtete Top-3-Liste der favorisierten Einschränkungen im Hinblick auf Enterprise-Anwendungen:

  • Platz 3: Zwischenablage
    Leider erlaubt Silverlight bisher keine direkte Nutzung der Zwischenablage (Clipboard). Mit Hilfe des Webbrowsers und JavaScript sind jedoch Workarounds verfügbar.
  • Platz 2: Drucken
    Leider gibt es in Silverlight bisher keine eingebaute Druckfunktion. Mit Hilfe des Webbrowsers sind jedoch Workarounds verfügbar.
  • Platz 1: Mehrere gleichzeitige Anwendungs-Domänen
    Zwar ist das Nachladen von Anwendungen oder Anwendungsteilen mit Silverlight sehr gut gelöst, doch leider landen die Inhalte in einem gemeinsamen Speicherbereich (AppDomain) und können nicht entladen werden und sich so sogar gegenseitig beeinflussen. Doch beispielsweise für große Portale ist eine Trennung essentiell, da sonst einzelne Inhalte die Stabilität des gesamten Portals gefährden.
  • Die fehlende Webcam-Anbindung hat es übrigens nicht in die Top-3 geschafft, da dies doch eher selten in Enterprise-Projekten vermisst wird. Und mit Hilfe von Flash ist ja auch ein Workaround verfügbar.

    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.

    Webinale 09: Resümee und Vortragsfolien

    Ich bin gerade von der diesjährigen Webinale aus Berlin zurückgekehrt. Dort habe ich nicht nur viele alte Freunde getroffen, sondern auch zahlreiche spannende Vorträge gesehen und auch einen kleinen Vortrag zum Thema „Designer Developer Workflow“ gehalten: Das hat mir übrigens sehr viel Spaß gemacht und ich habe viele Ideen gesammelt, wie ich dieses Thema weiter ausbauen und verfeinern kann. Die Folien gibt es hier als PDF.

    Mein persönliches Highlight auf der Webinale war der Vortrag „Von GUI zu NUI“, gehalten durch Wolfgang Henseler: Klasse, wie anschaulich er „natürliche Benutzungsoberflächen“ erklärt hat! Aber auch sonst waren gerade die Vorträge rund um Gestaltungsthemen sehr gelungen und auch die Idee mit dem alternativen Veranstaltungsort in einem – glücklicherweise – sehr innovativen T-Punkt gefiel mir (trotz der 10 Minuten Fußweg bis dahin). Alles in allem auf jeden Fall eine große Steigerung zur letztjährigen Veranstaltung und ich bin schon sehr auf das nächste Jahr gespannt.

    Flash Video ist unsicher

    Adobe versrpach vor geraumer Zeit, dass RTMP-Protokoll - welches auch zum “Streamen” von Flash Video per Flash Media Server dient - offenzulegen. Bisher ist dies jedoch nicht geschehen. Ganz im Gegenteil: Nun hat Adobe mit Hinweis auf das DMCA (Digital Millennium Copyright Act) ein unabhängiges Projekt bei SourceForge namens rtmpdump gestoppt, dass sich genau diese Dokumentation und deren Nutzung zum Ziel gesetzt hat. Per “clean-room” - also ohne Kentniss und ohne De-Kompilieren der Adobe implementierung - entstand eine Spezifikation, die nach Ansicht einiger Entwickler legal ist. Durch rtmpdump ist jedoch auch das Verschlüsselte rtmpe (e für encrypted) offengelegt worden, was wiederum dazu führt, dass Geschützte Inhalte wie z. B. bei Channel 4 heruntergeladen werden können:

    Overall, then, the Adobe RTMPE algorithm provides end-to-end secrecy in exactly the same way that SSL provides end-to-end secrecy, but provides no security and uses no authentication of any kind.

    Genau hierauf beruft sich Adobe in einem Schreiben an SourceForge. Ob das Entfernen dieses Projektes bei SourceForge wirklich was nutzt, ist jedoch stark zu bezweifeln, da die urpsrünglichen Inhalte und Informationen bereits weit im Internet gestreut sind. Und auch die Alternative rtmps hat sich in der Praxis aus Performance-Gründen als nicht praktikabel erwiesen (weshalb ja rtmpe eingeführt wurde). Auf der Adobe-Website ist bisher leider keine Stellungnahme zu finden.

    Update: Aus Flex wird Flash (und nichts anderes)

    Jetzt ist das hier vor einiger Zeit erwähnte Gerücht Gewissheit geworden: Aus dem Flex Builder wird der Flash Builder. Ich finde, dass das Sinn ergibt! Den Kunden interessierte doch meist in erster Linie, dass das Eregbnis im Flash Player läuft und die verwendeten Werkzeuge und Frameworks haben ihn da oft nur unnötig verwirrt und verunsichert. Wer darüber diskutieren möchte, findet im Flashforum einen passenden Thread dazu.