# Microsoft Silverlight

Microsoft Silverlight ist ein eingestelltes Framework zur Ausführung von Rich Internet Applications in einem Browser-Plug-in sowie für Apps in Windows Phone 7. Silverlight basiert auf einer reduzierten Version des .NET Frameworks.
Dabei konnten Rich Internet Applications für verschiedene Windows- und Mac-OS-X-Browser entwickelt werden; wobei die Unterstützung über die Jahre abnahm und zuletzt nur noch der Internet Explorer 11 unter Windows unterstützt wurde. Neben der offenen W3C-Webplattform Ajax konkurrierte Silverlight mit Adobe Flash/Adobe Flex, JavaFX und OpenLaszlo.
Microsoft stellte jegliche Unterstützung für Silverlight am 12. Oktober 2021 ein; auch Sicherheitsaktualisierungen werden nicht mehr zur Verfügung gestellt.

## Funktionsweise

Silverlight-Anwendungen werden vom Webserver heruntergeladen und auf dem Client typischerweise im Browser ausgeführt. Die Kommunikation der Anwendung mit dem Webserver erfolgt mittels HTTP-GET. Für die Programmierung mittels .NET eignen sich unter anderem die ADO.NET Data Services, die Datenbanken automatisch als Webdienst für einen Silverlight-basierten RIA-Client bereitstellen können.
Silverlight ist hinsichtlich seiner UI-Präsentationsschicht abgeleitet aus der Windows Presentation Foundation. WPF wurde mit dem .NET Framework 3.x (3.0/3.5) eingeführt. Hauptbestandteil der vektorbasierten Grafikdarstellung und der Gestaltung von Anwendungsoberflächen ist das universelle und textbasierte XML-Format XAML (eXtensible Application Markup Language). Während WPF für die grafische Darstellung und Animationen von Windows-Desktop-Anwendungen entwickelt wurde, ist unter dem Codenamen WPF/E (E für Everywhere) eine webfähige Variante entwickelt worden, die mit einem um Elemente und Funktionen reduzierten XAML ausgestattet ist.

## Versionen
### Silverlight 1

Silverlight 1.0 wurde am 5. September 2007 freigegeben. Bis April 2007 war es unter dem vorläufigen Codenamen „WPF/E“ bekannt (die Abkürzung stand für „Windows Presentation Foundation/Everywhere“). Silverlight 1 ist mit einer JavaScript-API ausgestattet und lässt sich mit JavaScript, aber auch mit anderen Scriptsprachen wie Python und Ruby entwickeln. Silverlight 1 besteht aus dem Kern des Presentation Frameworks, der verantwortlich für das UI (User Interface), Interaktivität und Benutzereingaben, grundlegende Bedienelemente, Grafiken und Animation, Medienwiedergabe, Digitale Rechteverwaltung (DRM) und DOM-Integration ist. Es ist gegliedert in folgende Komponenten:

#### Eingaben

    Verarbeitung der Informationen von Geräten wie Tastatur, Maus, Zeichentablett.

#### User-Interface-Kern

    Rendern von Bitmap-Bildern steuern (einschließlich komprimierter Rasterbilder wie JPEG, Vektorgrafiken, Text und Animationen)

#### Medien

    Wiedergabe von MP3-, WMA-Standard-, WMV7-, WMV8- und WMV9-/VC-1-Streams

#### XAML

    Möglichkeit, die Benutzeroberflächen mit Hilfe der Extensible Application Markup Language zu gestalten
Eine Silverlight-Anwendung startet mit dem Aufrufen des Silverlight-Controllers von der HTML-Seite, der dann eine XAML-Datei lädt. Die XAML-Datei enthält ein Canvas-Objekt, das als Platzhalter für andere Objekte dient. Silverlight stellt verschiedene geometrische Grundformen zur Verfügung, aber auch Elemente wie Text, Bilder und andere Medien. Die Elemente können exakt positioniert werden, um das gewünschte Layout zu erreichen. Diese Elemente können animiert werden, indem sogenannte Event Trigger verwendet werden. Einige Effekte sind vordefiniert, andere können als Komposition dieser entworfen werden. Tastatur- und Mausereignisse können ebenfalls von gewöhnlichen Skripten verarbeitet werden.

### Silverlight 2

Das 2008 freigegebene Silverlight 2 enthält eine Vielzahl von aus WPF-Anwendungen bekannten XAML-Controls. Zusätzlich zum Canvas, das in der Version 1.1 als einziges Layout-Panel zur Verfügung stand, werden nun weitere Layout-Controls unterstützt, das StackPanel und das Grid, die als Container für andere Controls dienen und die Positionierung und Größenanpassung der Elemente erleichtern. Auch komplexe Funktionalitäten, wie Data Binding, die Verwendung von Vorlagen (Templates), benutzerdefinierte Steuerelemente und Steuerelemente zur Datenmanipulation und Datenvisualisierung (ListBox, DataGrid) sind dazugekommen. Silverlight 2 unterstützt darüber hinaus Klassen zur Internetkommunikation über REST, POX, RSS und WS, und domainübergreifende Netzwerkzugriffe. Die Windows Communication Foundation (WCF), Ajax und LINQ sind integriert.
Silverlight enthält einen Mediaplayer, der die Formate Windows Media Video (WMV), VC-1 Video Standard, HDV, Windows Media Audio (WMA) und MP3 unterstützt.
Silverlight-Anwendungen werden in der Regel mit Microsoft Expression Blend und Visual Studio entwickelt. Es ist geplant, Silverlight auch für mobile Endgeräten mit z. B. Windows Mobile zu veröffentlichen. Die Plattform unterstützt eine Deep-Zooming-Technologie für hochauflösende Bilder, und mit dem Microsoft Streaming Server ist es möglich, Videos und Silverlight-Anwendungen als Streams anzubieten.

### Silverlight 3

Seit Anfang Juli 2009 bietet Microsoft Silverlight 3 für Windows und macOS zum Herunterladen an. Neu ist die Unterstützung von Hardware-Beschleunigung bei Videos sowie die Möglichkeit, Anwendungen für den Desktop sowie für das Internet zu entwickeln.
* Silverlight 3 ermöglicht sogenannte „Rich-Media Websites“ mit „Full HD Smooth-Streaming (1080p)“, mit denen unter anderem auch die Qualität des Videos während des Anschauens verändert werden kann. Außerdem bietet es 3D-Funktionen und Unterstützung für Eingabegeräte mit Multi-Touch.
* Silverlight 3 ist geeignet, um „Rich-Internet“-Anwendungen für den Browser und den lokalen Rechner zu entwickeln. Damit können Silverlight-Anwendungen direkt auf dem Rechner ausgeführt werden – mit („online“) und ohne („offline“) Internet-Verbindung. Dieses Verfahren wird „Out-of-Browser(OOB)“-Technik genannt.

### Silverlight 4

Am 13. April 2010 wurde Microsoft Silverlight 4 auf der Microsoft-Entwicklerkonferenz vorgestellt. Zu den Neuerungen gehört ein Drucksystem mit Druckvorschau. Neu sind außerdem die WCF RIA Services, die Netzwerkfunktionen beinhalten, um mehrschichtige Anwendungen zu erstellen. Eine Unterstützung für Webcams und Mikrofone und damit die lokale Aufzeichnung von Audio und Video wurde ebenfalls integriert. Silverlight 4 soll 3 mal schneller sein als der Vorgänger.
Im Juli 2010 meldete Microsoft selbst eine Verbreitungsquote des Silverlight-Plugins von 60 %, mit einem Sprung der Verbreitungsquote von 45 % auf 60 % in nur vier Monaten. Damit sehen Beobachter die „kritische Masse“ erreicht, die Silverlight wohl schneller als allgemein erwartet zum „vollwertigen“ Konkurrenten von Adobes Flash machen dürfte.

### Silverlight 5

Am 9. Dezember 2011 wurde die Version 5 veröffentlicht. Dabei wurde die Ausführungsgeschwindigkeit verbessert. Als Neuerungen wurde die vollständige 64-Bit-Unterstützung sowie die Darstellung von H.264-Daten mithilfe der GPU bekanntgegeben. Außerdem werden die Netzwerkfunktionen in einen separaten Thread ausgelagert, was das Stocken von Anwendungen verhindern soll. Die Integration fremder Webinhalte per HTML5 wird mit Silverlight 5 ebenfalls einfacher. Zudem wurde Microsofts „Trusted Application“-Modell eingeführt, womit es mit einem Zertifikat versehenen Anwendungen möglich ist, bestimmte Aktionen direkt vom Browser aus durchzuführen. Voraussetzung ist neben dem Zertifikat ein passender Eintrag in der Registry. Außerdem bietet Silverlight 5 hardwarebeschleunigte 3D-Unterstützung. Die Unterstützung wurde bis 2021 zugesagt.

## Kompatibilität

Silverlight wurde für mehrere, aber nicht alle Betriebssysteme und Webbrowser angeboten.
* Von Microsoft zuletzt offiziell unterstützt wurde Silverlight 5 in Internet Explorer 11 (bis zum 12. Oktober 2021). In Microsoft Edge konnte Silverlight nie verwendet werden.
* Silverlight funktioniert nicht mehr in Chrome und daraus abgeleiteten Browsern, da von Microsoft kein PPAPI-Plugin angeboten wird.
* Ab Version 52 besteht in Firefox keine NPAPI-Kompatibilität mehr. Mangels PPAPI-Plugin ist damit auch die Silverlight-Unterstützung entfallen.
* Obwohl Opera offiziell nicht unterstützt wird, funktionierte Silverlight zwischenzeitlich auch dort mit Einschränkungen, Animationen wurden beispielsweise nicht angezeigt. Seitdem Opera als Chromium-Fork fortgeführt wird, besteht keine Kompatibilität mehr.
* Silverlight kann mit Apple Safari für macOS seit Version 12 nicht mehr verwendet werden.
* Für Linux und FreeBSD wird die Silverlight-Funktionalität durch das freie Moonlight-Projekt zur Verfügung gestellt, dessen Entwicklung jedoch eingestellt ist, sodass Silverlight 5 und neuer nicht unterstützt werden.
* Für Linux und FreeBSD gab es seit 2013 das „Pipelight“-Plug-in, um Silverlight in Linux-basierten („nativen“) Browsern zu unterstützen. Dazu erstellt Pipelight eine Verbindung zwischen Silverlight in Wine und dem Browser. Die Entwicklung wurde inzwischen eingestellt und der Entwickler empfiehlt auf der offiziellen Webseite, das Plugin aufgrund von Sicherheitsrisiken nicht mehr zu verwenden.
* Silverlight war auch für Microsoft Windows Phone 7 verfügbar.
* Silverlight benötigt mindestens einen x86-Prozessor mit SSE-Unterstützung. Unterstützte Prozessoren sind unter anderem Intel Pentium III und höhere und AMD Athlon XP und höhere. Die AMD-Duron-Serie wird ebenfalls unterstützt.
   „Silverlight will continue to be a cross-platform solution, working on a variety of operating system/browser platforms, going forward, he said. “But HTML is the only true cross platform solution for everything, including (Apple’s) iOS platform,” Muglia said.“

## Kritik

Microsofts Entwicklung von Silverlight wurde für die Konzentration auf dessen Betriebssystem Windows kritisiert. Obwohl Microsoft mit Apple und Novell im Rahmen des Mono-Projektes zusammenarbeitet, das auch die alternative Silverlight-Implementation Moonlight beinhaltet, wurden vom Flash-Entwickler Adobe die Anstrengungen Microsofts, Silverlight plattformunabhängig anzubieten, infrage gestellt.
Überdies gibt es Vorbehalte gegen Microsoft, was die Einhaltung und Nutzung von Web-Standards angeht, da Silverlight beispielsweise nicht den vom World Wide Web Consortium empfohlenen Standard SVG für Vektorgrafiken nutzt. Microsoft hat es vorgezogen, eine eigene, strukturell mit SVG kompatible Implementierung in XAML einzubauen. Laut Aussagen eines Microsoft MVPs sei es jedoch nicht möglich gewesen, SVG zu nutzen, sonst hätte Microsoft SVG als erstes um GUI-Elemente erweitert, und damit wäre es nicht mehr SVG gewesen.
In Silverlight 4.0 gibt es neben der kontrollierten Ausführung in einer Sandbox optional noch die Möglichkeit einer expliziten lokalen Installation (das steht nur für Out-of-Browser-Ausführung bereit). Wenn der Benutzer diese Installation akzeptiert, werden die Einschränkungen der Sandbox verringert, und es wird möglich sein, COM-Objekte zu verwenden – etwa für die Integration mit Desktop-Anwendungen. Die betroffenen Teile solcher lokal installierten Silverlight-Anwendungen wären dann nicht mehr plattformunabhängig.