Schlüsselfertige AJAX-Komponenten im Vergleich

AJAX.NET Professional (AjaxPro)

Die Library Ajax.NET Professional (oder kurz AjaxPro) wird privat von Michael Schwarz entwickelt und erfreut sich jetzt bereits seit geraumer Zeit recht großer Beliebtheit in der Entwickler-Community. Die Zielgruppe ist der professionelle Entwickler, der in erster Linie elementare AJAX-Techniken für seine ASP.NET-Webanwendungen einsetzen will. Der Autor beschränkt sich auf die Kernfunktionalitäten, Unterstützung für schicke Animationen oder visuelle Controls gibt es nicht. Mit dieser Herangehensweise versucht der Autor gerade dem professionellen Entwickler entgegenzukommen, der mehr Wert auf die Optimierungen des eigenen JavaScript-Codes legt, als es bei fertigen Komponenten möglich wäre. Die Notwendigkeit für diese „Strenge“ liegt in der manchmal etwas unbedachten Herangehensweise, die einige Entwickler bei AJAX augenscheinlich an den Tag legen. Schlüsselfertige Komponente, reizvolle Effekte und andere Versprechungen animieren Entwickler ohne jegliches Hintergrundwissen AJAX-Anwendungen zu erstellen, ohne sich der Konsequenzen bezüglich der Performance bewusst zu sein. In einigen Fällen wäre selbst ein mit Bedacht eingesetzter Postback oder auch ein IFrame sinnvoller als ein zu oft eingesetztes asynchrones Nachladen.

AjaxPro zeichnet sich besonders durch seine Daten-Serialisierung aus, die eine nahtlose Integration einer bereits vorhandenen Geschäftslogik erleichtert. Nicht nur die eigenen Klassen können problemlos nach JavaScript transportiert werden, auch das relativ komplexe DataSet wird  (mit Einbußen der Funktionalität) unterstützt. Binäre Daten, wie etwa Grafiken, müssen allerdings über den Umweg einer URL nachgeladen werden (Listing 1).

// DataSet mit JavaScript erstellen
var dataSet = new Ajax.Web.DataSet();
var table = new Ajax.Web.DataTable();

table.addColumn("FirstName", "System.String");
table.addColumn("Age", "System.Int32");
table.addRow({"FirstName":"Michael", "Age":28});
table.addRow({"FirstName":"Tanja", "Age":25});
ds.addTable(table);

Leider bietet AjaxPro keine Unterstützung für Web Services. Ein Workaround besteht darin, die Methoden ähnlich wie bei einem Web Service mit einem AJAX-Attribut für einen öffentlichen Zugang zu kennzeichnen. Diese werden entweder kurzerhand in der Page-Klasse der jeweiligen Seite platziert, oder, was empfohlen wird, als statische Methoden in zentralen Klassen deklariert. Dadurch profitieren alle Seiten der Webanwendung gleichermaßen von diesen Methoden und durch die statische Deklaration müssen keine Objekte instanziiert werden. Das „AJAX
.NET Professional Starter Kit
“ enthält dazu ein passendes Beispiel. Da AjaxPro nicht Open Source ist, sind Bug-Reports an den Autor sehr wichtig, um die Codequalität zu verbessern, von der wiederum die Community profitiert.

Dart PowerWEB LiveControls

Die Firma Dart bietet mit ihrem Produkt PowerWEB LiveControls gleich eine Palette von insgesamt 21 Komponenten an, die mit AJAX-Fähigkeiten ausgestattet wurden. Bei den meisten handelt es sich um direkte Pendants zu den ASP.NET-Standard-Controls, die sich daher 1:1 in einem Webformular austauschen lassen. Die Dart-Controls verfügen zusätzlich über eine asynchrone Kommunikation, mit der serverseitig Ereignisse ausgelöst werden können. Der Klick auf einen Button erzeugt zwar kein Postback mehr, allerdings immer das vertraute Ereignis auf dem Server. Dadurch lassen sich relativ schnell und einfach vorhandene Webseiten mit AJAX erweitern, ohne dass eine einzige Zeile Code programmiert werden muss.

Neben den LiveControls bietet Dart weitere Produkte, die asynchron mit dem Webserver zusammenarbeiten. Die TextBox, ein recht komfortabler HTML-Editor, und Zoom, eine Komponente, die das Navigieren durch Bilder im Stile von Google erlaubt. Alle Controls arbeiten mit den „LiveControls“ nahtlos zusammen. Wer trotz der angebotenen Vielfalt eigene Controls erweitern oder JavaScript-Code einbinden möchte, kann dass über das LiveCallback-Control erreichen. Mit seiner Hilfe lassen sich zentral Anfragen zum Server absetzen. Die Klassen und Methoden des Servers stehen allerdings nicht über vorbereitete Proxies zur Verfügung, die jeden Aufruf transparent weiterleiten. Die Aufrufe erfolgen über eine zentrale Methode (Listing 2).

Listing 2
----------------------------------------
// Client
 

// Server
public string ServerFunction() {
  return "This is from the server.";

Dart verbessert das Handling des oft relativ großen und unhandlichen ViewStates mit einem eigenen ViewState Manager. Dieser ist nach wie vor notwendig, damit die asynchronen Anfragen auf dem Server transparent durchgeführt werden können. Es ist allerdings nicht mehr erforderlich, dass der gesamte ViewState bei jeder Anfrage zum Server übertragen werden muss, was wiederum den Umfang der übertragenen Daten drastisch reduziert. Bei Dart scheint man sich der Konkurrenz durch Microsoft bewusst zu sein. Zurzeit kann man vor allem dadurch punkten, dass die Produkte für alle Versionen von ASP.NET eingesetzt werden können – also einschließlich der Version 1.1. Wer diese noch im Einsatz hat oder sogar eine gemischte Umgebung besitzt, kann nicht auf Atlas zurückgreifen. Zukünftig werden die Komponenten aber stärker auf Atlas ausgerichtet werden, zumal die Microsoft-Technologie irgendwann als stabile Version am Markt verfügbar sein wird und damit auch einen De-Facto-Standard darstellen wird.

ComponentArt Web.UI 2006.1

Die Controls aus der Sammlung von ComponentArt sind für den sofortigen Einsatz in Webanwendungen gedacht. Teil des Pakets sind zwölf Controls, die sich für typische Standardaufgaben einsetzen lassen (Abbildung 1). Mit dabei sind bekannte Namen wie Grid, Menu, TreeView oder Calendar. Allen Controls gemein ist die gut ausgearbeitete visuelle Darstellung, die sich auch über eigene Templates größtenteils beeinflussen lassen. Animationen und eine Unterstützung für Kontextmenüs runden zudem das Paket ab. So ist es nicht verwunderlich, dass die anvisierte Zielgruppe eher weniger der typische AJAX-Entwickler ist, sondern mehr in Richtung Web 2.0 geht. Mit viel JavaScript und grafischen Effekten soll die Usability des Benutzers erhöht werden – auch wenn einige der Effekte manchmal zu Lasten der Performance gehen – da können Animationen trotz eines leistungsfähigen Prozessors schon mal anfangen zu ruckeln.

Abb. 1.: Die Controls von ComponentArt eignen sich besonders für schicke Web-2.0-Anwendungen

Mit 799 US-Dollar ist der Preis für das Packet recht hoch angesiedelt. Zwar bietet ComponentArt die Komponenten auch einzeln an, viel gespart wird dadurch aber nicht. Selbst MultiPage, die kleinste Komponente, die man auch mit wenig Aufwand relativ schnell nachbauen kann, schlägt mit 99 US-Dollar zu Buche. Eines der prominenteren Beispiele, die auf die Web.UI von ComponentArt setzen, ist der Community Server von telligent. Die vom Ex-Microsoft-ASP.NET-Guru Rob Howard gegründete Firma arbeitet bereits seit längerem mit ComponentArt zusammen.

MagicAjax.NET

Die Liste der angebotenen Features hält sich bei MagicAjax.NET zurzeit leider noch in Grenzen. Bei einer so jungen Versionsnummer wie 0.3.0 ist das aber auch  nicht verwunderlich. Trotzdem handelt es sich um eine lauffähige Version. Das Hauptaugenmerk wurde auf eine möglichst dezente Umsetzung in Form des angebotenen AjaxPanel-Controls gelegt, das den Inhalt mit asynchron abgerufenen Daten austauscht. Dadurch kommen auch Steuerelemente in den Genuss von AJAX, die ursprünglich nicht für diese Technik ausgelegt wurden. Serverseitig merkt man von dem Unterschied nichts, da es sich fast um einen gewöhnlichen Seitenaufruf handelt. Erst das Panel kümmert sich um das partielle Rendern der Seite, sodass nur benötigte Teilbereiche der Seite übertragen werden. Damit diese Technik mit dieser Transparenz funktioniert, muss allerdings der recht mächtige ViewState bei jeder Anfrage übermittelt werden. Dadurch kann man in gewohnter Weise auf die Steuerelemente, wie Labels oder Buttons, zugreifen und deren Aussehen oder Verhalten, je nach Aktion des Benutzers, modifizieren. Dieser Umstand bläht die Kommunikation allerdings auf und verlangsamt somit auch den Transport. Der Vorteil liegt vor allem darin, dass sich eine Anwendung schnell und günstig mit AJAX nachrüsten lässt (Listing 3). Steuerelemente mit ähnlichem Verhalten existieren auch in den anderen Komponenten, wie beispielsweise Atlas oder PowerWeb LiveControls. Sie optimieren zumindest auch die Übertragung des ViewStates.



Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.