AJAX
Од Википедија, слободна енциклопедија
AJAX, кратенка за Асинхронa ЈаваСкриптa и XML (Asynchronous JavaScript и XML). AJAX е развојна техника за креирање на интерактивни веб апликации. Интенцијата е да се дизајнираат веб страници кои се кориснички ориентирани, посебно при размена на помала количина на податоци од и кон серверот. На тој начин веб страницата нема да се вчитува секој пат кога корисникот ќе внесе податок или ќе побара да прочита некој податок од серверот. Тоа значи зголемување на степенот на интерактивност, брзина и полезност.
AJAX техниката се состои во комбинирање на :
- XHTML (или HTML) и CSS, за означување и стилизирање на информациите.
- DOM објектот се манипулира со Скрипт јазик на клиентската страна, најчесто со имплементации на ECMAScript како на пр. JavaScript и JScript, за динамички приказ и зголемена интеракција на корисникот со презентираната информација.
- XMLHttpRequest објектот служи за асинхрона размена на податоци со web серверот. Во некои AJAX случаи, се користи објектот IFrame наместо објектот XMLHttpRequest за размена на податоци помеѓу веб клиентот и веб серверот.
- XML најчесто се користи како формат за трансфер на податоците помеѓу клиентот и серверот. Но може да се користи било кој друг формат, вклучувајќи и HTML, обичен текст, JSON па дури и EMBL. Овие датотеки може да бидат динамички креирани со помош на некоја скрипта на серверска страна.
За разлика од DHTML, LAMP и SPA, AJAX не е технологија само за себе, туку означува термин кој кажува дека се работи за користење на повеќе технологии заедно.
Содржина |
[уреди] Историјат
Прв овој термин го употребил Џеси Џемс Гарет (Jesse James Garrett) Февруари 2005 година[1]. Гарет често размислувал за овој[2], при што заклучил дека има потреба од нов термин кој ќе упатува на технологиите кои тој ги предлагал на клиентите[3].
Значи терминот "Ajax" бил скован 2005 година, но технологијата Ajax започнала десетина години порано со иницијативата на Microsoft за развој на Remote Scripting. Техниките за асинхроно симнување на содржината на постоечките веб страници без потреба од целосно вчитување датираат уште од времето кога се воведува типот на елемент IFRAME (1996 година во Internet Explorer 3) и типот на елемент LAYER (1997 година во Netscape 4, а напуштен во почетната развојна фаза на Mozilla). Овие елемент типови го содржат атрибутот src
кој може да превземе било кој надворешен URL, па со вчитувањето на страница која содржи JavaScript може да се манипулира нејзината содржината, значи некои Ajax ефето можело да се постигнта. Ова множество на технологии на страната на клиентот биле групирани под генеричкиот термин DHTML. Macromedia Flash може исто така, почнувајќи од верзија 4, да вчитува XML и CSV податотеки од серверот без потреба од повторно вчитување на целата страница.
Техниката Remote Scripting на Microsoft (или MSRS, воведена во 1998) е елегантна замена за овие техники, на тој начин што заедно со податоците се повлекува и Java applet преку кој клиентската страна може да комуницира користејќи се со JavaScript. Оваа техника работеше и на Internet Explorer 4 и на Netscape Navigator 4. Подоцна Microsoft го промовира објектотXMLHttpRequest во Internet Explorer 5, стекнувајќи се со престиж користејќи ги овие техники во Outlook Web Access кој доаѓаше со Microsoft Exchange Server 2000 изданието.
Заедницата на веб професионалци, на почетокот остварувајќи соработка преку microsoft.public.scripting.remote newsgroup а подоцна преку блог агрегација, успеа да развие повеќе техники за remote scripting со цел да се овозможат конзистентни резултати во различни веб прелистувачи. 2002 година направена е модификација [4] на Microsoft Remote Scripting при што беше направена замена на Java аплетот со XMLHttpRequest објектот.
Откако XMLHttpRequest објекот е имплементран во поголемиот број на веб прелистувачи во употреба, алтернативните техники се користат се поретко. Но тие сеуште се во употреба таму каде што се бара компатибилност со постарите веб сајтови или пак во некои специфични апликации.
Исто така, World Wide Web конзорциумот направи неколку Препораки во насока на динамичка комуникација помеѓу серверот и соодветниот агент на корисникот. Да напоменеме дека неколку од овие препоаки се добро подржани. Како например:
Consortium has several Recommendations that also allow for dynamic communication between a server and user agent, though few of them are well supported. These would include:
- Element објектот дефиниран во HTML 4 за вгнездување на соодветни типови во документите, (замена за inline рамки во XHTML 1.1)
- DOM објектот (Document Object Model) Level 3 Load и Save Спецификациите [1]
[уреди] Добри и лоши страни
[уреди] Добри страни
[уреди] Bandwidth utilization
Со локално генерирање на HTML кодот (од стана на веб прелистувачот) и само вчитување на потребните податоци со помош на JavaScript, Ajax веб страниците може да бидат вчитувани многу брзо доколку порциите на податоци кои се бараат од серверот се со помал обем. Еден пример за оваа техника е примерот со некоја голема табела која се протега на повеќе страници. Со помош на Ajax, HTML кодот на страницата, како што се таговите за контрола на изгледот на табелата TD, TR и слично може да бидат генерирани локално од страна на веб прелистувачот или пак доставени со првата страница. Ако корисникот ги бара следните страници од табелата,само суровите податоци ќе бидат вчитани, а подоцна соодветно претставени од страна на веб прелистувачот.
[уреди] Интерактивност
Ajax апликациите најчесто се извршуваат на клиентската страна, со манипулација на почетно вчитаната веб страница. Веб прелистувачот го користи DOM објектот на документот и методите за негова манипулација за менување на прикажаната содржината на документот. Ajax моѓе да се користи за најразлични работи, како например ажурирање или бришење на записи во база на податоци, скалирање на веб страницата, извршување на едноставни упити, или менување на DOM објектот без потреба од испраќање на комплетните податоци во веб формата до веб серверот и обратно. Значи само мала количина на сообраќај ќе се генерира помеѓу сервеот и клиентот, согласно со тоа ќе имаме релативно кратко време на одговор од страна на серверот. Ова ни овозможува да развиваме веб апликации кои се далеку поинтерактивни, при што корисничиот интерфејс комуницира побрзо и поефикасно со човекот за разлика од DHTML техниките.
[уреди] Лоши страни
[уреди] Употреба на back копчето и bookmark-ови
Веб апликациите кои користат Ajax најчесто не реагираат на очекуван начин во поглед на употребата на стандардното копчe back вградено во повеќето веб прелистувачи. При враќање на претходната состојба во веб прелистувачот со употеба на back копчето, кај динамички веб страници и кај статички веб страници не е исто, но корисниците најчесто очекуваат со употреба на back копчето од веб прелистувачот да ја добијат претходната состојба, но во Ajax апликациите тоа не е така.
Професионалците имаат имплементирано различни решениа за надминување на овој проблем. Некои од решенијата се состојат во користење на невидлив/и IFRAME за да се зачува историјата во поглед на употреата на back копчето од веб прелистувачот. На пример Google Maps, го извршува пребарувањето во невидлив IFRAME а потоа резултатот го прикажува во соодветен елемент на видливата веб страница. World Wide Web Конзорциумот (W3C) не го вклучува IFRAME елементот во препораките за XHTML 1.1, а го препорачува object елементот.
Друга работа е тоа што кај динамичките веб страници е тешко да се изврши bookmark на специфична ситуација на апликацијата. Постои решение за овој проблем, најчесто со користење на URL фрагмент идентификатор (дел од URL после '#' [5] [6]) за чување на состојбата, при што им се овозможува на корисниците да се вратат на некоја претходна состојба од апликацијата. Ова е возможно бидејќи повеќето веб прелистувачи допуштаат преку JavaScript да се врши динамичко ажурирање на URL фрагмент идентификаторот, на тој начин Ajax апликациите можат да знаат која состојба ја бара корисникот. Ова решение исто така ја подобрува употребата на копчето back во веб прелистувачот. се разбира ова не е комплетно и совршено решение.
[уреди] Време на одговор
Мрежната латенција — или интервалот помеѓу времето на поставување на барањето од страна на корисникот и времето на одговор на серверот, треба сериозно да се има во предвид при развој на Ajax апликации. Без добар фидбек до корисникот [7], мали вчитувања на податоци и соодветна манипулација со XMLHttpRequest објектот, може да дојде предолго доцнење па и замрзнување на содржината на страницата во веб прелистувачот, нешто што корисникот не го очекува и разбира. Истотака, кога страницата се рендерира, потребно е окото да се рефокусира при промена на содржината. Ова може да доведе до натаможно зголемување на латенцијата. Со користење на визуелни ефекти (како например бројачи, лизгачи и сл.) се информира корисникот за активностите кои се одвиваат во позадина.
Општо земено, овој проблем сеуште не е задоволително решен до денес.
[уреди] Search Engine Оптимизација
Веб сајтовите кои се користат со Ajax а има потреба да бидат индексирани од страна на пребарувачките машини (search engines), треба внимателно да бидат дизајнирани за да обезбедат соодветни податоци достапни за јавноста, линкови и сл, во формат кој пребарувачките машини може да го прочитаат, бидејќи пребарувачките машини не го извршуваат JavaScript кодот кој е потребен за да Ajax апликациите бидат функционални. Овој проблем не е само проблем кај Ajax.
[уреди] Accessibility
Со користење на Ajax технологиите во веб апликациите се отвораат многу можности за професионалците заинтересирани за WAI accessibility guidelines. Постојат повеќе развојни групи кои работат на проекти за владата на САД кои бараат стриктна примена на Section 508 Compliance стандарди. Доколку не постои согласност со овие стандарди може да дојде до прекин на договорот за соработка.
Заради ова, развивачите потребно е да обезбедат соодветни опции за корисниците на останатите платформи или веб прелистувачи кои немаат можност за користење на Ajax технологиите, бидејќи овие технологии се базираат на особености кои се карактеристични за графичките веб прелистувачи.
[уреди] Види исто така
- Ajax framework
- Comet
- HTTP streaming
- JHR
- Progressive enhancement
- Reverse Ajax
- Rich Internet application
- Single page application
- Web 2.0
- XMLHttpRequest
[уреди] Референци
- ↑ „Ajax: A New Approach to Web Applications“. Adaptive Path. [Страната е посетена на 2006-08-01].
- ↑ „New Web-based Technology Draws Applications, Investors“. Wall Street Journal. [Страната е посетена на 2006-06-14].
- ↑ На повеќе семинари Гарет укажува на поентата дека Ajax не е акроним.
- ↑ „HTTPRequest-enabled RS“. microsoft.public.scripting.remote newsgroup. [Страната е посетена на 2006-08-01].
- ↑ „Uniform Resource Identifiers (URI): Generic Syntax“. The Internet Society. [Страната е посетена на 2006-07-21].
- ↑ „Uniform Resource Identifier (URI): Generic Syntax“. The Internet Society. [Страната е посетена на 2006-07-21].
- ↑ „Remote Scripting with AJAX, Part 2“. O'Reilly XML.com. [Страната е посетена на 2006-07-21].
[уреди] Надворешни врски
- AJAX category on the Open Directory Project.
- Статии
- Упатства
- Ajax:Getting Started by Mozilla Developer Center.
- Ajax Tutorial with get, post, text and XML examples.
- Presentation on Ajax Security issues given at the Black Hat security conference.