Cовременный AJAX и инструменты разработки
«Классический подход»
Классические Веб-приложение работает примерно следующим образом: большинство действий пользователя вызывает обращение к серверу. Сервер занимается обработкой запроса (принимает данные), производит некоторые манипуляции с ними, и возвращает пользователю HTML страничку. (Подобный подход изначально разрабатывался для того, чтобы использовать Веб как хранилище гипертекстовых документов). В принципе тут немного отличий от методики AJAX, просто задача обращения к серверу ложится на браузерную компоненту, которая как принимает, так и возвращает данные, но страница при этом не перегружается.
Классический подход удобен для разработки, но не использования. Что делает пользователь, пока сервер выполняет свою работу? Правильно, он ждет. И, с выполнением каждой следующей операции, он снова ждёт, и так при смене каждой страницы. Очевидно, что если бы нам пришлось разрабатывать концепцию Веб с нуля, то мы бы избавились от необходимости заставлять пользователя часто ожидать перезагрузки страницы. Если весь интерфейс уже загрузился, почему взаимодействие пользователя с программой должно прерываться, как только программе понадобились некоторые данные с сервера?
«Современный AJAX подход»
Суть методологии Ajax — это свести к минимуму цикл «передачи данных/пауза, ожидания ответа» и постараться сделать общение пользователя с конкретным веб-сайтом как можно ровнее.
Все пользовательские запросы, обычно отправляемые веб-серверу, вместо этого направляются Ajax-движку посредством JavaScript. Движок принимает решение — необходима ли загрузка данных с сервера или нет(возможен случай,когда некоторые данные уже закешированы). Если данные необходимо отправить или загрузить — это происходит в фоне и независимо от самого веб-приложения, не прерывая процесс общения пользователя с веб-сайтом. Данные отправляются и принимаются асинхронно, обычно используя XML представление.
Добавим следующее: технология AJAX на текущий момент не совсем пригодна для полноценного внедрения в веб-сайт. Почему? перечислим некоторые ограничения:
- Индексирование. «Пауки» поисковых машин так же не всегда успешно справляются с индексацией таких страниц. В принципе, можно обойти данное ограничение путем создания фиктивных ссылок, но решение далеко не и самых красивых и точных.
- Ссылки. Это то, что раздражает чаще всего. Представьте страничку, которая отображает список городов с возможностью фильтрации через выбор страны в списке выбора. Многие сайты сейчас делают это через AJAX и подобные технологии, перерисовывая список без изменения адреса странички. То есть вместо выбора страны в параметрах страницы (11) адрес странички остается тем же, а выбор пользователя в списке передается на сервер либо отдельно. Это страшно неудобно для пользователя, т.к. нет возможности в этом случае сохранить в адрес странички с уже сделанным выбором страны. Другой пример: search.live.com. Безусловно, показ всех результатов запроса без разбивки на страницы впечатляет, но вряд ли это удобно.
- Кнопка «Назад»
- По данным исследователей, кнопка браузера «Назад» является вторым по популярности средством навигации после перехода по ссылке. То есть, пользователь всегда рассчитывает на возможность вернуться на одну страницу назад. Веб-странички, которые созданы с использованием Аякса, такую возможность не поддерживают, потому что их содержание создается «на лету». Чтобы как-то это исправить, можно запрограммировать соответствующую логику на JavaScript и сделать ссылку «Назад», щелчок на которую позволит пользователю перейти на предыдущую страницу. Второй вариант, более универсальный и чаще всего легче реализуемый, — использовать невидимый IFRAME, который будет накапливать историю переходов.
- Неопределенное время ответа
- Время ответа сервера на запрос не определено — может пройти несколько секунд, а может и несколько минут. И пользователь начинает сильно нервничать, грызть ногти и, наконец, закрывает страничку — ведь браузер никак не отображает, что там что-то происходит :). Чтобы не доводить пользователя до невроза, нужно вставить на страничку хотя бы надпись «Идет загрузка». Более сложное решение — использование отклика системы со стороны сервера.
- Если вас не напугали эти ограничения, продолжим...
RIA! EUREKA!
В использовании AJAX на веб-сайте есть какой-то смысл, но круг задач, которые можно возложить на данную технологию все таки стоит ограничить.
Последнее время все более и более популярными становятся принципы RIA (Rich Interenet Application). Развитие данных принципов уже принесло, а в недалеком будущем скорее всего сделает революцию в области Веб-приложений. О RIA уже много сказано, поэтому лучше один раз увидеть, чем сто раз прочитать, RIA фрейморки впечатляют backbase.com, bindows.net, extjs.com
Все это дает возможность использовать AJAX как платформу для веб-приложений (именно веб-приложений, а не сайтов), интерфейсные возможности которых не будут уступать возможностям обычных «оконных» windows или linux приложений. Это идею сразу же подхватили Интернет-гиганты google и yahoo, которые на данный момент усиленно развивают почтовые клиенты, фотоколлекции, приложения для работы с таблицами, текстовые редакторы и прочие продукты, но уже веб-ориентированно. По мнению эскпертов, именно on-line приложения в ближайшем будущем частично, а может быть и полностью заменят нам любимый набор Office от дядюшки Билли.
AJAX в решениях ABIATEC
На данный момент наша компания может смело заявить о том, что 3-х летний опыт, приобретенный во время разработки ряда веб приложений на AJAX, позволяет нам решить любую AJAX-ориентрованную задачу.
Система управления сайтом X3M.CMS, является самым ярким примером решения таких задач.
Автор: технический директор ABIATEC — Бобров Дмитрий 2011 г.