Die Qual der Wahl

Silverlight oder HTML5 für Webanwendungen
Kommentare

Die Frage, ob sich für ein Projekt besser Silverlight oder HTML5 eignet, wird sich so mancher IT-Verantwortliche des Öfteren stellen. Dieser Artikel soll die beiden Architekturen veranschaulichen und anhand von Beispielen dabei helfen, je nach Softwareprojekt die richtige Wahl zu treffen

Ursprünglich war eine HTML-basierte Webanwendung nur wenig interaktiv, da HTML weitgehend auf die Darstellung eines Layouts begrenzt war. Das änderte sich dank der Einführung von Java Applets, Adobe Flash und Microsoft Silverlight, da man mit ihnen interaktive Programme in eine Webseite einbinden kann. Damit der Webbrowser diese Programme ausführen kann, muss jedoch ein Browser-Plug-in installiert werden. Das Problem dieser Plug-ins ist, dass sie herstellerabhängig sind und nicht von jedem Webbrowser unterstützt werden müssen. Der Ansatz von HTML5 ist nun, eine Möglichkeit zu schaffen, anspruchsvolle interaktive Webanwendungen herstellerunabhängig zu machen und damit auf allen Webbrowsern ohne zusätzliche Installationen ausführen zu können. Das W3C-Komitee arbeitet dazu an einer HTML5-Spezifikation, die viele neue Ideen und Pläne für das zukünftige Internet enthält. Da das jedoch nicht bedeutet, dass HTML5 die herstellerabhängigen Plug-ins vollständig ersetzen wird, wollen wir im Folgenden die Architekturen von Microsoft Silverlight und HTML5 vergleichen.

Architektur in Microsoft Silverlight

Ein auf Silverlight basierendes User Interface ist ein Programm, das in eine HTML-Seite eingebunden und auf dem Client ausgeführt wird. Diese Ausführung geschieht über ein Browser-Plug-in, das eine Teilmenge des .NET Frameworks enthält (Abb. 1). Dieses Browser-Plug-in muss installiert werden. Eine Installation des gesamten .NET Frameworks auf dem Client ist nicht erforderlich. Wichtige grafische Gesichtspunkte bei Silverlight sind folgende:

Abb. 1: Das Browser-Plug-in
Abb. 1: Das Browser-Plug-in
  • Automatisches Layout
  • 2-D-Shape-Elemente (Rectangle, Ellipse etc.)
  • Farbverläufe mit GradientBrushes
  • Transformationen (Skalieren, Rotieren, Scheren, Matrizen)
  • Animationen (DoubleAnimation, ColorAnimation, PointAnimation)
  • Abspielen von Mediendateien
XAML in Silverlight

Hauptbestandteil der vektorbasierten Grafikdarstellung und der Gestaltung von Anwendungsoberflächen ist das universelle und textbasierte XML-Format XAML (eXtensible Application Markup Language). Ein XAML-Code umfasst dabei immer die grafischen XAML-Benutzerschnittstelle (z. B. Menus, Buttons, Textbox etc.) sowie die zugehörige Programmlogik (Abb. 2).

Abb. 2: XAML-Code mit getrennter Benutzerschnittstelle und Programmlogik
Abb. 2: XAML-Code mit getrennter Benutzerschnittstelle und Programmlogik
Trennung von GUI und Code

Diese beiden Komponenten werden in zwei verschiedenen Dateien gespeichert und können somit auch getrennt voneinander bearbeitet werden. Die Datei, die die Programmlogik enthält, wird CodeBehind-Datei genannt und enthält den Programmcode in C# oder Visual Basic. Bei der Anwendungsentwicklung ist XAML sozusagen die gemeinsame Sprache zwischen Designer und Entwickler. Der Grafiker gestaltet mit den Designertools die Benutzerschnittstelle und generiert XAML-Code. Der Entwickler greift diesen XAML-Code auf und entwickelt in der Sprache seiner Wahl die Programmlogik dazu. XAML-Objekte, die vom Designer angelegt wurden, werden vom Entwickler mit programmlogischer Funktionalität versehen. Designer und Entwickler können praktisch gleichzeitig am selben Projekt arbeiten und müssen nicht über Umwege miteinander kommunizieren.

Unterstütze Browser und Betriebssysteme

Silverlight-Plug-ins gibt es für alle gängigen Browser unter Windows (Internet-Explorer, Firefox, Chrome, Safari und Opera). Browser, die unter anderen Betriebssystemen laufen als Windows, unterstützen Silverlight nur wenig. Für Linux gibt es eine freie und quelloffene Implementierung von Silverlight namens Moonlight. Apple unterstützt Silverlight für das Betriebssystem Mac OS, jedoch nicht für iOS. Silverlight-Support für das Google-Betriebssystem Android gibt es ebenfalls nicht.

Beispiel eines Silverlight UI für ein Embedded-System

Immer mehr Geräte für den industriellen Einsatz haben eine grafische Benutzeroberfläche (UI). Bei Verwendung von Silverlight kann dieses UI auch über das Internet/Intranet verfügbar gemacht werden. Das hat den Vorteil, dass es nicht erforderlich ist, vor Ort bei einem Gerät zu sein, um es zu kontrollieren. Da die Anzahl der Personen, die das UI verwenden, begrenzt ist, ist es auch kein Problem, ein Silverlight-Plug-in auf deren Browsern zu installieren. Das UI braucht auch nur für eine Art von Zugriffsgerät optimiert sein, und das ist ein normaler PC unter Windows. Der Server kann sowohl unter Windows als auch unter einem anderen Betriebssystem wie Linux betrieben werden. Für ein Embedded-System-UI stellen sich typischerweise folgende Anforderungen:

Abb. 3: Silverlight User Interface zur Steuerung eines Geräts
Abb. 3: Silverlight User Interface zur Steuerung eines Geräts

Modernes, gut zu bedienendes und zu erstellendes User Interface: Silverlight bietet eine Vielzahl von Controls, um modernen Ansprüchen an ein UI zu genügen. Unterstützt werden Features, zum Beispiel Eingabeformate, Eingabevalidierung, Data Binding, Printing Support, Drag and Drop, 3-D-Animationen, Webcam und Microphon u. v. m. Mit Entwicklungsumgebungen wie Visual Studio oder Expression Blend können reichhaltige Internetanwendungen (RIAs) schnell und einfach erstellt werden. Dabei genügen Kenntnisse in C# und XAML.

Unterbrechungsfreies Antwortverhalten durch asynchrone Ausführung: Wenn Prozesse in einem Embedded-System parallel ausgeführt werden, erfordert das ein UI, das diese Prozesse gleichzeitig darstellen und deren Ausgaben sofort aktualisieren kann. Da alle Aktionen durch Silverlight asynchron ausgeführt werden, ist ein Antwortverhalten des UI jederzeit vorhanden. Das bedeutet, dass ein Prozess im Hintergrund ausgeführt wird, während das UI bereits neue Eingaben des Users ermöglicht. Wenn der Hintergrundprozess beendet ist, können eventuell geänderte Daten im UI sofort aktualisiert werden.

Integrierbarkeit mit Web Services und WCF: Ein Embedded-System erfordert meist Schnittstellen zu anderen Komponenten, zum Beispiel Datenbanken. Diese enthalten Daten, die zum Betrieb des Gerätes oder zu Zwecken der Protokollierung dort abgelegt werden. Da die Silverlight-Anwendungen vollständig auf dem Clientcomputer ausgeführt werden, sind sie von den Entitäten isoliert, die auf dem Server verwaltet werden. Deshalb muss eine dienstbasierte Kommunikation über Technologien wie Web Services und Windows Communication Foundation (WCF) verfügbar sein. Glücklicherweise unterstützt Silverlight die Interaktion mit diesen und anderen Kommunikationspfaden, die eine nahtlose Interaktion zwischen Silverlight- und Backend-Anwendungen ermöglichen. Microsoft bietet ihre Laufzeitumgebung .NET ausschließlich für ihre eigenen Windows-Betriebssysteme an. Es gibt aber das Mono-Projekt von Xamarin (früher Novell), das eine plattformunabhängige .NET-Implementierung beinhaltet. Es ist also möglich, auf einem Linux-Server einen WCF-Service zu installieren.

Hohe Qualitätsanforderungen: Bei Embedded-Systemen bestehen meist hohe Anforderungen an Qualität und Zuverlässigkeit. Man denke zum Beispiel an Geräte im industriellen oder medizinischen Bereich. Diese Anforderungen betreffen natürlich auch das User Interface. Silverlight, basierend auf C# und XAML, bietet dafür alle Voraussetzungen: Es sind Unit Tests möglich, mit denen man Komponenten automatisch testen kann. Wenn Programmänderungen gemacht werden, kann durch ihre Ausführung automatisch geprüft werden, ob der Rest des Programms noch funktioniert.

Internationalisierung: In einer globalisierten Welt muss heute ein UI für ein Embedded-System natürlich verschiedene Sprachen und Kulturen unterstützen. Da Silverlight auf .NET aufbaut, gibt es die Möglichkeit, zwischen verschiedenen Sprachen und Kulturen dynamisch zu wechseln. Die Texte für die jeweiligen Sprachen werden in eigenen Resource-Dateien (Assemblies) erstellt. Zur Laufzeit wird eine Resource in Abhängigkeit der aktuell eingestellten UI-Kultur aus der jeweiligen Resource-Datei gelesen.

Verfügbarkeit über das Internet: Bei komplexen und teuren Geräten erwartet der Käufer vom Hersteller einen guten Service im Fall einer Störung dieses Geräts. Da es an weit entfernten Orten stehen kann oder auch schwer zugänglich ist, zum Beispiel auf einem Schiff auf hoher See, ist es zweckmäßig für den Servicetechniker, ein User Interface zu schaffen, um die Abläufe in diesem Gerät zu überblicken. Ein Silverlight UI als Teil einer Webanwendung eignet sich hierfür sehr gut. Der Servicetechniker kann also von jedem Standort weltweit via Internet volle Kontrolle über das Gerät erlangen. Über Webcam und Mikrofon kann er auch noch visuelle Informationen erhalten und Anweisungen geben, falls erforderlich. Aus Sicherheitsgründen ist es sinnvoll, sich über eine VPN-Verbindung in das lokale Netzwerk einzuwählen, in dem das Gerät betrieben wird (Abb. 3).

Security: Der Bereich Embedded-System erfordert hohe Sicherheitsstandards gegen unbefugte Zugriffe, da sie erheblichen Schaden verursachen können. Eine mit HTTPS/SSL verschlüsselte Verbindung zwischen Client und Server empfiehlt sich, um diese sicher gegen Angreifer zu machen. Als Webanwendung stehen Silverlight alle Sicherheitsvorkehrungen des Webservers wie Authentication, Authorization und Audit (Kasten: „Sicherheitsvorkehrungen des Webservers in Silverlight“) zur Verfügung. Außerdem stehen Silverlight die Features der Cryptography-Bibliothek aus .NET zur Verfügung, mit denen man Daten mit verschiedenen Verfahren (synchron und asynchron) verschlüsseln kann.

Sicherheitsvorkehrungen des Webservers in Silverlight

Authentifizierung ist der Vorgang, bei dem geprüft wird, ob ein Benutzer berechtigt ist, auf eine Webanwendung zuzugreifen. Das geschieht mit Benutzernamen und Kennwort oder mit einem Zertifikat.

Autorisierung ist der Vorgang, der prüft, ob ein Benutzer bestimmte Aktionen innerhalb einer Webanwedung ausführen darf. So können zum Beispiel einem Administrator mehr Rechte zugewiesen werden als einem anderen Benutzer.

Audit ist der Vorgang, der Aktivitäten protokolliert und vom Benutzer nicht ausgeschaltet werden kann.

Sicherheitsprobleme aufgrund der Stateless-Verbindung einer Webapplikation sind bei Silverlight weniger gravierend, da Silverlight im Browser mit verringerten Befugnissen ausgeführt wird. Das bedeutet jedoch auch, dass Silverlight unter anderem nicht berechtigt ist, eine Verbindung zu einer Datenbank herzustellen. Dazu muss Silverlight eine Verbindung zu einem Web oder WCF Service herstellen, der dann auf die Datenbank zugreift. Sicherheitsprobleme ergeben sich dabei im Bereich des Service, wenn es einem unbefugten Zugreifer gelingt, den Service direkt aufzurufen. Deshalb ist es für einen Service erforderlich, bei jedem Aufruf zu prüfen, ob der Aufrufer korrekt authentifiziert ist und ob er autorisiert ist, die jeweilige Aktion durchzuführen. Microsoft .NET bietet alle erforderlichen Funktionalitäten, um diese Prüfungen durchführen zu können.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -