AJAX

AJAX (Asynchronous JavaScript and XML) je v informatice obecné označení pro technologie vývoje interaktivních webových aplikací, které mění obsah svých stránek bez nutnosti jejich kompletního znovunačítání za pomoci asynchronního zpracování webových stránek pomocí knihovny napsané v JavaScriptu. Na rozdíl od klasických webových aplikací poskytují uživatelsky příjemnější prostředí, ale vyžadují použití moderních webových prohlížečů.

Tyto aplikace jsou vyvíjeny s využitím technologií:

Podobně jako DHTML, LAMP nebo SPA, Ajax ve skutečnosti není konkrétní jednotlivá technologie, ale pojem označující použití několika technologií dohromady s určitým cílem.

Historie

Termín AJAX se poprvé veřejně objevil v dubnu 2005 v článku Jesse James Garretta, nazvaném Ajax: A New Approach to Web Applications (Ajax: Nový přístup k webovým aplikacím). Myšlenky, na kterých je AJAX založen, jsou však výrazně starší: mezi začátky lze zařadit zavedení elementu IFRAME ve Microsoft Internet Explorer 3.0 z roku 1996, elementu LAYERNetscape Navigator 4.0 z roku 1997 (tento element byl opuštěn na počátku vývoje Mozilly). Také Macromedia Flash od verze 4 umožňoval komunikaci se serverem na pozadí, bez překreslení stránky.

V roce 1998 představil Microsoft novou technologii nazvanou Remote Scripting[1], ve které v klientském prohlížeči běžel Java applet komunikující se serverem, přičemž tento applet poskytoval služby JavaScriptovým funkcím. Tato technika fungovala v MSIE od verze 4 i v Netscape Navigatoru od verze 4. V páté verzi IE zavedl Microsoft objekt XMLHttpRequest, který v roce 2000 využil v novém programu Outlook Web Access, který poskytuje webové rozhraní pro přístup k e-mailům na Microsoft Exchange Server.

Velká popularita a rozšíření AJAXu začala několika službami společnosti Google (nejdříve Gmail, posléze Google Maps a další).

Výhody

Mezi výhody patří odstranění nutnosti znovunačtení a překreslení celé stránky při každé operaci, které jsou nutné u klasického modelu WWW stránek. Pokud například uživatel klikne na tlačítko pro udělení hlasu v nějaké anketě, celá stránka se musí znovu načíst ze serveru, třebaže se na ní jen například aktualizují výsledky hlasování a veškerý zbytek obsahu zůstává stejný. Prostřednictvím AJAXu proběhne odeslání hlasu uživatele na pozadí, server zašle jen ty části stránky, které se změnily, a jen tyto části se uživateli na stránce aktualizují a překreslí. Taktéž nedochází k nepříjemnému efektu, kdy se po dané akci v průběžně načítané stránce postupně přizpůsobují a „za běhu“ formátují a zarovnávají její blokové elementy, obrázky atd. – obtěžující může být i to, že po dané akci uprostřed delší stránky (odscrollované dolů) se nově načtená stránka zobrazí vyscrollovaná nahoru. S AJAXem má uživatel pocit mnohem větší plynulosti práce, která se (zejména u rychlejšího internetového připojení) blíží běžným desktopovým aplikacím.

Z toho vyplývá také potenciál snížit zátěž na webové servery a síť obecně. Jelikož není potřeba při každém požadavku sestavit celý HTML dokument, ale pouze provedené změny, je množství vyměňovaných dat výrazně nižší a teoreticky to může mít příznivý vliv i na zátěž databázových serverů či dalších backendových systémů.

Nevýhody

AJAX však naopak může zvýšit počet vyměňovaných HTTP požadavků, a třebaže přenášejí nižší množství dat, tak při nevhodné implementaci zátěž neklesne.

Mezi nevýhody patří hlavně změny v paradigmatu používání webu: webové stránky se chovají jako plnohodnotné aplikace se složitou vnitřní logikou, nikoli jako posloupnost stránek, mezi kterými se lze navigovat i pomocí tlačítek ZpětDalší. Obdobným způsobem není možno předat URL stránky, ve které již bylo pomocí technologie AJAX něco „naklikáno“. Moderní AJAXové aplikace jsou schopny procházení v historii (přinejmenším částečně) obnovit za použití různých technik (např. využití části adresy za znakem # či pomocí neviditelných IFRAMEs). To ale ve výsledku ztěžuje návrh stránek a vyžaduje více času a práce na implementaci pomocí AJAXu.

Problémem AJAXových aplikací také může být síťová latence: potřeba komunikace přes Internet má negativní dopady na rychlost odezvy a interaktivitu uživatelského rozhraní. Pokud uživateli není jasně signalizováno, že aplikace zpracovává jeho požadavek (a na pozadí komunikuje se serverem), jediné, co zaregistruje, je zpožděná reakce (mezitím se dokonce může snažit operaci spustit znovu, neboť se domnívá, že systém jeho příkaz ignoroval, a tím vygenerovat větší zátěž serveru a/nebo způsobit něco, co neměl v úmyslu, např. objednat deset vstupenek místo jedné). Jako vhodné řešení se doporučuje po dobu mezi odbavením požadavku na server a jeho odpovědí nějakým způsobem zobrazit, že uživatelův požadavek se zpracovává, například textem nebo animovanou ikonou. Síťovou latenci má samozřejmě i verze bez AJAXu, v ní se ale o indikování toho, že prohlížeč čeká na odpověď od serveru, stará samotný prohlížeč.

Požadavek formou AJAX může také přijít s neúspěšnou odpovědí nebo nepřijít vůbec. Správně a uživatelsky přívětivě řešená stránka, která AJAX používá, by měla s touto variantou počítat a řešit všechny úspěšné i chybové stavy. Příkladem s dobrou použitelností je po odeslání požadavku přes AJAX zobrazit indikátor, že požadavek se zpracovává (text, animovanou ikonku apod.) a deaktivovat uživatelský vstupní prvek (tlačítko, vstupní políčko, odkaz), který si jej vyžádal (aby na něj uživatel nemohl opětovaně klikat). Trvá-li čekání na odpověď déle, než je obvyklé, indikovat další informací, že na odpověď se stále čeká. A trvá-li vyřízení požadavku další čas, měla by stránka uživateli nabídnout možnost požadavek odeslat znovu (skrýt předchozí hlášky nebo ikonky informující o zpracování požadavku a opětovná aktivace vstupních prvků nebo odkazů pro spuštění nového AJAXového požadavku). Alternativně opětovné pokusy spouštět v rozumných intervalech sama (jako například na stránkách Google Docs). Tato funkcionalita je sice uživatelsky přívětivější než v prostém HTML, ale vyžaduje dodatečné programování (implementaci, odzkoušení funkčnosti v různých prohlížečích, u složitějších webových aplikacích simulaci všech scénářů a stavů, které mohou nastat) a je tedy náročná na čas a lidské zdroje.

Další nevýhodou AJAXu je nutnost používat moderní grafické prohlížeče, které podporují potřebné technologie. Všechny dnešní běžné prohlížeče však tyto technologie alespoň v základu podporují, problém tak zůstává jen u minoritních prohlížečů typu Lynx nebo na hardwarově slabších zařízeních pro prohlížení, například na (některých) mobilních telefonechPDA. V rámci webové přístupnosti se vyžaduje, aby stránky byly přístupné i z prohlížečů bez podpory AJAXu, což pro vývojáře znamená více času a práce a objednavatelům výsledných stránek větší náklady.

Odkazy

Reference

  1. Remote Scripting Archivováno 14. 7. 2006 na Wayback Machine., microsoft.com – neplatný odkaz !

Související články

  • WebSocket - umožňuje plně duplexní komunikaci se serverem, také pomocí JavaScriptu

Externí odkazy