Von der Datenbank bis zur Oberfläche mit .NET, Teil 5: Desktop- und Browseranwendung mit Silverlight

Seite 4: Fazit

Inhaltsverzeichnis

Eingangs des Beitrags wurde erwähnt, dass Silverlight-Anwendungen außerhalb des Webbrowsers laufen können. Die Standardeinstellung ist der Start im Webbrowser. Der Entwickler einer Silverlight-Anwendung kann aber festlegen, dass diese außerhalb des Browser betreibbar ist. Das stellt der Entwickler im Silverlight-Projekt in den Projekteigenschaft auf der Registerkarte "Silverlight" ein, indem er Enable running application out of browser wählt und dann die "Out-of-Browser Settings" festlegt (siehe Abb. 5).

Einstellungen für den Betrieb einer Silverlight-Anwendung außerhalb des Webbrowsers (Abb. 5).

Mit den Einstellungen startet die Anwendung im Debugger nun als eigenständiges Windows-Fenster (siehe Abb. 6), wobei in Wirklichkeit hier Teile des Internet Explorer im Spiel sind; nur dessen Menüleisten sind ausgeblendet. Die Funktionen sind weiterhin gewährleistet, solange die Webservices verfügbar sind.

Silverlight-Anwendung außerhalb des Webbrowsers (Abb. 6)

Die Anwendung kann man alternativ wie bisher über die Webseite http://localhost:82/SilverlightApp.html aufrufen, und dort läuft sie weiterhin im Browser. Der Benutzer hat aber im Kontextmenü der Silverlight Anwendung unter dem Punkt "Silverlight" die zusätzliche Option WWWings-Buchung auf diesem Computer installieren. Danach sieht der Anwender ein Installationsfenster, in dem er festlegen kann, ob er im Startmenü und/oder auf dem Windows-Desktop eine Verknüpfung zur Anwendung möchte, um diese dann zukünftig direkt ohne den vorherigen Browseraufruf zu starten. Die OK-Schaltfläche ist erst nach drei Sekunden Bedenkzeit verfügbar. Die Deinstallation der Anwendung ist später sowohl auf der Webseite im Kontextmenü (Diese Anwendung entfernen) als auch in der Windows Systemsteuerung (Programme | Software) möglich.

Im Unternehmenseinsatz ist eine solche Selbstinstallation der Silverlight-Anwendung durch jeden einzelnen Benutzer nicht der gewünschte Weg. Dort ist eine Verteilung mit herkömmlichen Methoden wie Batch-Datei/Skript, Setup/MSI oder Click-Once-Deployment auf Windows-Systemen geboten. Mit etwas Hintergrundwissen kann man diese Wünsche realisieren. Das wichtigste Instrument ist SLLauncher.exe. Das Programm wird mit dem Silverlight-Plug-in unter Windows installiert. Wenn ein Benutzer eine Silverlight-Anwendung lokal installiert, entsteht eine Verknüpfung zur Anwendung im Startmenü mit der App-ID der installierten Anwendung als Parameter. SLLauncher ermöglicht aber auch, mit dem Parameter /installer den Installationsvorgang anzustoßen. Der folgende Quellcode zeigt, wie man die vom Projekt WWWings_SL erzeugte WWWings_SL.xap-Datei per Windows Batch in das lokale Dateisystem kopieren, dort installiert und startet. Den Trick für den Installationsweg über das Click-Once-Deployment beschreibt ein Blog-Eintrag.

echo "Kopieren"
copy "\\Server\Install\WWWings_SL.xap" "c:\SLApps\WWWings_SL.xap"
echo "Installieren"
"C:\Program Files (x86)\Microsoft Silverlight\sllauncher.exe"
/install:'c:\ SLApps\WWWings_SL.xap' /origin:"http://localhost:82/
ClientBin/WWWings_SL.xap"
/shortcut:desktop+startmenu /overwrite
echo "Starten"
"C:\Program Files (x86)\Microsoft Silverlight\sllauncher.exe"
/emulate:"c:\ SLApps\WWWings_SL.xap" /origin:"http://localhost:82/
ClientBin/WWWings_SL.xap" /overwrite
echo "Läuft!"

Silverlight-Anwendungen laufen im Standard in einer Sandbox, das heißt, sie sind vom Betriebssystem, Hardwareressourcen und anderen Anwendungen abgeschottet. Im Dateisystem kann jede Silverlight Anwendung nur in einem speziell ihr zugewiesenen Teil des Benutzerprofils Dateien erzeugen oder lesen (Isolated Storage). So können Silverlight-Anwendung nicht ausspionieren und keinen Schaden anrichten. Es gibt aber auch die Möglichkeit, Silverlight-Anwendungen unter erhöhten Rechten zu betreiben (man spricht von Elevated Trust oder Trusted Application). Dann können diese Silverlight-Anwendungen das ganze Dateisystem verwenden und über das Component Object Model (COM) mit den Betriebssystemkomponenten (z. B. dem Active Directory) oder anderen Anwendungen (z. B. Office-Produkten) interagieren. Im konkreten Fall könnte die Flugbuchungs-Silverlight-Anwendung zum Beispiel die Flugliste nach Excel importieren, eine Buchungsbestätigung als Word-Dokument erzeugen und dem Passagier per E-Mail zustellen. Das soll im Tutorial aber nicht mehr behandelt werden, denn auch die ASP.NET- und WPF-Anwendung in Teil 3 und 4 des Tutorials hatten nicht die Fähigkeiten.

Die Umstellung der WPF-Anwendung auf Silverlight hat gezeigt: Die beiden Oberflächenframeworks sind sich so nah und dann in Details doch so fern. Wenn man zu Beginn der Entwicklung weiß, dass man auch Silverlight bedienen will, kann man sicherlich an einigen Stellen auf dem kleinsten gemeinsamen Nenner programmieren. Aber an anderen Stellen gibt es diesen gemeinsamen Nenner nicht, sodass man mit einer XAML-Codebasis kaum erreichen kann, beide Oberflächen gleichzeitig zu bedienen. Definitiv ist der Weg von WPF zu Silverlight ein Vielfaches leichter und schneller als von WPF zu HTML5/JavaScript, denn dort ist sowohl die Oberflächenbeschreibungssprache als auch die Sprache der ViewModel ganz anders.

Dr. Holger Schwichtenberg
leitet das Expertenteam von www.IT-Visions.de, das Beratung und Schulungen im Umfeld von .NET und Microsofts Serverprodukten anbietet. Er hält Vorträge auf Fachkonferenzen und ist Autor zahlreicher Fachbücher.

  • Holger Schwichtenberg; .NET 4.0 Crashkurs; Microsoft Press, 4. Auflage 2010
  • Thomas Claudius Huber; Silverlight 4: Das umfassende Handbuch; Galileo Computing, 2010

Hinweis: Ein deutsches Buch zu Silverlight 5 ist bisher nicht erschienen.