ASP.Net 2.0 mit Ajax aufpolieren
Artikel erschienen in Swiss IT Magazine 2006/20
Asynchronous JavaScript and XML, kurz Ajax, hat das Web in den vergangenen zwei Jahren dermassen revolutioniert wie kaum ein anderes Konzept zuvor. Die Möglichkeit, innerhalb einer Webseite lediglich einen Bereich oder reine Nutzdaten dynamisch nachladen zu können, bildet die Grundlage für das vielbeschworene Web 2.0. Mit den ASP.Net 2.0 Ajax Extensions, die bisher unter dem Codenamen «Atlas» firmierten und in den kommenden Wochen in der finalen Version auf den Markt kommen sollen, leistet nun auch Microsoft mit einem eigenen Framework seinen Beitrag zu dieser Entwicklung. Während sich der Name «Atlas» noch auf das gesamte Framework zur Entwicklung von Ajax-basierten Webanwendungen bezog, wurde die Namensgebung für die finale Version aufgespalten – es gibt nun die ASP.Net 2.0 Ajax Extensions und die Microsoft Ajax Library, auch wenn erstere Bezeichnung
im Alltag gerne für beide Komponenten eingesetzt wird.
Die Grundlage bildet dabei die Microsoft Ajax Library, eine Sammlung von in JavaScript geschriebenen Klassen zur Anwendung und Verwaltung der XML-basierten Kommunikation zwischen Client und Webserver. Da diese JavaScripts nicht nur zum Internet Explorer, sondern auch zu zahlreichen weiteren Browsern kompatibel sind, lassen sich bereits hiermit plattformübergreifende Ajax-Applikationen entwickeln.
Insbesondere muss serverseitig dazu nicht zwingend ASP.Net 2.0 eingesetzt werden, prinzipiell kann die Microsoft Ajax Library mit jedem beliebigen Back-end kombiniert werden, sofern beide in einem einheitlichen Format miteinander kommunizieren können. Es spricht also nichts dagegen, beispielsweise PHP-basierte Webanwendungen mit Hilfe der Microsoft Ajax Library aufzuwerten.
Der Vorteil bei der Verwendung liegt auf der Hand – der Entwickler von Webapplikationen muss sich nicht mehr per Hand um die Kommunikation zwischen Client und Server mittels des XmlHttpRequest-Objektes kümmern, sondern kann auf vorgefertigte Klassen zurückgreifen, die nicht nur die Kommunikation an sich kapseln, sondern auch Routinen zur Fehlerbehandlung und Thread-sicherer Verarbeitung ausführen.
Ausserdem entfällt bei der Verwendung der Microsoft Ajax Library die Notwendigkeit, für verschiedene Browser zu entwickeln. Zwar muss die Webseite nach wie vor mit unterschiedlichen Browsern getestet werden – schliesslich wird die Microsoft
Ajax Library nicht von allen am Markt befindlichen Browsern unterstützt –, aber die Ersparnis bei der Entwicklung macht sich deutlich bemerkbar.
Schliesslich führt die Microsoft Ajax Library weitere neue Features für JavaScript ein, die man nicht mehr missen möchte, sobald man sich einmal an sie gewöhnt hat. Dazu zählen unter anderem Namespaces für in JavaScript geschriebene Klassen, die sich sogar hierarchisch organisieren lassen.
Serverseitig wird die Microsoft Ajax Library durch die ASP.Net 2.0 Ajax Extensions ergänzt, welche sich mit Hilfe von entsprechenden Templates auch problemlos in Visual Studio integrieren lassen. Durch die ASP.Net 2.0 Ajax Extensions werden neue Controls bereitgestellt, mit denen ASP.Net-Seiten deklarativ um dynamische Features erweitert werden können.
Eines der wichtigsten dieser Controls ist das UpdatePanel, mit dem – wie oben bereits angesprochen – gezielt einzelne Bereiche einer Webseite aktualisiert werden können, ohne die gesamte Seite neu laden zu müssen. Dieses Neuladen kann dabei nicht nur in Reaktion auf ein Ereignis – wie beispielsweise das Anklicken eines Button – geschehen, sondern auch durch sonstige Aktionen ausgelöst werden. Vom quasi manuellen Aktualisieren mittels Programmcode bis hin zur Timer-gesteuerten Aktualisierung mit Hilfe von JavaScript-Timern ist alles möglich. Auch hier offenbart sich der Vorteil, die ASP.Net 2.0 Ajax Extensions zu verwenden anstatt den Ajax-Code manuell zu schreiben, wieder sehr schnell – die Controls ermöglichen eine deklarative Beschreibung der geforderten Ajax-Unterstützung und klinken sich zudem nahtlos in eine bestehende ASP.Net-2.0-Umgebung ein. Zudem lassen sie sich in Visual Studio genauso wie alle anderen Controls handhaben, so dass nur eine Arbeitsweise erlernt werden muss.
Ergänzt werden die Microsoft Ajax Library sowie die ASP.Net 2.0 Ajax Extensions durch das ASP.Net Ajax Control Toolkit, das es wie das eigentliche Framework ebenfalls kostenlos bei Microsoft zum Download gibt (http://ajax.asp.net ). Das ASP.Net Ajax Control Toolkit enthält als Ergänzung zu den Basis-Controls aus den ASP.Net 2.0 Ajax Extensions zahlreiche weitere Controls, die für speziellere Einsatzgebiete geeignet sind.
Neben zahlreichen Menüs, Navigationsbäumen und Dialogen finden sich viele kleinere Werkzeuge wie Controls zur Überprüfung der Stärke von Kennwörtern, zur Erweiterung der Funktionalität der Validatoren von ASP.Net 2.0, zur Abgabe von Ratings und anderes mehr. Ausserdem enthält das ASP.Net Ajax Control Toolkit ein SDK, das die Entwicklung von eigenen Ajax-basierten Controls ermöglicht. Bis Ende Jahr sollen laut Microsoft mehr als 50 fertige Ajax-Controls zur Verfügung stehen.
Insgesamt stellt sich damit die Frage, wann die ASP.Net 2.0 Ajax Extensions in der Praxis eingesetzt werden sollten. Die Antwort auf diese Frage ist zweiteilig: Zum einen sollte man sich überlegen, wann Ajax an sich eingesetzt werden, zum anderen, warum man speziell das Microsoft-Framework verwenden sollte, sofern man sich für den Einsatz von Ajax entschieden hat.
Die zweite Frage ist relativ leicht zu beantworten – die ASP.Net 2.0 Ajax Extensions bieten sich insbesondere dann an, wenn für die Webentwicklung ohnehin bereits mit Microsoft-Technologien gearbeitet wird. Speziell beim Einsatz von ASP.Net 2.0 sind sie natürlich die ideale Ergänzung, doch auch bei älteren Versionen von .Net kann das Framework vor allem aufgrund der Microsoft Ajax Library nützlich sein und viel Arbeit ersparen.
Entwickelt man hingegen mit einer alternativen Technologie – sei es J2EE, PHP oder sonst
etwas – so kann logischerweise nur noch die Microsoft Ajax Library eingesetzt werden. Als reine clientseitige Ajax-Bibliothek ist sie gut geeignet, wobei man sich dabei auch überlegen muss, ob man dann nicht eher zu einem speziell an die jeweilige Plattform angepassten Produkt greift, schliesslich gibt es auch für J2EE oder PHP entsprechende Frameworks.
Die erste Frage hingegen, ob Ajax überhaupt eingesetzt werden soll, lässt sich kaum pauschal beantworten. Ajax kann dann seine Stärken voll ausspielen, wenn sich eine Webanwendung möglichst wie eine Desktop-Applikation verhalten soll und der Benutzer möglichst wenig vom zustandslosen Charakter der Anwendung merken darf – schliesslich wird das im Web verwendete Request/Response-Modell hierbei auf ein Minimum reduziert.
Ein sehr gutes Beispiel für eine erfolgreiche Ajax-basierte Applikation liefert Microsoft mit dem in den Exchange Server 2003 integrierten Outlook Web Access gleich selber, denn hier wird eine klassische Desktop-Applikation – Outlook nämlich – als Webanwendung nachgebaut. Das Request/Response-Schema ist auf möglichst feingranulare Aktionen beschränkt, so dass wirklich der Eindruck einer flüssig arbeitenden, zustands-, aber dennoch browserbasierten Anwendung entsteht.
Wo sich Ajax jedoch schwierig einsetzen lässt, sind alle Anwendungen, die komplexe Abläufe modellieren müssen oder in denen es sinnvoll sein kann, dass der Benutzer auf einzelne Seiten gezielt zugreifen kann. Da sich bei einer Aktualisierung einer Ajax-basierten Webseite nicht die URL ändert, lässt sich immer nur die Rahmenseite den Favoriten hinzufügen, den jeweiligen Content erreicht man immer nur über die Navigation der Webanwendung.
Die Architektur von ASP.Net 2.0 Ajax
Mit den ASP.Net 2.0 Ajax Extensions stellt Microsoft ein sehr umfangreiches und dennoch flexibles Framework vor, das es dem Entwickler durch seinen deklarativen Charakter und die nahtlose Einbindung in Visual Studio sehr einfach macht, bestehende Webanwendungen um Ajax-basierte Features zu erweitern.
Da die clientseitige Komponente des Framework, die Microsoft Ajax Library, zudem plattformunabhängig arbeitet und mit zahlreichen Browsern kompatibel ist, lassen sich die ASP.Net 2.0 Ajax Extensions partiell auch sehr gut mit anderen Plattformen wie J2EE oder PHP einsetzen.
Wer nun Lust auf mehr bekommen hat, findet unter http://ajax.asp.net/docs/Default.aspx eine sehr ausführliche Dokumentation mit vielen Beispielen, anhand derer man sehr schnell den Einstieg in das Microsoft-Framework findet.