Silverlight 2: .NET everywhere

Der zweite Release von Microsofts RIA-Technologie bringt das .NET-Programmiermodell auf Nicht-Windows-Plattformen und unterschiedliche Webbrowser.

Artikel erschienen in Swiss IT Magazine 2008/09

     

Nachdem Microsoft ihre «Rich Internet Client»-Technologie gerade mal vor knapp einem Jahr angekündigt und erst im letzten September in der Version 1.0 freigegeben hat, geht es nun gleich im Eilzugtempo mit Version 2 weiter. Diese ist bereits als öffentliche Beta verfügbar und soll noch in diesem Sommer in der endgültigen Fassung auf den Markt kommen.


Bei Silverlight handelt es sich um eine Client-basierte, plattform­unabhängige Runtime, die es ermöglicht, Anwendungen direkt im Browser auszuführen. Im Gegensatz zu den relativ statischen Web-Applikationen lassen sich Silverlight-Programme mit einer sogenannten Rich Experience ausstatten: Will heissen, Entwickler und Designer erhalten für die Gestaltung des Benutzer-Interface viel mehr Möglichkeiten, dieses mit ansprechendem Design, interaktiven Bedienungselementen, Animationen und Multimedia-Informationen zu versehen. Man spricht in diesem Zusammenhang auch von sogenannten Rich Internet Applications (RIA).





Die Silverlight-Architektur


.NET im Browser

Der Unterschied zwischen der Version 1 und 2 gleicht einem Quantensprung: Ging es beim ersten Release vor allem darum, Videos zum Browser zu streamen und Animationen abzuspielen, handelt es sich bei der zweiten Ausgabe um eine echte, mit der
.NET CLR (Common Language Runtime) ausgerüsteten RIA-Umgebung. Damit lassen sich in den .NET-Sprachen wie Visual Basic oder C# geschriebene Programme direkt im Browser ausführen. Silverlight 2 unterstützt dazu eine Teilmenge der Klassenbibliothek des .NET Framework (siehe Diagramm «Die Silverlight-Architektur»).

Zu dieser zählen einerseits Basisklassen wie Collections, Threading oder Cryptography für essentielle Aufgaben wie String Handling, Input/Output-Operationen oder Datenverschlüsselung. Andererseits gibt es auch Klassen für anspruchsvollere Tasks wie Datenzugriffe (LINQ), Manipulation von XML (LINQ to XML) oder die Kommunikation mit anderen Anwendungen.


Bei der Auswahl der Klassen haben die Silverlight-Architekten darauf geachtet, nur die im Kontext einer RIA-Anwendung sinnvollen APIs einzubauen. Unnötiger Ballast wurde weggelassen. Um die Silverlight-Runtime möglichst schlank zu halten, wurde gar ein Teil der unterstützten Klassen ausgelagert. Diese werden erst dann geladen, wenn sie von einer Anwendung genutzt werden.



Silverlight 2 unterstützt auch das bereits aus .NET bekannte Konzept der Isolated Storage, in der Dateien in einem sicheren, vom übrigen System komplett abgeschirmten Speicherbereich abgelegt werden können. Ausserdem gibt es eine abgespeckte Variante des Open-File-Dialogs, über den lokale Files für die weitere Verarbeitung in eine Silverlight-Applikation geladen werden können.


Silverlight-Mashups

Stark erweitert wurden in Silverlight 2 auch die Möglichkeiten, mit anderen Anwendungen via Web Services zu interagieren. An Service-APIs und Kommunikationsprotokollen werden REST, SOAP, POX, RSS, HTTP und JSON unterstützt. Ausserdem beherrscht Silverlight nun auch den sogenannten Cross Network Domain Access, womit ein Silverlight-Client beliebige im Internet verfügbare Web-Dienste nutzen kann. In Version 1.0 musste der Web Service noch auf demselben Server publiziert werden, von dem aus die Silverlight-Applikation geladen wurde. Damit lässt sich Silverlight nun unter anderem auch zum Erstellen von Mashups nutzen, bei dem Daten aus unterschiedlichen Web-Diensten zu einer neuen Anwendung verschmolzen werden.


WPF und XAML

Für das Design der Benutzerschnittstelle setzt Microsoft auf eine abgespeckte Version der mit
.NET 3.0 eingeführten Windows Presentation Foundation (WPF). Wie beim grossen Bruder werden WPF-Oberflächen deklarativ mit der XML-basierten Sprache XAML (eXtensible Application Markup Language) beschrieben. Im Prinzip wird hier die Positionierung der einzelnen auf der Oberfläche darzustellenden Layouts und Objekte (Grafik, Animationen, Text, Steuerelement etc. ) in hierarchisch geordneter Form festgelegt und mit Hilfe von Eigenschaften und Events gesteuert.

Analog wie bei ASP.NET wird auch bei XAML das Konzept der Codebehind-Dateien verwendet, über die sich das XAML-Gerüst mit der eigentlichen Programmlogik (mit den oben genannten Sprachen) ausstatten lässt. Die eigentliche Verknüpfung geschieht dabei meist über sogenannte Ereignisse (z.B. Klick auf einen Button, Laden der Seite oder Verlassen einer Textbox).


Total Control

Silverlight 2 bringt nun auch die in der Version 1.0 schmerzlich vermissten User-Interface-Controls, welche Entwicklern den Aufbau von interaktiven Bedienoberflächen ermöglichen sollen. Geplant sind neben den üblichen grundlegenden Bausteinen wie Textboxen, Buttons oder Checkboxen auch anspruchsvollere Steuerelemente wie Slider, Kalender, DateTime­Picker und natürlich auch Controls zum Anzeigen und Manipulieren von Daten (DataGrid, ListBox etc.).


Das Aussehen von Silverlight-Objekten und -Controls kann mit Hilfe von Vorlagen (Styles) oder direkt über deren Attribute (Properties) angepasst werden. Styles lassen sich anlog wie bei XHTML und CSS in eine separate Datei auslagern und können dann auf beliebig viele Objekte und in verschiedenen Applikationen angewendet werden. Noch einen Schritt weiter gehen die Control Templates. Damit lässt sich nicht nur das Aussehen, sondern auch das Verhalten eines Control bis ins letzte Detail steuern. So ist es beispielsweise möglich, den Original-Button in eine Kugel zu verwandeln oder mit einem Hintergrundbild auszustatten.



Wie ASP.NET kennt auch Silverlight 2 das Konzept der User und Custom Controls. Mit den User Controls lassen sich oft verwendete Seitenelemente und der zugehörige Programmcode in ein Objekt kapseln und an beliebiger Stelle wiederverwenden. Bei den Custom Controls handelt es sich um neue, auf Basis der mitgelieferten Silverlight-Controls erstellte UI-Komponenten. Dazu kann ein bestehendes Control vererbt und um eigene Funktionalität ergänzt werden.


DeepZoom

Eines der spektakulärsten neuen Features in Silverlight 2 ist die Zoom-Funktionalität DeepZoom, die aus dem Microsoft Research Projekt «SeaDragon» hervorgegangen ist. Damit lassen sich hochauflösende Bilder mit einer stufenlosen Zoom-Funktionen betrachten. Ausserdem können Bilder miteinander verlinkt werden, wodurch sich beispielsweise eindrückliche Bild-in-Bild-Effekte realisieren lassen. Ein bemerkenswertes Beispiel ist auf der Seite des Hardrock Cafe zu finden, welches eine kleine Online-Ausstellung der gesammelten Utensilien aus der Rock- und Pop-Geschichte mit Hilfe von DeepZoom entwickelt hat (http://memorabilia.hardrock.com). Für die Aufbereitung der Bilddaten stellt Microsoft mit dem DeepZoom Composer ein eigenes Werkzeug zur Verfügung. Mit diesem können die Bilder importiert und nach Wunsch angeordnet werden. Anschliessend lässt sich die Bildmontage in einer Form exportieren, die dann über das sogenannte MultiScaleImage-Control in eine Silverlight-Anwendung eingebunden wird.


Neue Video-Funktionen

Auch wenn der Schwerpunkt bei Silverlight 2 vor allem bei der
.NET-Funktionalität liegt, hat Microsoft die Gelegenheit nicht ungenutzt gelassen, auch die Video-Funktionen weiter auszubauen. So verfügt Version 2 neu über eine Adaptive-Streaming-Technologie, bei der die Streaming-Qualität eines Videos automatisch der aktuell vorhandenen Netzwerkbandbreite und der Rechenpower des Client-PC angepasst wird. Unterbrechungen beim Streaming des Videos sollen dadurch nur noch äusserst selten vorkommen.


Rollenverteilung bei den Werkzeugen

Die eingangs erwähnte klare Separierung der Präsentationsschicht (XAML) von der Programmlogik erlaubt auch eine klare Rollentrennung bei der Entwicklung zwischen User-Interface-Designer und Programmierer. Diese Aufsplittung spiegelt sich auch bei den von Microsoft angebotenen Tools wider. Während mit Visual Studio 2008 wie gewohnt die Bedürfnisse des Programmierers bedient werden, richtet sich das Werkzeug Expression Blend an Designer und ist auf die Gestaltung von Benutzeroberflächen spezialisiert.


Da beide Werkzeuge auf demselben Projektformat beruhen, kann mit beiden Tools relativ unkompliziert an derselben Applikation gearbeitet werden. Silverlight-2-Unterstützung wird in Expression Blend allerdings erst ab Version 2.5 geboten, und die ist zurzeit nur in einer Preview-Version erhältlich.



Visual-Studio-Entwickler erhalten die für die Silverlight-Programmierung notwendigen Add-ons mit den Silverlight Tools for Visual Studio 2008. Diese beinhalten unter anderem die Silverlight-Runtime, das Silverlight-SDK, UI-Controls, Projektvorlagen und die Dynamic Language Runtime (siehe Kasten). Alle Werkzeuge (inkl. Blend 2.5) können via www.silverlight.net heruntergeladen werden.


Plattformen und Browser

Silverlight wurde so konzipiert, dass es sowohl auf unterschiedlichen Plattformen als auch mit verschiedenen Browsern lauffähig ist. Die aktuelle Beta 1 unterstützt derzeit verschiedene Windows-Varianten (Vista, XP, Server 2003 und 2000) und Mac OS X (Tiger und Leopard). Bei den Browsern wird momentan Support für Internet Explorer (8.0 Beta, 7.0, 6.0), Firefox (3.0 Beta, 2.0, 1.5) und Safari (3.x und 2.0) geboten. Zu einem späteren Zeitpunkt sollen Unterstützung für Linux (in Zusammenarbeit mit Novell) und Opera folgen.



Ausserdem gibt es Pläne, Silverlight auch auf Mobilgeräte zu bringen. Zusammen mit Nokia will Microsoft seine RIA-Technologie bis Ende Jahr auf die S60-Plattform portieren. Angekündigt, aber noch ohne konkrete Zeitangabe, ist auch eine Silverlight-Version für Windows Mobile.


Fazit

Auch wenn Microsoft ihre RIA-Technologie keinesfalls als Flash-Killer bezeichnet haben will, so ist es kaum von der Hand zu weisen, dass man es mit Silverlight primär auf den Adobe-Player abgesehen hat. Sicherlich wird die hohe Marktpenetration des Flash-Players von je nach Land zwischen 95 und 99 Prozent (gem. einer Studie von Millward Brown) nicht so ohne weiteres zu erreichen sein. Redmond hat aber für die Verteilung der Silverlight-Runtime einige Asse im Ärmel: Einerseits ist die Hürde, das Silverlight-Plug-in zu installieren, nicht besonders hoch – der 4,3-MB-Download plus Installation dauert bei einem Breitbandanschluss nur wenige Sekunden. Andererseits kann Redmond die Runtime – zumindest bei den Windows-Systemen – über ihren Windows Update Service zu den Endanwendern «pushen». Und in künftigen Windows-Versionen wird Silverlight vermutlich als fester Bestandteil integriert sein.




Wie stark der Zuspruch auf Entwicklerseite sein wird, wird sich allerdings erst noch zeigen müssen. Bei den Web-Entwicklern war die Akzeptanz bei den Microsoft-Technologien bislang nicht berauschend hoch. Immerhin wird der Softwareriese .NET-Entwickler relativ einfach auf die Silverlight-Plattform ziehen können, denn der Einstieg in Microsofts RIA-Technologie führt über keine hohen Hürden, wenn man sich bereits
mit bisherigen .NET-Technologien, insbesondere mit ASP.NET oder WPF, auskennt.


Dynamic Language Runtime

Der zunehmenden Popularität der dynamischen Sprachen wie Ruby oder Python scheint sich auch Microsoft nicht mehr länger entziehen zu können. So will Redmond gemeinsam mit Silverlight 2 die Dynamic Language Runtime (DLR) einführen, welche die .NET-Umgebung um die typischen Eigenschaften von dynamischen Sprachen erweitert. Eine genaue Definition, was denn eine dynamische Sprache (auch Script-Sprachen genannt) ausmacht, lässt sich kaum aufstellen, zumal sich die verschiedenen Vertreter dieser Sprachgattung oftmals stark von einander unterscheiden. Generell ist es aber so, dass bei einer dynamischen Sprache viele Mechanismen, wie zum Beispiel das Binden von Variablen, erst zur Laufzeit – und nicht bereits beim Kompilieren – abgewickelt werden und in den meisten Fällen interpretiert statt kompiliert werden.


Konkret stellt die DLR unter anderem ein dynamisches Typensystem, das von allen .NET-Script-Sprachen gemeinsam genutzt werden kann, eine Hosting API (zum Integrieren einer Script-Sprache in eine Applikation) und Unterstützung für das Erzeugen von schnellem dynamischem Code zur Verfügung. Die DLR existiert als zusätzliche Schicht (siehe Grafik «Die Silverlight-Architektur») oberhalb der Common Language Runtime (CLR) und ist für die Umwandlung des interpretierten Codes in den von der CLR ausführbaren Zwischencode MSIL zuständig.



Microsoft plant zunächst die Sprachen IronPython 2.0, IronRuby und Managed JScript zu unterstützen. Zu einem späteren Zeitpunkt soll «VBx», eine dynamische Variante von Visual Basic, hinzukommen. Eine aktuelle Vorabversion der DLR und die drei erwähnten Sprachen sind in der Beta 1 der Silverlight Tools for Visual Studio 2008, die via www.silverlight.net heruntergeladen werden können, enthalten.




Artikel kommentieren
Kommentare werden vor der Freischaltung durch die Redaktion geprüft.

Anti-Spam-Frage: Aus welcher Stadt stammten die Bremer Stadtmusikanten?
GOLD SPONSOREN
SPONSOREN & PARTNER