Der Benutzer gibt eine Postleitzahl ein, und mittels Ajax wird der Ort eingeblendet. Bei synchroner Verarbeitung würde nach Eingabe der Postleitzahl die Seite neu geladen werden oder zumindest das weitere Ausfüllen des Formulars angehalten werden, bis das Ergebnis vorliegt.
Naja, aber auch diese Interaktion läuft synchron ab - wenn auch auf eine andere Weise als das Laden einer komplett neuen Seite. Synchronität im kleinen eben anstatt Synchronität auf globaler Ebene.
Wenn ich eine Postleitzahl eingebe, so wird meine Eingabe synchron verarbeitet. Es wird ein Event ausgelöst, der eine serververbindung herstellt, Parameter sendet, auf Antwort wartet. Server rechnet, stellt Antwort zusammen, Daten werden zurückgesendet, Callback ausgelöst und letztlich erfolgt das Feedback.
ja, aber die Verarbeitung erfolgt asynchron zum Laden der Seite. Die Seite bleibt stehen, und du kannst Dir in der Zwischenzeit die AGBs durchlesen :-P
Wie du sagst, das sofortige Anzeigen des Feedbacks ist nicht nötig. Das liegt im Fall von AutoSuggest aber einfach daran, dass das ganze Feature optional ist. Wenn ich das Feature nutzen will, muss ich auf das Feedback warten, da führt nichts umhin.
Die Kernthese von Gerrett war ja, dass Ajax alle starre zeitliche Abfolge und Kausalität suspendiert: »the start-stop-start-stop nature of interaction«. Wenn ich AutoSuggest bei verschiedenen Sites nutze, dann muss ich immer auf die Serverantwort warten. Wie gesagt, das ist doch start-stop-start par excellence. Vor allem bei lahmen Servern.
Die Technologie AJAX durchbricht das ja. Wo jedoch die Benutzerinteraktion den Regeln der Kausalität unterliegt, kann auch AJAX diese nicht durchbrechen. Mit der Maus kann man ja auch nicht gleichzeitig, sondern erst hintereinander auf zwei verschiedene Stellen klicken (selbst wenn man zwei Mäuse angeschlossen hätte). Das Problem der lahmen Server kann sich ja in Zukunft durch technologischen Fortschritt bessern - übrigens sind auch ganz normale Anwendungen nichtmehr "asynchron", sobald eine parallel laufende plötzlich 100% Prozessorzeit usurpiert.
Bei asynchroner Verarbeitung kann das Formular weiter ausgefüllt werden.
Hm, da hast du Recht, aber: Das halte ich aber für wenig benutzerfreundlich. Ok, zwischen Eingabe und Feedback vergehen vielleicht ein paar Sekunden, unerheblich meist. Wenn der Benutzer aber schon hastig zum nächsten Feld springt, so wundert er sich, wenn irgendwann, während er dort tippt, oben ein Hinweis aufpoppt.
das kann man verhindern, indem man zu spät ankommende Antworten ignoriert. Bei Warnhinweisen kann man das beispielsweise ohne Probleme tun. Die so nichtmehr rechtzeitig angezeigten Fehler werden dann halt vor oder wie bisher nach dem Abschicken des Formulars summarisch angezeigt. D.h. im Regelfall wird man schon während der Eingabe gewarnt oder unterstützt, und in den Fällen, wo die Verarbeitung zu lange gedauert hat, werden Fehler zunächst ignoriert und erst beim Abschicken moniert.
Im besten Fall steht der Ort schon "sofort" im entsprechenden Feld und der Benutzer kann evtl. Fehler bei der PLZ-Eingabe erkennen.
Das denke ich auch: Asynchronität ist nicht einmal unbedingt erstrebenswert - man strebt eher Synchronität an, also auf Eingabe soll möglichst sofort das Feedback erfolgen.
das kann man so pauschal nicht sagen, weil das von der jeweiligen Anwendung abhängt. Im Regelfall (DSL, normale Serverauslastung) schätze ich, wird in 90% der Fälle die Antwort schnell genug erfolgen.
Wenn z.B. auf einer Seite mehrere Texte sind, die vom Benutzer bewertet werden können, so können durch asynchrone Verarbeitung die Texte quasi gleichzeitig bewertet werden, ohne jeweils auf das Ergebnis der vorhergehenden Bewertung warten zu müssen.
Ja, denke ich auch, das ist wohl einer der wenigen Fälle, bei denen wirkliche Asynchronität gefragt ist.
Ja, und in dieser Hinsicht ist AJAX asynchron, bzw. die Technik erlaubt asynchrone Verarbeitung. Daß in vielen Szenarien nicht alle Interaktionen unabhängig sind, und daß hier AJAX mehr oder weniger synchron ("synchron im kleinen") eingesetzt werden muß, liegt in der Natur jeweiligen Anwendung und nicht an AJAX. Aber auch Synchronität im kleinen, bzw. Vorgänge, die nicht auf das Neuladen von Seiten angewiesen sind (und somit asynchron zum Seitenladerhythmus sind) können durchaus sinnvoll sein. Zwar konnte man das teilweise schon früher durch Iframes oder dynamische Bilder realisieren, aber AJAX bietet halt bessere Möglichkeiten, weil man beliebige Elemente einer Seite aktualisieren kann und nicht auf den Inhalt des Iframes beschränkt ist.
Fazit: AJAX erlaubt Requests, die nicht and den "Formular absenden"-"Seite laden"-Rhythmus gebunden sind (also asynchron). Außerdem kann ein zweiter Request vor dem Beantworten des ersten abgeschickt werden (also auch asynchron ). Das diese technische Möglichkeit der Asynchronität nicht immer programmlogisch sinnvoll ist, steht auf einem anderen Blatt.
vg,
gk