17.03.2006, 18:59 Uhr

Ajax-Technologie für ASP.NET 2.0

Bei Microsoft ist man derzeit damit beschäftigt, ASP.NET 2.0 fit für die derzeit boomende Ajax-Technologie zu machen. Das Projekt nennt sich «Atlas». Wir werfen einen ersten Blick darauf.
Tobias Hauser ist Autor, Trainer und Berater für Webtechnologien.
Der Begriff Web 2.0 beschreibt keine neue Technologie und eigentlich auch keine Revolution im Informationsverhalten, sondern er steht für die nächste Generation von Webanwendungen. Geprägt wurde er von Dale Dougherty, der eine Konferenz für O"Reilly veranstaltete, um die Zukunft des Webs zu diskutieren. Zum Oberbegriff Web 2.0 gehören viele Komponenten wie beispielsweise das semantische Web und soziale Netze. Ebenfalls dazu gezählt werden Webanwendungen, die klassische Software ins Web portieren sollen.

Was Ajax ist

Ein wichtiger Bestandteil von Web 2.0 ist Ajax. Das Akronym steht für Asynchronous Javasript and XML. Dieses Kunstwort geht auf einen Artikel des Beraters Jesse James Garrett zurück [1]. Das darin erläuterte Grundkonzept ist recht simpel: Der Client enthält Javasript-Code, mit dem sich ein HTTP-Request an den Server absetzen lässt. Dieser antwortet asynchron, das heisst, das Javasript-Programm wird nicht angehalten. Stattdessen wird ein Ereignis angestossen, wenn der Request erfolgreich war. Die Daten, die übermittelt werden, sind wie das Akronym schon sagt XML oder alternativ auch ein einfacher String. Basis des ganzen ist das «XMLHttpRequest»-Objekt, das im Internet Explorer als ActiveX-Objekt und in den anderen Browsern wie Mozilla, Safari, Konqueror und Opera als natives Browserobjekt integriert ist. Für eine Webanwendung bedeutet Ajax vor allem eine Innovation: Für serverseitige Abfragen ist kein Neuladen der Seite (in Microsoft-Nomenklatur Postback) notwendig.
Und so sieht der Javasript-Code (Listing 1)aus: Zuerst wird das XMLHttpRequest-Objekt instanziiert. Hier ist eine etwas aufwändigere Fallunterscheidung notwendig, da sich der Internet Explorer wie erwähnt vom Rest unterscheidet. Für den neuen Internet Explorer 7 ist übrigens angekündigt, das zu ändern und XMLHttpRequest ebenfalls als natives Browserobjekt zu implementieren. Die Methode open() (Listing 2)wird dann dazu verwendet, um die serverseitige Quelle anzugeben. Das kann eine XML-Datei oder ein Skript sein, das XML beziehungsweise einen String zurückliefert. Um Daten zu übertragen, wählen Sie als ersten Parameter die Versandmethode.
Der dritte Parameter gibt an, dass die Anfrage asynchron übertragen wird (Wert true). Um festzustellen, wann der Ajax-Aufruf erfolgreich war, gibt es das Ereignis onreadystatechange. Dem weisst man eine Funktion zu, um die Rückgabe auszuwerten. Das Ereignis wird in fünf Status ausgeführt, wovon im allgemeinen aber nur der letzte interessant ist, der besagt, dass die Antwort des Servers angekommen ist. Den Status erhalten Sie mit der Eigenschaft readState (Listing 3). Dann können Sie die Rückgabe mit responseText als String oder mit responseXML als DOM-Objekt in Javasript weiterverarbeiten:

Microsoft + Ajax = Atlas

Microsoft hat das XMLHttpRequest-Objekt ursprünglich erfunden, um für Outlook den Web Access zu verbessern. Die nächsten interessanten Projekte kamen eher von anderen Marktteilnehmern wie Google (Google Suggest, Google Maps). Aber in ASP.NET 2.0 ist bereits Ajax in kleiner Variante integriert. Die zuständige Funktion nennt sich Client Callbacks, die auch auf das XMLHttpRequest-Objekt im Browser setzt. Allerdings ist diese Variante auf einfache Strings limitiert und bietet keine zusätzlichen Hilfen. Deswegen bietet Microsoft für die Zukunft ein eigenes Framework speziell für Ajax-Anwendungen. Passend zu den griechischen Helden mit Namen Ajax heisst es Atlas und trägt zwar nicht die Erde, aber doch die Hauptlast in Sachen Javasript [2]. Die Idee ist einfach: Atlas ist ein Framework mit vorgefertigten Komponenten, die viele Ajax-Hilfen gleich fertig zur Verfügung stellen. Microsoft nimmt also - ähnlich wie beim .NET Framework und den Web Controls im Allgemeinen - dem Entwickler Teile der Arbeit ab und versucht vor allem, seinen Entwicklern Ajax-Anwendungen mit wenig oder gar keinen Javasript-Kenntnissen zu erlauben. (Grafik 1)
Technisch ist Ajax eine in Visual Studio und Visual Web Developer integrierbare VSI-Komponente für VB.NET und C#. Wird Ajax installiert, steht in Visual Studio eine Ajax-Vorlage namens ASP.NET 'Atlas' Web Site (Screen 1) zur Verfügung, die automatisch alle benötigten Dateien erzeugt. Alternativ finden Sie auf der Atlas-Homepage auch noch ein Paket mit einem in Atlas realisierten Wiki als Beispielanwendung. Auch dieses Paket ist eine VSI-Erweiterung und nach der Installation steht die entsprechende Vorlage zur Verfügung. (Screen 1)

Teile von Atlas

In Atlas integriert sind Komponenten für die verschiedensten Anwendungsfälle. Dazu zählen: o Erweiterung von Web Controls
o Client-seitige Controls in Anlehnung an die Web Controls
o Automatische Unterstützung von Web Services
o Datenbindung o Animation
o Javasript-Hilfen für den Client
Bestehende Web Controls lassen sich beispielsweise in Atlas-Elemente einfassen. So können aktuelle Controls beispielsweise mit Drag & Drop versehen werden. Da Atlas die Mühen von Client-seitigem Javasript möglichst fern vom Nutzer halten möchte, werden die speziellen Atlas-Fähigkeiten in eine Art Client-seitiges XML-Skript vom Typ text/xml-Script umgewandelt. Diesen XML-Code können Sie auch selbst schreiben. Er ruft die entsprechenden Verhalten und Skripte aus der Atlas-Bibliothek auf. Die Client-seitigen Controls sind dagegen an die Web Controls angelegte Controls, auf die aber per Client-seitigem Javasript-Code zugegriffen wird. Dafür definiert Atlas bestimmte Methoden wie beispielsweise set_text() und get_text() für ein Label-Control. (Listing 4)
Man sieht hier auch die wichtigen Bestandteile von Atlas. Es wird durchaus mit Client-seitigem Code gerarbeitet, wobei es allerdings dort Verhalten und Methoden gibt, die den Code deutlich vereinfachen. Atlas-spezifisch ist auch das WebControl «ScriptManager», das die Atlas-Bibliotheken mit dem Javasript-Code einbindet. Die Webservices werden auch Client-seitig per Atlas eingebunden. Im Gegensatz zu früheren Ansätzen funktioniert das auch Browser-übergreifend. Weitere Fähigkeiten wie die Datenbindung und die Animationen sind praktisch, aber im aktuellen Release noch nicht ganz ausgereizt. Hier ist für die Beta-Versionen und dann natürlich die Final noch einiges an zusätzlicher Funktionalität zu erwarten. (Screen 2)

Was noch zu erwarten ist

Aktuell ist Atlas noch eine Preview, also eine Vor-Beta-Version, die aber öffentlich verfügbar ist. Bisher gibt es dementsprechend auch noch keine Lizenz, um Atlas produktiv einzusetzen. Das wird sich voraussichtlich mit einer der Beta-Versionen ändern und ist - bei aller Vorsicht - noch dieses Jahr zu erwarten. In der nächsten Visual Studio-Version - Codename «Orcas» - ist Atlas dann natürlich fest integriert.
Tobias Hauser


Das könnte Sie auch interessieren