zurück zum Artikel

Die Wahl für das Web - ASP.NET, Ajax oder Silverlight?

Dr. Holger Schwichtenberg, Alexander Neumann

Microsoft-affine Entwickler haben für Webanwendungen inzwischen eine Handvoll Optionen: ASP.NET, Ajax, Silverlight, WPF WBA und sogar noch das "alte" ActiveX spielen eine Rolle.

Microsoft-affine Entwickler haben für Webanwendungen inzwischen eine Handvoll Optionen: ASP.NET, Ajax, Silverlight, WPF WBA (Web Browser Application) und sogar noch das "alte" ActiveX spielen eine Rolle.

Mehr Infos

10 wichtige Fragen zu .NET

In dieser zehnteiligen Serie liefert .NET-Experte Holger Schwichtenberg Antworten auf die am häufigsten gestellten Fragen, die .NET-Entwickler beschäftigen.

  1. .NET 2.0 oder .NET 3.5? [1]
  2. VB oder C#? [2]
  3. Express oder Professional? [3]
  4. Windows Forms oder WPF? [4]
  5. LINQ-to-SQL oder ADO.NET Entity Framework? [5]
  6. Visual Studio auf Deutsch oder auf Englisch? [6]
  7. ASP.NET, Ajax oder Silverlight?

ASP.NET gibt es seit dem .NET Framework 1.0 und es wurde seitdem immer wieder erweitert. "ASP" steht für Active Server Pages und drückt aus, dass es sich (primär) um ein serverseitiges Framework für Webanwendungen handelt. Allerdings war ASP.NET von Anfang an nicht rein serverseitig, denn einige Funktionen (etwa Eingabeprüfungen und Hyperlinks, die sich verhalten wie Schaltflächen) erforderten die Ausführung von JavaScript im Browser. Entscheidend ist, dass das .NET Framework nur auf dem Server installiert sein muss. Als Client benötigt man allein einen Browser, der HTML, CSS und JavaScript versteht. Bei deaktiviertem JavaScript funktionieren einige ASP.NET-Funktionen nicht korrekt, aber im Kern kann man ASP.NET ohne JavaScript verwenden. Hinsichtlich der Browser-Kompatibilität hat sich ASP.NET in den letzten Jahren gebessert: Die meisten Funktionen sind inzwischen kompatibel zu anderen Browsern, auch wenn man manchmal etwas nachhelfen muss wie beim Menü-Steuerelement im Chrome-Browser [7].

ASP.NET zeichnet sich durch eine hohe Entwicklerproduktivität aus, wenngleich Desktop-Anwendungen mit Windows Forms weiterhin schneller zu entwickeln sind als Webapplikationen. Webdesigner kritisieren zudem, dass die von ASP.NET erzeugten HTML-Tags nicht genau zu kontrollieren sind. Dabei gibt es in ASP.NET durchaus die Option, die HTML-Ausgabe über sogenannte Control Adapter [8] zu steuern. Für viele Webentwickler steht aber sowieso eher die Produktivität im Vordergrund, und die genaue Kontrolle über die HTML-Ausgabe ist sekundär. Für "Kontrollfetischisten" bietet Microsoft mit dem "ASP.NET MVC [9]"-Framework eine Alternative. Bei ihm ist aber die Produktivität viel geringer als in dem klassischen, ASP.NET Web Forms genannten Modell.

Im Zuge des Ajax-Hypes hat Microsoft 2007 ASP.NET Ajax und das Ajax Control Toolkit [10] veröffentlicht und bietet mit ihnen mehr JavaScript-Funktionen. Ersteres besteht zum einen aus einer clientseitigen JavaScript-Bibliothek, die die Nutzung des XmlHttpRequest-Objekts vereinfacht, von den browserspezifischen Implementierungen abstrahiert und den JavaScript-Funktionsumfang erweitert. Zum anderen ist ASP.NET eine serverseitige Erweiterung für ASP.NET, die die Reaktion auf XmlHttpRequests in Web Forms und Webservices kapselt. Das Ajax Control Toolkit ist eine Bibliothek mit Steuerelementen, die das Aussehen und die Bedienung von Web- in Richtung von Desktop-Anwendungen rücken (zum Beispiel maskierte Eingabe, Drag&Drop-Funktionen und Animationen).

Die Eigenarten der Browser bleiben eine Herausforderung trotz der Berücksichtigung unterschiedlicher Browser durch Microsoft. Auch innerhalb des Internet Explorer funktioniert nicht immer alles reibungslos, wie die folgende Abbildung zeigt – gerade wenn zahlreiche Ajax-Steuerelemente in einer Seite zu kombinieren sind. Viele Entwickler mussten bemerken, dass es zeitaufwendig sein kann, solche Schwierigkeiten in JavaScript und CSS zu lösen, zumal es weiterhin – im Vergleich zur Unterstützung für .NET-Sprachen – nur unbefriedigende Werkzeuge für JavaScript in Visual Studio gibt.

ACTBugParade.jpg

Fehler im AJAX Control Toolkit treten insbesondere auf, wenn man mehrere Ajax-Steuerelemente auf einer Seite verwendet.

Microsofts Silverlight [11] ist ein Webableger der Desktop-Oberflächenbibliothek Windows Presentation Foundation (WPF) und – seit Version 2.0 – eine Mini-Version des .NET Framework. (Nur 4,69 MByte ist das Browser-Plug-in groß.) Microsoft bietet es für Internet Explorer, Firefox und Safari auf Windows sowie Mac (mit Intel-Prozessor) an. Um eine Implementierung für Unix-Derivate bemüht sich Novell mit offizieller Unterstützung durch Microsoft. Unter dem Namen "Moonlight [12]" ist sie in Version 2.0 [13] erst als frühe Vorabrelease verfügbar, während Microsoft am 10. Juli 2009 bereits Version 3.0 [14] seiner Technik veröffentlicht hat. Der Vorgänger – Silverlight 2 – erschien im Oktober 2008. Allein an den relativ kurzen Releasezyklen erkennt man, dass Microsoft Silverlight als strategisches Produkt sieht. Unterstützung für Silverlight auf Windows Mobile, Nokia S60 und für die XBox gibt es seit kurzem oder ist in Vorbereitung. Silverlight ist leider nicht vollständig kompatibel zu WPF.

Verglichen mit ASP.NET und Ajax bietet Silverlight den Vorteil, dass man sich als Entwickler nicht die ganze Zeit mit Krücken über das hinweghelfen muss, was in HTML und HTTP nicht so gedacht war. Silverlight ist viel produktiver, verglichen mit dem Aufwand, den man in Ajax-RIAs (Rich Internet Applications) betreiben muss. Die Browser-Kompatibilitätsprobleme gibt es in Silverlight nicht. Gegen Silverlight im Einsatz in Internet-Anwendungen spricht die noch geringe Verbreitung des Plug-ins. Silverlight bringt es laut riastats.com [15] aktuell auf rund 25 %, wenn man Version 2.0 und 3.0 zusammenzählt. Der größte Konkurrent, Adobes Flash, zählt hingegen 97 % in der Windows-Welt. Microsoft sieht Silverlight einer E-Mail-Konversation mit dem Autor zufolge primär im Intranet-Umfeld.

Silverlight kann gegenüber Flash mit der Durchgängigkeit der Plattform punkten, denn bei Silverlight verwendet der Entwickler auf Client- und Serverseite die gleiche Programmiersprache und die gleichen Werkzeuge. Wobei zu konstatieren ist, dass die Werkzeugunterstützung für Silverlight noch verbesserungswürdig ist. Es existiert zwar ein Plug-in für Visual Studio 2008, damit kann man eine Silverlight-Oberfläche aber nur auf Ebene der XML-Tags erfassen und sich dann in einer Voransicht das Ergebnis anzeigen lassen. Ein direktes Gestalten in der Designansicht ist nicht möglich. Auch eine Unterstützung der Datenanbindung fehlt, wie man sie sonst seit langem aus Visual Studio kennt. Erst Visual Studio 2010 (derzeit als Beta 1 verfügbar) enthält ein Designwerkzeug für Silverlight, das den Namen verdient. Ein Designer für Silverlight steckt bisher nur in Expression Blend, einem zusätzlich zu lizenzierenden Microsoft-Produkt, das in seiner ganzen Bedienung auf Webdesigner ausgelegt ist. Softwareentwickler müssen sich an andere Bedienungsparadigmen gewöhnen.

Windows Presentation Foundation, Silverlights großer Bruder, ist ebenfalls im Browser zu verwenden. Web Browser Application (WBA) oder XAML Browser Application (XBAP) sind die Techniken dafür. Wie bei Silverlight kann der Entwickler über ein <object>-Tag mit XAML (Extensible Application Markup Language) gestaltete Steuerelemente in die Seite einbetten, wobei ein Steuerelement aus anderen bestehen darf. Auf Gestaltungsseite bietet eine WBA alles, was .NET bietet. Dafür erfordert sie ein vollständiges .NET Framework auf dem Client. Dennoch erlaubt die Standardsicherheitskonfiguration einer WBA nicht alles, was .NET kann. Dateisystemzugriffe und andere kritische Aufrufe blockt das Sicherheitssystem, denn einer von einem Webserver geladenen Anwendung vertraut das .NET Framework nicht vollständig – zumindest solange man nicht die Sicherheitskonfiguration ändert.

Oft wird vergessen, dass man seit .NET 1.0 Windows-Forms-Steuerelemente in Webseiten als Objekt einbetten kann. Für die Anwendung gibt es von Microsofts Seite aus nicht einmal einen eigenen Namen. Der Autor hat daher den Begriff ".NET-Applet" für die Windows-Forms-Anwendung kreiert. Dabei wäre .NET-Applet auch als Oberbegriff von Windows Forms und WPF im Browser treffend, denn die Anforderungen und Mittel sind mit denen von Java-Applets vergleichbar. WBAs haben gegenüber Windows-Forms-Applets den Vorteil, dass sie neben Internet Explorer im Firefox laufen.

Für Internet-Anwendungen haben WBAs und .NET-Applets durch die Softwareanforderungen keine Bedeutung, im Intranet findet man sie nicht häufig. Für Intranet-Anwendungen gilt oft die Anforderung des Zugriffs auf lokale Ressourcen wie Dateisystem, Smartcard-Reader und Spezialdrucker (etwa für Etiketten). Solche Hard- und Softwareressourcen kann man weder mit WBA noch mit Windows-Forms-Applets ansprechen. Dafür gibt es nur eine Lösung und die heißt ActiveX [16] im Webbrowser. ActiveX ist durch sein Schwarz-Weiß-Sicherheitsmodell tot für Internet-Anwendungen, denn ActiveX kann ein Steuerelement entweder nur komplett verbieten oder aber es mit den vollen Rechten des angemeldeten Benutzers (etwas eingeschränkt ab Windows Vista mit aktivierter Benutzerkontensteuerung) ausführen. Eine Sandbox mit selektiver Ausführung wie bei Silverlight und den .NET-Applets gibt es nicht. Im Intranet ist es jedoch kein Problem, den eigenen Steuerelementen zu vertrauen.

ActiveX-Steuerelemente mit .NET zu erstellen ist zwar technisch möglich, ergibt aber keinen Sinn. Denn erstens braucht man ein .NET Framework auf dem Client und zweitens würde wieder das Sicherheitssystem greifen, das man ja im Fall des Zugriffs auf Ressourcen nicht will. ActiveX programmiert man am besten mit C++ als Unmanaged Code, denn die entstehenden DLLs sind klein und eine Laufzeitumgebung ist nicht erforderlich.

Klar ist, dass WBA und Windows-Forms-Applets keinen großen Markt haben. ActiveX hat seine Existenzberechtigung in einer Nische und wird dort noch so lange leben, bis Microsoft einen adäquaten Ersatz geschaffen hat. Den Wettkampf um die großen Märkte tragen ASP.NET in Verbindung mit Ajax gegen Silverlight aus. Für Internet-Anwendungen kommt Silverlight für viele noch nicht in Frage, solange Microsoft das Plug-in nicht per Windows-Update auf die Rechner zwingt. Das aber wird Microsoft wohl nicht tun, solange der Firma die EU im Nacken sitzt.

Wenn man jedoch eine Intranet-Anwendung will, die aussieht und funktioniert wie eine Desktop-Anwendung, ist Silverlight gegenüber dem Paar aus ASP.NET und Ajax die bessere Wahl. Denn wozu sollte man sich noch mit JavaScript plagen, wenn man bessere Ergebnisse in kürzerer Zeit in Silverlight erzielen kann? ASP.NET plus Ajax ist die erste Wahl für das Internet, wobei man mit grafischen Spielereien sparsam umgehen sollte, außer wenn man ganze Säle voll mit JavaScript-"Fricklern" und große Budgets hat.

Dr. Holger Schwichtenberg
bietet mit seinem Unternehmen www.IT-Visions.de [17] Beratung und Schulungen im .NET-Umfeld. Er hält Vorträge auf Fachkonferenzen und ist Autor zahlreicher Fachbücher.
(ane [18])


URL dieses Artikels:
https://www.heise.de/-787452

Links in diesem Artikel:
[1] https://www.heise.de/hintergrund/Reicht-NET-2-0-oder-muss-man-NET-3-5-einsetzen-227230.html
[2] https://www.heise.de/hintergrund/C-oder-Visual-Basic-Die-richtige-Programmiersprache-fuer-NET-Entwickler-227234.html
[3] https://www.heise.de/hintergrund/Genuegt-das-kostenfreie-Visual-Studio-Express-oder-muss-man-eine-Professional-Variante-kaufen-227246.html
[4] https://www.heise.de/hintergrund/NET-Oberflaechen-mit-Windows-Forms-oder-WPF-227252.html
[5] https://www.heise.de/hintergrund/Verwirrung-um-objekt-relationale-Mapper-LINQ-to-SQL-oder-ADO-NET-Entity-Framework-227256.html
[6] https://www.heise.de/hintergrund/Visual-Studio-auf-Deutsch-oder-auf-Englisch-403653.html
[7] http://browsercompatibility.codeplex.com/
[8] http://msdn.microsoft.com/en-us/library/67276kc5.aspx
[9] http://www.asp.net/mvc/
[10] http://www.asp.net/ajax/AjaxControlToolkit/Samples/
[11] http://silverlight.net/
[12] http://www.mono-project.com/Moonlight
[13] https://www.heise.de/news/Moonlight-2-Beta-Freie-Silverlight-Variante-fuer-Linux-holt-auf-751725.html
[14] https://www.heise.de/news/Microsoft-veroeffentlicht-Silverlight-3-6536.html
[15] http://riastats.com/
[16] http://en.wikipedia.org/wiki/ActiveX
[17] http://www.IT-Visions.de/
[18] mailto:ane@heise.de