Thursday, April 27, 2006

AJAX – Asynchrones JavaScript und XML (contentmanager.de)

AJAX ist die Abkürzung für Asynchrones JavaScript und XML. Dieser Ausdruck steht für eine der wichtigsten aktuellen Entwicklung des World Wide Web beziehungsweise dem, was unter Web 2 zurzeit durch die Medien geistert.

AJAX – eine kurze Vorstellung

Wenn man sich das Internet der Vergangenheit betrachtet, ist das Jahr 1990 mit der Einführung des World Wide Web einer der größten Meilensteine gewesen. Mit der Einführung des WWW ließen sich optisch ansprechend Inhalte präsentieren und vor allem Information miteinander verknüpfen. Damit war selbst technisch nicht versierten Anwendern eine Möglichkeit geschaffen worden, in einem weltweiten Netzwerk auf Information zuzugreifen. Allerdings war das World Wide Web in der Vergangenheit rein statisch. Aufgrund diverser Einschränkungen, die mit statischen Seiten verbunden sind, entwickelte sich schnell eine auf dem Client auszuführende Programmiererwelt. JavaScript, VBScript, Java-Applets, ActiveX-Controls, und diverse weitere Technologien entstanden etwa ab 1995.

Allen Technologien auf dem Client war gemeinsam, dass Sie Aktivität vom Server auf den Client verlagern sollten. Diverse Probleme mit clientseitiger Technologie führten allerdings dazu, dass etwa ab dem Jahr 2000 wieder mehr Aktivität auf den Server zurück verlagert wurde. Proprietäre Standards sowie marktpolitische Spielereien und nicht zuletzt Sicherheitsprobleme im Client reduzierten die Akzeptanz von clientseitiger Technologie. In der letzten Zeit hat sich aber die Hysterie um die Probleme clientseitiger Technologie gelegt und moderne Webapplikationen setzen sowohl clientseitige Technologie (heutzutage fast ausschließlich noch JavaScript) als auch serverseitige Technologie ein. Die Aufgaben werden so verteilt, wie es sinnvoll ist.

Wenn Sie heutzutage eine moderne Webapplikation erstellen wollen, werden sie (glücklicherweise) ein relativ homogenes Umfeld vorfinden. Das war vor nicht allzu langer Zeit definitiv nicht der Fall.

Was ist AJAX?

Das Internet basiert bezüglich der Übertragung nun auf TCP/IP. Dies steht für Transmission Control Protocol / Internet Protocol. Dieses Transportprotokoll bezeichnet eine paketorientierte Vermittlung von Daten. Die Daten werden in kleinere Einheiten zerlegt und diese Datenpakete unabhängig voneinander vom Sender zum Empfänger geschickt. Erst beim Empfänger werden sie wieder zusammengesetzt. Das Hauptproblem bei dieser Art der Kommunikation ist, dass keine dauerhafte Verbindung existiert. Zwar ist es möglich, auf Ebene der Anwendungsprotokolle eine virtuelle Verbindung zwischen Sender und Empfänger aufrechtzuerhalten (denken Sie an Internet-Telefonie oder aber auch Fernsteuerungsmechanismen wie Telnet oder SSH), aber allein auf Ebene des Transportprotokolls ist diese Verbindung nicht gegeben.

Nun ist das Protokoll das World Wide Web – HTTP – ein verbindungsloses Protokoll. Mit anderen Worten – bei diesem Protokoll wird keine virtuelle Verbindung zwischen dem Server und dem Client aufrecht erhalten.

Bei dieser Art der zustandslosen Kommunikation kann ein Server im Grunde nicht erkennen, ob ein Browser bereits vor einer Anfrage eine Webseite angefordert hat. Sie wissen aus Ihrer Erfahrung im WWW natürlich, dass auch bei Webseiten erkannt werden kann, ob ein Client bereits vorher Seiten von einem Server angefordert hat. Dieses ist in allen Fällen zwingend notwendig, in denen man sich auf einer Seite legitimieren muss, um in einem geschlossenen Bereich Inhalte sehen zu können. Aber dies wird nicht über TCP/IP beziehungsweise HTTP gewährleistet, sondern mit darauf aufsetzenden Techniken. Zum Beispiel Cookies. Die zustandslose Kommunikation bewirkt ebenfalls, dass jeder Austausch von Informationen zwischen Client und Server die Versendung einer vollständigen neuen Webseite bedeutet.

Wie kommt jetzt AJAX ins Spiel?

AJAX ist nun ein Ansatz, dieses Problem des World Wide Web respektive HTTP zu lösen. Wenn Sie im World Wide Web eine neue Information anfordern, besteht also bei einem klassischen Zyklus der Datenkommunikation zwischen Server und Client immer die Notwendigkeit, eine vollständige neue Webseite als Antwort zu senden. Mit AJAX hingegen ist es möglich, nur den Teil einer Webseite von Server anzufordern, der auch wirklich ausgetauscht werden muss. Die Teile der Webseite, die nicht erneuert werden müssen, können dabei erhalten bleiben. Es ist offensichtlich, dass die zu versendende Datenmenge damit erheblich reduziert werden kann. Vor allen Dingen kann das Antwortverhalten von Web-Applikation bei Interaktion mit einem Anwender exorbitant beschleunigt werden.

Stellen Sie sich als Beispiel ein Webformular vor, indem der Anwender ein Autokennzeichen eingibt und nachfolgend der zugehörige Landkreis oder die zugehörige Stadt angezeigt werden soll. Bei konventionellen Web-Applikationen ist es notwendig, aufgrund der Angabe des Autokennzeichens eine vollständige neue Webseite vom Server anzufordern und dem Client anzuzeigen. Dabei müssen gegebenenfalls alte Informationen (in anderen Formularfeldern schon eingetragene Anwendereingaben zum Beispiel) erhalten bleiben. Das bedeutet, die Daten werden überflüssiger Weise zum Server geschickt und unverändert wieder zurück gesendet. Mit AJAX kann ausschließlich die neue Information vom Server angefordert und in die bestehende Webseite integriert werden.

Zwar ist es bisher schon möglich für die Fälle, in denen nur wenige Daten auf Vorrat gehalten werden müssen, diese auf Vorrat zum Client zu schicken und mit Javascript beziehungsweise DHTML in die Webseite zu integrieren. Aber für große Datenmengen ist das nicht praktikabel.

Bei AJAX fordert man Daten erst dann an, wenn sie benötigt werden und zeigt sie in der Folge über DHTML-Effekte in den gewünschten Bereichen einer Webseite an. Bei AJAX kommunizieren dazu nicht nur der Browser und der Webserver direkt miteinander, sondern unabhängig von dieser Interaktion kann ein Objekt in der Webseite mit dem Server kommunizieren. Auf dieses Objekt (XMLHttpRequest) greift man dann bei JavaScript zu. Zum Beispiel wenn über ein Eventhandler in der Webseite eine Funktion aufgerufen wird. Dieses XMLHttpRequest-Objekt ist der Dreh- und Angelpunkt der gesamten AJAX-Technologie. Dazu werden rund um AJAX XHTML beziehungsweise HTML, XML, JavaScript und Style Sheets als Kerntechnologien bezeichnet. Die auf dem Server eingesetzte Technologie ist im Rahmen des Konzepts von AJAX selbst nicht explizit festgelegt. Ob Sie dort PHP einsetzen oder ASP.NET oder Java-Servlets oder JSP. Sie sind vollkommen frei in ihrer Wahl.

Aus alt mach neu?

Wenn Sie sich die Technologien betrachten, die bei AJAX den Kern bilden, werden Sie erkennen, dass AJAX nur wenige wirklich neue Ansätze zeigt. Das beanstanden Kritiker auf der einen Seite. AJAX sei nur ein Marketingbegriff für alte Technologien. Die Befürworter hingegen argumentieren genau umgeke um den hrt. Sie sagen, da so gut wie keine neuen Technologien erforderlich sind, ließe sich AJAX ohne größere Probleme in bestehenden Umgebungen implementieren. Und wahrscheinlich haben die Befürworter Recht, wie der Erfolg von AJAX zeigt.

Welche Probleme wirft die AJAX-Technologie auf?

AJAX ist ohne Zweifel eine Revolution des World Wide Web. Webapplikationen, die sehr stark mit Anwendern interagieren, werden über AJAX in einem Maß beschleunigt, dass Sie an Desktop-Applikationen erinnern werden. Das wird das Anwenderverhalten im World Wide Web verändern. Anwender werden in Zukunft aufgrund von AJAX-Applikationen "verdorben" werden. Das soll bedeuten, Sie werden bei vielen AJAX-Applikationen ein Verhalten vorgesetzt bekommen, dass sie in Zukunft dann von allen Internet-Applikation erwarten werden. Aber selbstverständlich kann man in einem Netzwerk wie dem Internet eine konstante, fehlerfreie und schnelle Übermittlung von Daten nicht voraussetzen. Was ist, wenn das Internet "hängt "?

Ersteller von Web-Applikation werden sich neue Formen bei der Interaktion mit den Anwendern und der Benutzerführung überlegen müssen. Aber AJAX wirft auch andere Probleme auf. Das Stichwort ist barrierefreies Web. Lesegeräte kommen mit dynamisch generierten Inhalten möglicherweise nicht klar. Des Weiteren werden auch Suchmaschinen mit dynamischen Inhalten Probleme haben und nicht zuletzt wird die Funktion der Lesezeichen im Browser bei AJAX-Applikationen nicht funktionieren. Ebenfalls ist das Verhalten der Zurück-Schaltfläche des Browsers bei AJAX-Applikationen ausgehebelt.

Für diese Probleme werden Entwicklungen rund um AJAX (insbesondere AJAX-Frameworks) nach und nach Lösungen bereitstellen oder haben sie bereits bereitgestellt. Dennoch - die Verwendung von AJAX wird in der ersten Phase eine ganze Reihe von Aufgaben aufwerfen. Das Hauptproblem wird aber sein, dass AJAX nur dann funktioniert, wenn beim Client die notwendigen technischen Voraussetzungen gegeben sind. Wenn also JavaScript aktiviert ist, ein halbwegs moderner Browser eingesetzt wird, der das XMLHttpRequest-Objekt unterstützt, DHTML-Effekte sauber vom Browser unterstützt werden und der Anwender diese Techniken auch nicht deaktiviert hat. Gerade in vielen Firmen, in denen die Firewall die Verwendung von Javascript noch immer verbietet, werden AJAX-Applikationen auf Probleme stoßen.

Fazit

Probleme sind dafür da gelöst zu werden. Alles in allem ist AJAX eine der viel versprechensten Entwicklung des Webs, die in den letzten Jahren zu beobachten war. Nun ist es endlich möglich, das träge Verhalten von Web-Applikation bei der Interaktion mit Anwendern abzustellen.

AJAX mit PHP. Beschleunigte Webapplikationen für das Web 2

Ralph Steyer ist Autor des Buches "AJAX mit PHP". Das Buch behandelt alle wesentlichen Grundlagen, die für eine effektive Programmierung von AJAX-Applikationen Voraussetzung sind, einschließlich der beiden Schlüsseltechniken im AJAX-Umfeld, JavaScript und (X)HTML.

04/2006, Ralph Steyer

Ralph Steyer, Diplom Mathematiker, arbeitete nach dem Studium einige Jahre bei einer großen Versicherung im Rhein-Main-Gebiet als Programmierer. Seit 1995 Freelancer mit den Tätigkeitsgebieten: Publikation, EDV-Schulungen, Programmierung und Beratung.

No comments: