Ajax (programozás)

A Wikipédiából, a szabad enciklopédiából

Az Ajax (Asynchronous JavaScript and XML) interaktív webalkalmazások létrehozására szolgáló webfejlesztési technika. Segítségével a weblap kis mennyiségű adatot cserél a szerverrel a háttérben, így a lapot nem kell újratölteni minden egyes alkalommal, amikor a felhasználó módosít valamit. Ez növeli a honlap interaktivitását, sebességét és használhatóságát.

Az Ajax a következő technikák kombinációja:

  • XHTML (vagy HTML) és CSS a tartalom leírására és formázására.
  • DOM kliensoldali szkriptnyelvekkel kezelve a dinamikus megjelenítés és a már megjelenített információ együttműködésének kialakítására.
  • XMLHttpRequest objektum az adatok aszinkron kezelésére a kliens és a webszerver között. Néhány Ajax keretrendszer esetén és bizonyos helyzetekben IFrame-et használnak XMLHttpRequest objektum helyett.
  • XML formátumot használnak legtöbbször az adattovábbításra a kliens és a szerver között, bár más formátumok is megfelelnek a célnak, mint a formázott HTML vagy a sima szöveg.

Mint a DHTML, a LAMP vagy az SPA, az Ajax sem egy technológia önmagában, hanem egy kifejezés közösen használt technológiákra.

Történelem[szerkesztés]

A kifejezést először Jesse James Garrett használta 2005. februári cikkében, melynek címe Ajax: A New Approach to Web Applications. Garett a zuhany alatt gondolkodott a fogalmon, amikor rájött, hogy egy rövid kifejezésre van szükség, amin keresztül be tudja mutatni az ajánlott technológiákat egy megrendelőnek. Későbbi előadásokon Garett kijelentette, hogy az Ajax nem betűszó.

Bár az Ajax kifejezés 2005-ben született meg, az ajax megszületését lehetővé tevő technológia egy évtizeddel előtte jött létre a Microsoft Remote Scripting kezdeményezése kapcsán. A tartalom aszinkron betöltésének lehetősége, azaz egy már megnyitott oldal tartalmának frissítése az oldal újratöltése nélkül, ellenben már az IFRAME elemtípus (1996, Internet Explorer 3) és a LAYER elemtípus (1997 Netscape 4) idejére vezethető vissza. Mindkét elemtípusnak van egy src attribútuma, ami bármely létező URL-t képes fogadni. Egy JavaScriptet tartalmazó lap betöltésével, ami manipulálja a szülő lapot, ajaxszerű hatások érhetőek el.

A Microsoft Remote Scripting kezdeményezése egy elegánsabb megoldást nyújtott a problémára. Egy Java applet kérte le az adatokat, amivel a kliens oldal JavaScripten keresztül tudott kommunikálni. Ez a megoldás az Internet Explorer 4 és a Netscape Navigator 4 esetében volt használható. Később a Microsoft létrehozta az XMLHttpRequest objektumot az Internet Explorer 5-ben, és ezt a lehetőséget először az Outlook Web Access használta ki a Microsoft Exchange Server 2000 verzióban.

A Microsoft böngészőjének aszinkron képességeit kihasználva a General Interface 2001-ben kiadta a JavaScript alkalmazás keretrendszerét. Ez olyan megjelenítést, felhasználói élményt és teljesítményt biztosított a honlapoknak, ami eddig csak az asztali alkalmazások esetén volt elérhető. Támogatta a HTTP-alapú adatszolgáltatásokat is, követve az egyre dominánsabbá váló utat az XML és a XML Webszolgáltatások felé.

A webfejlesztő közösségek, eleinte a microsoft.public.scripting.remote hírcsoport majd később a bloggerek, gyorsan kifejlesztettek több technikát a különböző böngészőktől független, konzisztens eredmény biztosítására. 2002-ben a közösség kérésére létrehozták a Microsoft Remote Scriptinget, ami lecserélte a Java appletet az XMLHttpRequestre.

Mivel az XMLHttpRequestet ma már a legtöbb fontosabb böngésző támogatja, az alternatív technikákat már ritkábban használják. Elsősorban ott alkalmazzák őket, ahol a széles körű kompatibilitás, a kis méret, illetve több oldal hozzáférése fontos.

Ajaxot használó fejlesztőkörnyezetek[szerkesztés]

Az Ajax használhatóságát és népszerűségét tükrözi, hogy egyes webalkalmazást készítő fejlesztőkörnyezetek már beépített elemként tartalmazzák, és erősen támaszkodnak rá. Néhány ezek közül:

AJaX támogatást nyújtó JavaScript könyvtárak[szerkesztés]

Az Ajax használatának előnyei[szerkesztés]

Felhasználói felület[szerkesztés]

A legnyilvánvalóbb ok az Ajax használatára a felhasználói élmény fokozása. Az Ajaxot használó oldalak viselkedése sokkal inkább hasonlít a desktopos alkalmazásokhoz, mint a tipikus weboldalakhoz. Amikor egy linkre kattintás hatására a teljes weboldal újratöltődik, az sokszor időigényes művelet. Az Ajaxot használó oldalak e helyett képesek rá, hogy csak az oldal szükséges részét frissítsék, így gyorsabb reagálást biztosítanak a felhasználói interakciókra. Néhányan úgy gondolják, hogy az Ajax lesz az a feltörekvő technológia, amelynek segítségével a jövőben a webes alkalmazások minden eddiginél interaktívabbá és így széles körben is sokkal népszerűbbé válhatnak.

Letöltési sebesség és szerverterhelés[szerkesztés]

Mivel az Ajaxot használó oldalak a szervertől az adatokat HTML formázás nélkül kapják, ezért ez által a szerver terhelése és így a válaszideje is csökken. A kisebb mennyiségű adat pedig gyorsabban jut el a hálózaton a szervertől a kliensig. Tehát az Ajaxszal nagymértékben csökkenthető a szerver terhelése és növelhető az oldalak letöltési sebessége. A szervertől kapott adatokból a HTML kód a böngészőben jön létre javascript segítségével, ami jól optimalizált programkód esetén legtöbbször gyorsabb – de legalábbis nem lassabb – mintha az erősen leterhelt szerver hozná azt létre. Ennek oka, hogy ma már a kliens oldalon a felhasználók viszonylag gyors személyi számítógépekkel rendelkeznek, amelyek terhelése általában lényegesen alacsonyabb, mint a szerveré. Ráadásul, ha valamelyik kliens gép a lassúsága vagy leterheltsége miatt mégis lassabban hozza létre a HTML kódot, az nem érinti a párhuzamosan jelenlévő többi klienst, ami annál nagyobb előny minél nagyobb a párhuzamosan jelenlevő kliensek száma. (Ha a HTML kód a szerveren generálódik, akkor ez pont fordítva van: annál jobban lassul az oldalgenerálás, minél több klienstől érkezik kérés egyszerre.) Tehát minél nagyobb egy oldal látogatottsága annál nagyobb előnyt jelent a kliens oldali HTML generálás. Mindezen jótékony hatásokat tovább erősíti, hogy az Ajax segítségével sokszor jól megvalósítható, hogy mindig csak az éppen szükséges minimális mennyiségű adat töltődjön le a szerverről (ld. „load on demand” technika). Jó példa erre, amikor egy nagyméretű sokszintű menünél először csak a főkategóriák töltődnek le, majd egy adott főmenüre kattintva csak ennek az egy főmenünek az almenüi. Ennek köszönhetően mindig csak a feltétlen szükséges minimális mennyiségű adattal kell dolgozni. Összefoglalva az Ajax és az itt leírt módszerek együttes használatával szignifikáns oldal letöltési sebesség növekedés és szerverterhelés csökkentés érhető el. A gyorsulás általában fordított arányban áll a webes alkalmazás funkcionális összetettségével és alkalmazáslogikájának bonyolultságával.

A tartalom, a funkció és a forma elkülönítése[szerkesztés]

Egy másik előnye az Ajax használatának, hogy lehetővé teszi az adatokat szolgáltató- és az adatok megjelenítését végző programkód teljes elkülönítését. Bár erre az Ajax használata nélkül is léteznek megoldások. Az Ajax segítségével történő elkülönítés legkézenfekvőbb formái az alábbiak. Elkülönülnek a nyers adatok és tartalmak – amelyek általában XML vagy hasonló struktúrába vannak ágyazva – amelyek egy szerver oldali adatbázisból származnak.