Web 2.0: Microsoft will nichts verpassen und veröffentlicht Ajax-Tools

18.05.2007
Von Dr. Holger Schwichtenberg
Microsoft hat seine Ajax-Werkzeuge früher als geplant veröffentlicht. Die Frühgeburt kann sich grundsätzlich sehen lassen, im Detail müssen Anwender aber noch mit Macken kämpfen.

Microsofts Kunden waren es in den vergangenen Jahren sowohl beim Betriebssystem als auch bei der Programmierplattform .NET gewöhnt, dass sich die Erscheinungstermine stark verzögerten. Umso mehr verwunderte das Redmonder Web-Entwicklungsteam im September 2006 mit der Ankündigung, das Erscheinen der eigenen Ajax-Lösung auf Ende 2006 vorzuziehen. Tatsächlich erschienen sind die unter dem Codenamen "Atlas" entwickelten Produkte schließlich erst gegen Ende Januar 2007. Damit war die Veröffentlichung zu spät, um Einzug in das .NET Framework 3.0 zu halten, das im November 2006 zusammen mit Windows Vista freigegeben wurde.

Die unter dem Codenamen "Atlas" entwickelte Lösung ist inzwischen aufgeteilt in vier unabhängige Installationspakete:

  • Microsoft Ajax Library,

  • ASP.NET Ajax Extensions,

  • Ajax Control Toolkit und

  • ASP.NET Ajax Futures.

Alle diese Pakete lassen sich als kostenloser Zusatz zum .NET Framework 2.0 oder 3.0 installieren.

Ajax Library

Die Darstellungsprobleme von Microsofts Ajax Control Toolkit sind im Internet Explorer noch größer als im Firefox.
Die Darstellungsprobleme von Microsofts Ajax Control Toolkit sind im Internet Explorer noch größer als im Firefox.

Die Microsoft Ajax Library ist eine Client-seitige Javascript-Bibliothek, die Ajax-Funktionen und Erweiterungen der Sprache Javascript bereitstellt. Die Erweiterungen beziehen sich sowohl auf die eingebauten Typen als auch auf die objektorientierten Fähigkeiten von Javascript. In dem modifizierten Javascript stehen Klassen, Schnittstellen, Vererbung und Reflection zur Verfügung. Die Benennung ist an die .NET-Klassenbibliothek angelehnt, damit .NET-Entwickler sich im Browser-Scripting schnell zurechtfinden.

ASP.NET Ajax Extensions

ASP.NET Ajax Extensions umfassen neben der Microsoft Ajax Library auch Erweiterungen der Web-Server-Programmierumgebung ASP.NET, insbesondere in Hinblick auf die Entgegennahme und Verarbeitung von XMLHTTP-Aufrufen von der Ajax Library. Die Ajax Library und ASP.NET können auf zwei verschiedene Arten miteinander kommunizieren: Bei der partiellen Seitenerzeugung (englisch: Partial Page Rendering) definiert der Entwickler in der Web-Seite durch so genannte Update Panels einen oder mehrere Seitenbereiche, die der Browser bei einem Rückruf zum Server austauschen soll (siehe Grafik "Partielle Seitenerzeugung mit ASP.NET Ajax"). Was einen Rückruf auslöst, steht in den Triggern eines Update Panels. Trigger können Steuerelemente sein oder der Ablauf eines Zeitgebers im Browser.

Auf der Server-Seite erzeugt ASP.NET dann das entsprechende Seitenfragment neu. Der Web-Entwickler muss keine einzige Zeile Programmcode schreiben und kann mit der partiellen Seitenerzeugung auf einfache Weise auch bestehende Websites Ajax-fähig machen, denn neben dem Update Panel braucht er nur noch einen Script Manager, der sich automatisch um das Einbinden der richtigen Javascript-Bibliotheken in der richtigen Sprachversion kümmert. Lästig ist hier nur, dass das Update Panel sich als ein nicht ausblendbarer grauer Kasten in der Entwurfsansicht darstellt und damit das Wysiwyg-Layout der Seite zerstört.

Noch weiter reduziert wird die Netzwerklast beim zweiten Modell, dem Web-Service-Aufruf (alias Web-RPC, siehe Grafik "Web-Service-Aufruf mit ASP.NET Ajax"). Hier kommuniziert der Browser mit einem Web-Service auf dem Server, der dem Client Daten liefert, die der Browser dann selbst visualisieren muss. In dieser Variante erfolgt nur eine Übertragung der Nutzdaten ohne jegliche Formatierung. Als Datenaustauschformat kommt im Standard nicht das geschwätzige XML, sondern die kompakte Javascript Object Notation (JSON) zum Einsatz. Das XML-basierende Soap ist aber eine Option.

Bewertung

Gut

  • Einfaches Modell, das auch auf bestehende Websites angewendet werden kann;

  • Nutzung von Web-Services spart Netzlast und erlaubt Wiederverwendbarkeit;

  • hoher Wiedererkennungswert für .NET-Entwickler.

Schlecht

  • Bisher unzureichende Werkzeugunterstützung;

  • noch zahlreiche Darstellungsfehler;

  • die Anbindung an .NET-3.0-Techniken befindet sich noch in der Entwicklung.

Sehr elegant ist das Zusammenspiel mit den in ASP.NET definierbaren Web-Services (ASMX) gelöst, denn hier generiert ASP.NET für den Browser ein Proxy-Objekt in Javascript, das die gleichen Attribute besitzt wie das Server-seitige .NET-Objekt. Im Gegensatz zur partiellen Seitenerzeugung ist ein Web-RPC nicht realisierbar ohne Code auf Server und Client. Bestehende ASP.NET-gestütze Web-Services muss der Entwickler allerdings nur um genau eine Zeile Programmcode ergänzen. Derzeit noch nicht möglich ist der Aufruf eines Web-Service, der mit der Windows Communication Foundation (WCF) in .NET 3.0 definiert wurde. Die Unterstützung für WCF erscheint erst mit .NET 3.5 gegen Ende dieses Jahres. In diesem Zusammenhang plant Microsoft auch, Klassen für RSS und ATOM in das .NET-Framework zu integrieren.

Das Modell der partiellen Seitenerzeugung ist auf einfache Weise auch auf bestehende ASP.NET-basierende Web-Seiten anwendbar.
Das Modell der partiellen Seitenerzeugung ist auf einfache Weise auch auf bestehende ASP.NET-basierende Web-Seiten anwendbar.

Die Ajax Library kann grundsätzlich auch mit anderen Web-Server-Programmierumgebungen zusammenarbeiten und lässt sich zudem unabhängig von .NET einsetzen. Eine Lösung für das Zusammenspiel mit PHP steckt aber noch in den Kinderschuhen. Außerdem ist die Ajax Library Browser-unabhängig: Explizit unterstützt Microsoft neben dem Internet Explorer auch Firefox, Safari und Opera.

Ajax Control Toolkit

Das Ajax Control Toolkit implementiert den Teil von Ajax, den man vor dem Hype eine "Javascript-Bibliothek" oder "DHTML-Bibliothek" nannte. Das Control Toolkit umfasst eine Sammlung von Client-seitigen Steuerelementen zur Eingabeprüfung, Navigation, Visualisierung und Animation, wobei die wenigsten dieser Steuerelemente tatsächlich mit dem Server interagieren. Die meisten sind rein Client-seitige Oberflächenspielereien. Technisches Instrument des Ajax Control Toolkits sind so genannte Extender, die statische HTML-Tags um zusätzliche dynamische Funktionen erweitern, indem sie passende Javascript- und CSS-Fragmente erzeugen.

ASP.NET Ajax Future

Beim Web-RPC-Modell erfolgt der Datenaustausch zwischen Web-Service und Browser vorzugsweise mit dem kompakten JSON.
Beim Web-RPC-Modell erfolgt der Datenaustausch zwischen Web-Service und Browser vorzugsweise mit dem kompakten JSON.

Das vierte Paket, die ASP.NET Ajax Futures, ist ein Vorab-Release der nächsten Version von ASP.NET Ajax. Hier sind Funktionen gesammelt, die Microsoft aufgrund der Vorverlegung des Erscheinungstermins noch nicht fertig stellen konnte. Herausragendes Feature hier ist das so genannte XML-Script, eine Tag-basierende Notation, die Client-seitige Datenbindung ermöglicht und zahlreiche andere Javascript-Routineaufgaben vereinfacht.

Bisher wenig Editor-Unterstützung

ASP.NET-Entwickler sind von Microsoft umfangreiche Assistenten gewöhnt, die bei der Erstellung von Web-Seiten viele Routineaufgaben erledigen und keine detaillierte Syntaxkenntnis erfordern. Für die Ajax-Produkte von Microsoft ist diese Unterstützung bisher jedoch noch sehr rudimentär. Eine neue Version der Entwicklungsumgebung Visual Studio ist weder im Zusammenhang mit dem .NET-Framework 3.0 noch im Zuge der Ajax-Erweiterungen erschienen. Erst mit der nächsten Version, die Microsoft derzeit unter dem Codenamen "Orcas" entwickelt und die voraussichtlich Ende 2007 als "Visual Studio 2008" veröffentlicht wird, erhalten die Entwickler Assistenten, Intellisense-Eingabeunterstützung und einen adäquaten Debugger.

Die unzureichende Entwicklungsumgebung ist aber nicht die einzige Erschwernis. In der Praxis haben sich schon zahlreiche Schwierigkeiten gezeigt, zum Beispiel mit HTML-Framesets, die mancherorts trotz der CSS-Alternativen noch im Einsatz sind. Große Probleme hat das Ajax Control Toolkit, wenn man zahlreiche Ajax-Steuerelemente auf einer Seite verwendet. Dann neigt der Browser dazu, Elemente zu überlagern oder nicht mehr korrekt auszublenden. Interessanterweise treten einige dieser Fehler nur im Microsoft-eigenen Internet Explorer auf, während Firefox die Seite korrekt darstellt. Solange man die Steuerelemente einzeln verwendet, wie in der Online-Demo von Microsoft, kommt es nicht zu diesen Phänomenen.

Bei dem Ajax Control Toolkit handelt es sich genau genommen nicht um ein Microsoft-Produkt, sondern um einen Gehversuch der Redmonder auf dem Terrain der Open-Source-Entwicklung. Jedermann kann sich zur Mitarbeit am Control Toolkit im Rahmen des Redmonder Quellcodeportals "Codeplex" melden.

Auch von den übrigen Ajax-Paketen hat Microsoft den Quellcode freigegeben. Dabei steht die Ajax Library unter der "Microsoft Permissive License" (MS-PL), die auch eine Veränderung und Weitergabe zu kommerziellen Zwecken gestattet. Die Server-seitige ASP.NET-Unterstützung in Form der ASP.NET Ajax Extensions hingegen unterliegt der "Microsoft Reference License" (MS-RL), die nur das Betrachten und Fehlersuchen erlaubt. (ue)

Fazit

  • Microsofts Ajax-Lösungen überzeugen durch die Wahl zwischen der einfachen Handhabung bei der partiellen Seitenerzeugung und der mächtigen Kopplung an Web-Services.

  • Die Werkzeugunterstützung ist noch nicht perfekt, aber dennoch besser als bei manch anderen Ajax-Toolkits.

  • Wirklich unschön sind die Fehler, die noch in den Bibliotheken stecken. Als betroffener Entwickler fragt man sich hier, ob die Vorverlegung des Erscheinungstermins nicht ein Schnellschuss war.

  • Auch das Open-Source-Konzept des Control Toolkits ist zweifelhaft, wenn Microsoft nun offiziell das propagiert, was Kritiker dem Hersteller schon häufiger vorwarfen: das Verlagern des Bugfixing auf den Anwender.