Алик Кириллович

«Совершенный Ajax» – новый подход к построению настоящих клиент-серверных web-приложений

17 декабря 2008 г.

«Совершенный Ajax» — новый подход к построению web-приложений, при котором web-сервер не генерирует ни строчки HTML-кода и взаимодействует с внешним миром только посредством web-служб; а клиентский интерфейс реализуется только на основе клиентских HTML, CSS, JavaScript.

Статья состоит из двух частей. В первой части — более живой и провокационной я постараюсь заинтересовать проблемой, рассказать о технологии «Совершенный Ajax» и показать её применение на примере нашего проекта «Система Интерактивного Тестирования Знаний „Синтез“» (который имеет ряд интересных особенностей, таких, как использование серверного JavaScript на платформе Mozilla Rhino, прототипно-ориентированная ORM и поддержка SPARQL — языка запросов к Semantic Web).

Вторая часть – более занудная будет содержать много технических деталей и выйдет в следующий раз.

 

Попробуйте угадать: к какой архитектуре относятся web-приложения?

К клиент-серверной говорите? Я ожидал, что Вы так ответите…

Что ж, давайте разберёмся. В клиент-серверной архитектуре выделяют [1]:

Реализация бизнес-логики на сервере и взаимодействие с пользователем на клиенте чётко разделены.

Преимущества клиент-серверной архитектуры очевидны; мы их все знаем:

  1. Бизнес-логика не смешивается с пользовательским интерфейсом.

  2. Можно реализовать несколько клиентов с разными пользовательскими интерфейсами: интерфейс командной строки, оконный Windows-интерфейс, Flash, web-интерфейс, мобильный интерфейс и т.д.

  3. Клиентский компьютер не требователен к ресурсам;

  4. И т.д.

 

Но, относятся ли web-приложения к клиент-серверной архитектуре? Web-сервер

Действительно, в web-приложениях есть сервер, отвечающий за бизнес логику приложения.

Но! За реализацию интерфейса отвечает не клиент, а тоже сервер. На сервере происходит обработка клиентской формы. Сервер генерирует HTML-код пользовательского интерфейса.

Браузер Клиент, т.е. браузер лишь визуализирует уже готовый HTML-код интерфейса. Это, фактически, то же самое, что прицепить к серверу монитор и объявить этот монитор клиентом…

Замечание:

Здесь, правда, есть одна тонкость. Следует различать два понятия: web-приложения и систему «браузер — web-сервер». Web-приложения работают поверх браузера и web-сервера, так же как Java-приложения работают поверх JVM, приложения на .Net работают поверх .Net Framework, а протокол HTTP работает поверх TCP/IP.

Система «браузер — web-сервер» действительно имеет клиент-серверную архитектуру: web-сервер принимает и обрабатывает запросы, а браузер визуализирует результат.

Однако, здесь мы говорим не о системе «браузер — web-сервер», а о работающих поверх неё web-приложениях.

Вряд ли такой подход можно назвать полноценной клиент-серверной архитектурой. Он имеет много недостатков:

  1. Смешивание бизнес-логики и пользовательского интерфейса;

  2. Сложно реализовать несколько пользовательских интерфейсов;

  3. Сторонни программы не могут обращаться к серверу (если не написан специальный api);

  4. Большая часть нагрузки по обработке интерфейса ложится на сервер.

  5. И т.д.

Мейнфрейм Впрочем, мы знаем в истории пример подобной архитектуры. В 70-годы были распространены мейнфреймы. Мейнфрейм — такой огромный железный сундук (сервер), к которому подключались рабочие станции (клиенты). Причём, рабочая станция представляла собой просто монитор с клавиатурой. И любые действия клиента на рабочей станции обрабатывалось на сервере, порой даже такие как обработка нажатия на клавишу и обрисовка экрана [2]. Ну, мы знаем, насколько популярны мейнфреймы сегодня…

 

Конечно, в современных web-приложениях часть интерфейсной логики реализуется на клиенте с помощью JavaScript. Ajax Часть данных загружается с помощью Ajax и визуализируется именно на клиенте.

Но, тем не менее, многие действия связанные с пользовательским интерфейсом, по-прежнему, выполняются на сервере. Использование Ajax сейчас во многом даже усугубляет ситуацию, т.к. приводит к разбрасыванию реализации интерфейса между серверным и клиентским кодом.

Так вот, я предлагаю подход «Совершенный Ajax», который призывает развить идею Ajax до логического конца и полностью отказаться от использования сервера для реализации пользовательского интерфейса web-приложений.

Подход «Совершенный Ajax» построен на следующих принципах:

«Совершенный Ajax» в нашем проекте

Опишу эту архитектуру на примере нашего проекта «Система Интерактивного Тестирования Знаний „Синтез“».

Сервер

В концепции «Севершенный Ajax» сервер должен удовлетворять одному-единственному условию: не генерировать ни строчки HTML-кода и осуществлять связь с внешним миром посредством web-служб. Во всём остальном его реализация ничем не ограничена.

Здесь я опишу структуру сервера в нашем проекте, т.к. она имеет ряд интересных особенностей: использование серверного JavaScript на платформе Mozilla Rhino, прототипно-ориентированная ORM и возможность использования SPARQL — языка запросов к Semantic Web.

Однако, Ваша реализация сервера может быть совершенно иной и совсем не похожей на нашу.

Архитектура сервера
СУБД
СУБД
Объектное ядро бизнес-логики
Ядро бизнес-логики
Прототипно-ориентированная ORM
ORM
Web-сервер
Web-сервер

Клиент

Наше приложение может иметь сколько угодно интерфейсных реализаций, разработанных любыми производителями.

Однако, оно всегда имеет в комплекте «родной» web-интерфейс.

Здесь я опишу его структуру.

Архитектура клиента
Интерфейсное ядро
Интерфейсное ядро

Интерфейсное ядро — объектно-ориентированная JavaScript-библиотека, управляющая всем клиентским web-интерфейсом:

Библиотека обёртка
Объектно-ориентированная библиотека-обёртка над web-службами
Семантическая вёрстка
Семантическая вёрстка
Библиотека контролов
Библиотека контролов

 

Подробности технической реализации подхода «Совершенный Ajax» — во второй части.

Примечания

  1. Речь идёт о клиент-серверных приложениях с конечным пользователем. В клиент-серверных приложениях вроде «клиент — сервер базы данных», пользовательский интерфейс, разумеется, отсутствует.

  2. Позже, у мейнфреймов появились так называемые «умные клиенты», которые обладали собственным процессором и памятью, а наиболее продвинутые могли даже проверить форму перед отправкой на сервер. Это очень напоминает нынешнюю робкую попытку передать часть интерфейсной логики web-приложения на клиент с помощью Ajax.

Библиотека подсветки синтаксиса в этой статье основана на «highlight.js» от Ивана Сагалаева.

См. также

233 комментария:

  1. Владимир
    02.01.2009, 16:35

    Попробую резюмировать :)

    Делаем передачу данных в формате XML или JSON (или каком-нибудь еще) и получаем "Совершенный AJAX".

    Не понятно о какой библиотеке контролов идет речь. Вашей собственной (вы ее продаете или свободно распространяете?) или существующей?

  2. Алик Кириллович
    06.01.2009, 04:18

    @Владимир

     

    Делаем передачу данных в формате XML или JSON (или каком-нибудь еще) и получаем "Совершенный AJAX".

    Главное в подходе «Совершенный AJAX» то, что:

    • web-сервер не генерирует ни строчки HTML-кода и взаимодействует с внешним миром только посредством web-служб;
    • клиентский интерфейс реализуется только на основе клиентских HTML, CSS, JavaScript.

    А XML или JSON — это лишь средство для работы web-служб.

     

    Не понятно о какой библиотеке контролов идет речь. Вашей собственной (вы ее продаете или свободно распространяете?) или существующей?

    При подходе «Совершенный AJAX» можно использовать любую клиентскую библиотеку контролов — как самописную, так и уже готовую: ExtJS, Dojo, jQuery UI и т.д.

    Главное, чтобы превращение HTML-элемента в соответвующий контрол, по возможности, происходило только путем навешивания стилей и обработчиков событий, без изменения его кода (DOM структуры).

    В нашем проекте мы, по некоторым причинам, используем собственную внутреннюю библиотеку; однако, в принципе, при подходе «Совершенный AJAX» можно использовать библиотеки любых производителей.

  3. Владимир
    07.01.2009, 14:41

    >> web-сервер не генерирует ни строчки HTML-кода

    Допустим, серверный передает дату. Он может сделать несколькими способами:

    1) как метку времени;

    2) отформатированную функцией date (или аналогичной).

    Формально ни в том, ни в другом случае HTML разметки нет.

    Но очевидно, что во втором случае разработчику клиентского интерфейса работать будет сложнее, особенно если при форматировании будет отброшена часть информации (например, секунды).

    Поэтому, на мой взгляд, требование "web-сервер не генерирует ни строчки HTML-кода" нужно изменить на "web-сервер не форматирует данные вообще".

  4. Глеб Белогорцев
    27.01.2009, 12:05

    Идея понравилась, звучит очень заманчиво, но у такой схемы есть и минусы:

    - большАя часть нагрузки перекладывается на клиентскую машину. Уже сейчас есть сайты, использующие AJAX, при просмотре которых мой комп начинает тормозить. А уж если в JS будет какая-нибудь ошибка, приводящая к утечкам памяти...

    - стандартный интерфейс становится недоступным для альтернативных клиентов, типа мобильных или текстовых браузеров (можно под них написать свою клиентскую часть, но кто этим будет заниматься?).

    - если при обычном "несовершенном" AJAX поисковики проиндексируют на сайте хоть что-то, то тут, подозреваю, с индексацией будет совсем плохо.

    Так что этот принцип подходит далеко не для всех проектов.

    Кстати, а что вы используете для обмена данных между JS и сервером: JSON или XML (просто статистику собираю)?

  5. Алик Кириллович
    27.01.2009, 17:50

    @Глеб Белогорцев

    Так что этот принцип подходит далеко не для всех проектов.

    Совершенно правильно. Для сайтов, разумеется, следует использовать традиционный подход.

    Архитектура «Совершенный Ajax» предназначена для web-приложений (программ).

    Это и решает многие приведенные Вами проблемы:

     

    с индексацией будет совсем плохо

    web-приложениям (таким, как GMail, GMaps и т.д.) не требуется индексация в поисковиках.

     

    стандартный интерфейс становится недоступным для альтернативных клиентов, типа мобильных или текстовых браузеров

    Вообще, обычные web-приложения итак далеко не всегда доступны для альтернативных клиентов.

    При подходе «Совершенный Ajax», сделать интерфейс доступным для альтернативных клиентов, становится даже проще, чем в обычных приложениях.

    Поскольку элементы управления (вкладки, меню, деревья) получаются из соответствующих HTML-конструкций простым навешиванием CSS и JS-классов, их очень просто адаптировать для альтернативных устройств.

    Например, если у нас есть контекстное меню (требующее правую кнопку мыши и не работающее на мобильных устройствах), его можно превратить в понятный для мобильника многоуровневый список, просто заменив соответствующие CSS и JS-классы.

    От клиента требуется только поддержка JavaScript.

    В самом тяжелом случае, кода клиент не поддерживает даже обычный JavaScript, можно реализовать альтернативный облегченный интерфейс. Поскольку при подходе «Совершенный Ajax» бизнес-логика полностью отделена от интерфейса, написать альтернативный клиент гораздо проще, чем при традиционном подходе.

  6. miraz
    15.02.2009, 04:46

    Ждем продолжения!надеюсь будет!

  7. MX
    22.02.2009, 06:59

    Маленький технический вопрос:

     
    //Получаем с сервера объект Морковкин Вася 
    var objStudent1 = Sintez.getStudent ("this.firstName = `Вася` and this.secondName = `Морковкин`");
    //Получаем объект 3 "А" класс 
    var objClass1 = Sintez.getClass ("this.getClassNuber() = 3 and this.liter = `А`");
    //Делаем Васю учеником этого класса 
    objClass1.addStudent (objStudent1);
    

    Посмею предположить, что в данном коде выполняется как минимум три синхронных AJAX-запроса. я прав?

  8. Алик Кириллович
    22.02.2009, 12:32

    @MX

    Посмею предположить, что в данном коде выполняется как минимум три синхронных AJAX-запроса. я прав?

    Да, действительно, в приведенном примере генерируются три запроса (по одному на каждую операцию).

    Понятное дело, что при написании сложных функций, запросы, если это возможно, сначала помещаются в буфер, а затем скопом отсылаются на сервер.

  9. ZeusTheTrueGod
    15.05.2009, 14:42

    //Получаем с сервера объект Морковкин Вася

    var objStudent1 = Sintez.getStudent ("this.firstName = `Вася` and this.secondName = `Морковкин`");

    //Получаем объект 3 "А" класс

    var objClass1 = Sintez.getClass ("this.getClassNuber() = 3 and this.liter = `А`");

    //Делаем Васю учеником этого класса

    objClass1.addStudent (objStudent1);

    Это работать не будет. Идёт асинхронный запрос, код продолжает выполняться, и ответ придёт позже. может быть у xmlhttp и есть какой-то флаг, позволяющий исполняться синхронно(и блокировать джаваскрипт то ответа), но тогда выходят жуткие тормоза в системе(особенно если сюда цикл воткнуть).

    Получается, что надо на сервер передавать описание действий, а сервер их должен выполнить и отдать ответ.

    Но никак не сделать вот такие три запроса, бизнес логика придумана совсем не для клиента, а только для сервера

  10. dizelbox
    13.06.2009, 00:27

    Это хорошая идея по поводу совершенного AJAX, но все равно предварительно потребуется каким-то образом иметь у пользователя все необходимые скрипты и непосредственно странички.

  11. kep
    23.08.2009, 08:12

    Тема интересная, без сомнения...

    И у нее есть будущее, так как, именно в этом направлении рынок и собирается развиваться!

    Помнится для одной практической работы - " ... "

    На клиент изначально засылалась оболочка, а в виде "транспортного протокола общения" был выбран XML...

    А плюсы всего этого:

    + Логика отделена от данных

    + Возможность смены дизайна

    + И самый главный не нужно каждый раз генерировать на сервере "визуальную" составляющую...

    + ...

    + ...

    Но есть и один главный минус, чтобы пользоваться всем этим добром нужно сначала доставить оболочку клиенту...

  12. Сергей Титенко
    11.09.2009, 18:55
    //Получаем с сервера объект Морковкин Вася
    var objStudent1 = Sintez.getStudent ("this.firstName = `Вася` and this.secondName = `Морковкин`");
    
    //Получаем объект 3 "А" класс
    var objClass1 = Sintez.getClass ("this.getClassNuber () = 3 and this.liter = `А`");
    
    //Делаем Васю учеником этого класса
    objClass1.addStudent (objStudent1);
    
    

    Алик, я солидарен с ZeusTheTrueGod

    Хотелось бы услышать ваш комментарий по поводу необходимости отложенной обработки таких асинхронных вызовов.

    Т.е. строчку objClass1.addStudent (objStudent1) имеем право выполнять только после того, как убедимся, что на первые два вызова сервер уже ответил.

  13. Константин
    14.12.2009, 06:11

    @ZeusTheTrueGod, @Сергей Титенко

    откуда Вы взяли, что XHR выполняется асинхронно ???

    var data = getData(); // XMLHttpRequest

    alert ("data is " + data);

    такая конструкция работает, хотя если бы она была асинхронной - то алерт всегда давал бы <null>, "" или "undefined".

  14. Алексей
    04.10.2010, 17:17

    var data = getData (); // XMLHttpRequest

    alert ("data is " + data);

    Подтверждаю, все работает асинхронно.

  15. Itan
    03.04.2011, 15:17

    Спасибо :) А вас, кстати, уже за "висячую" пунктуацию стоит уважать :) Да и вообще у вас шаблон грамотно сверстан. Извините за оффтоп :)

  16. Proger
    11.04.2011, 18:49

    Решение точно универсальное, но нагрузка, как на клиент, так и сервер должна быть зверская. JavaScript будет постоянно загружать браузер на полную, тут только нормальные настольные компьютеры и ноутбуки все будут быстро переваривать. Для всего портативного и маленько приодеться создавать специальные оптимизированные версии избавляясь от всего лишнего.

  17. Fame
    29.04.2011, 15:37

    Аякс это сильное подспорье в юзабилити, мне нравится

  18. Даша
    29.04.2011, 17:13

    интересно, интересно)

  19. Lina
    04.05.2011, 00:56

    Информативненько. Давно уже собираюсь освоить аякс, только это сложновато для меня пока что. Проще поручить исполнителю и не вникать во все тонкости, нельзя же уметь всего.

  20. Suh
    04.05.2011, 22:15

    А когда дело дайдёт до облачных технологий! Вот где будет прогресс! Ох простите, кажется я вру. Старо же как мир. Сервер и терминалы. Извращённость начинается тогда, когда слабый и дырявый браузер используют все программы на компьютере пользователя, а сервером выступает сам же этот компьютер.

    Однако скажу и в защиту. Модель SaaS - вот где истинная прелесть клиент серверных приложений на базе веб сервисов и AJAXS. Пишем клиенты на смартфоны, кпк, пк, веб клиенты, а логика остаётся всё таже. Безумно удобно, а главное не приходится париться, не взломали ли вашу программу и пользуют не заплатив. Теперь всё считаем только на сервере и отключаем клиента к чертям, если не заплатил=)

  21. последние новости
    06.05.2011, 16:11

    Suh

    Так уже давно её используют.

  22. Дмитрий
    17.05.2011, 22:25

    Попробую реализовать!

    Как раз есть подходящий проект.

    Спасибо за идею!

  23. Serega
    22.05.2011, 13:12

    Suh поверь мне сегодня ты создал завтра эту прогу все равно взломают, (если конечно толковая прога), как и хрумера которую говорили в свое время не взломать )

  24. Yarik
    23.05.2011, 17:32

    Serega, хрумер не лучший пример.

    Идей много, но средств мало, увы..

  25. webmaster
    26.05.2011, 17:44

    Да вообще аякс мощная технология

  26. Oleg
    28.05.2011, 17:57

    А что, хрумера взломали уже?

  27. endomorfine
    30.05.2011, 21:24

    Олег, да как бы давно 3, 5 ломаные уже.

  28. teac2010
    03.06.2011, 08:12

    А что хрумер взломали уже?

  29. Никита
    16.06.2011, 18:11

    Очень было интересно почитать, спасбио. А насчет Хрумера: он давно взломан.

  30. Roman
    17.06.2011, 05:23

    Написано много и некоторая информация не совсем понятна.

  31. Mehanik
    18.06.2011, 04:17

    У вас обзоры хоть и больщие, но весьма занимательные. Жду еще новинок)

  32. Sam
    19.06.2011, 04:18

    Не вижу новых обзоров. Напишите что нибудь новенькое.

  33. саша
    30.06.2011, 21:53

    Для такого "Совершенный Ajax" немало денег нужно отвалить. Иной прэкт: http://www.ysadba.org

  34. altevsk
    10.07.2011, 19:23

    Возможно, JavaScript будет постоянно загружать браузер на полную.

  35. Sveta
    10.07.2011, 19:26

    Вообще реализовать это решение на Аяксе очень правильное дело!

  36. Макс
    16.07.2011, 11:22

    Попробую реализовать!

  37. Vova
    16.07.2011, 16:48

    Интересное решение, только не будет ли сильно это влиять на производительность.

  38. алексей
    17.07.2011, 14:49

    я новичёк, подскажите пожалуйста что такое хрумер?

  39. Диагностический центр
    19.07.2011, 10:53

    На сколько сложно на аяксе реализовать чат? Я знаю, что готовых решений куча, но там прийдётся встраивать в cms...

  40. cll
    19.07.2011, 17:31

    Аякс сложноват в освоении, ява скрипт я както еще осоил, а аякс чето пока туговато(

  41. Вероника Свердлова
    19.07.2011, 20:47

    Определенно нравится аякс, и пунктуация, и "асинхронность". Буду пытаться осваивать...

  42. FashionLady
    20.07.2011, 04:51

    Ваш аякс уже давно устарел, сейчас есть более мощные проги.

  43. Juicy Couture Outlet online
    22.07.2011, 04:59

    только не будет ли сильно это влиять на производительность.

  44. magros
    24.07.2011, 20:10

    Думаю будет

  45. kokcuk
    26.07.2011, 10:38

    ajax умирает

    http://www.flashcollection.net

  46. Роберт
    27.07.2011, 00:00

    Решение точно универсальное, но нагрузка, как на клиент, так и сервер должна быть зверская. JavaScript будет постоянно загружать браузер на полную, тут только нормальные настольные компьютеры и ноутбуки все будут быстро переваривать. Для всего портативного и маленько приодеться создавать специальные оптимизированные версии избавляясь от всего лишнего.

  47. КР
    29.07.2011, 01:15

    Хороший блог и статьи полезные. Спасибо автору

  48. Roman
    29.07.2011, 12:28

    Нравится мне эта технология! Но очень тяжело осваивать!

  49. Maxim
    02.08.2011, 16:34

    Отличная статья! Давно пытаюсь освоит Аякс

  50. Juicy Couture outlet
    06.08.2011, 06:40

    Система Интерактивного Тестирования Знаний „Синтез“» (который имеет ряд интересных особенностей, таких, как использование серверного JavaScript на платформе Mozilla Rhino, прототипно-ориентированная ORM и поддержка SPARQL — языка запросов к Semantic Web).

  51. Tory Burch outlet
    06.08.2011, 12:35

    ко не будет ли сильно это влиять на производительность.

  52. discount gucci bags
    06.08.2011, 12:37

    Система Интерактивного Тестирования Знаний „Синтез“» (который имеет ряд интересных особенностей, таких, как использование серве

  53. Longchamp outlet
    06.08.2011, 12:38

    Хороший блог и статьи полезные. Спасибо автору

  54. Дмитрий
    09.08.2011, 07:43

    Спасибо! Интересная статейка, прочел з удовольствием....

  55. cheap juicy handbags
    11.08.2011, 13:54

    Спасибо! Интересная статейка, прочел з удовольствием....

  56. metiz
    11.08.2011, 21:55

    Автору респект! нельзя не добавить этот блог в закладки!

  57. Рустам
    15.08.2011, 22:46

    Очень хорошо написано.

  58. Detective
    17.08.2011, 05:14

    Из-за тонкости аякс откажутся выбирать.

  59. Кощей
    17.08.2011, 14:28

    Dofollow блог Кощея.

  60. Artur
    17.08.2011, 15:47

    Давно пытаюсь освоить Аякс, но очень сложно поддается!

  61. Александр
    19.08.2011, 11:55

    Попробую реализовать!

    Как раз есть подходящий проект.

    Спасибо за идею!

  62. Semen
    19.08.2011, 12:10

    По-моему Ajax уже отходит и устаревает!

  63. Русланиус
    19.08.2011, 15:10

    Аякс жив и будет жить еще долго, кто бы что не говорил.

  64. Pavel
    19.08.2011, 16:20

    Когда-то изучал Аякс, но подзабросил и все ужезабыл!

  65. Van Insurance
    19.08.2011, 22:25

    Возможно, это одна из самых интересных блогов, которые я когда-либо видел. Интересная статья, Забавные комментарии. Так держать!

  66. persol sunglasses
    20.08.2011, 10:27

    Я согласен с вами. Вы дали нам с такой большой сбор информации. Большую работу вы сделали, разделяя их на все просто великолепно.

  67. Павел
    21.08.2011, 20:33

    Немногожко дописал + подключил api google (JQ), сейчас юзаю быстродействие на высоте....Но всё же хочу сделать min-версию...

  68. Хорадрик
    23.08.2011, 09:29

    По статье - в целом, все четко расписано. Но я ожидал конкретных рекомендаций к действию. А так пока только общая структура. Надеюсь во второй скучной части будет больше технических деталей.

    Очень интересно также будет почитать про СНЯПИМ.

  69. Юрий
    23.08.2011, 18:27

    Описано подробно и понятным языком, надо будет попробовать.

  70. wtf
    25.08.2011, 20:43

    Новости Lineage 2 на http://powerstr1ke.ru

  71. Vitaliy
    01.09.2011, 15:57

    Отличная статья, узнал много нового об Аяксе! Очень подромно рассписано!

  72. melianora
    01.09.2011, 21:20
  73. Roman
    02.09.2011, 11:49

    Хорошая познавательная статья, много узнал об Аяксе!

  74. Никита
    03.09.2011, 15:46

    Ajax уже устарел

  75. Новости LineAge-2
    04.09.2011, 22:10
  76. Kirill
    05.09.2011, 16:26

    Такая подробная статья! Спасибо за разъяснения! Нашел для себя много нового!

  77. yammik
    06.09.2011, 12:44

    Спасибо за статью, хоть аякс устарел но мне ново.

  78. Evgeniy
    08.09.2011, 15:11

    Аякс дело нужное, можно, конечно и без него обойтись, но для большего качества лучше использовать. Спасибо за полезную статью;)

  79. Dmitriy
    08.09.2011, 16:44

    Очень познавательная статья и полезный материал, спасибо!

  80. Maksim
    09.09.2011, 10:34

    Спасибо за статейку, давно хотел подучить Аякс

  81. Denis
    09.09.2011, 12:03

    Много узнал нового об Аякс! Спасибо автору!

  82. Feror
    09.09.2011, 14:18

    Полезная статья, материала по этой теме не так уж много!

  83. Charger
    09.09.2011, 18:40

    Это элементарная работа с API, клиент (JS) отправляет запрос серверу и получает ответ в формате JSON, его и парсить не надо, простой eval :)

  84. Roma
    09.09.2011, 21:21

    спасибо! Хорошие советы!

  85. Miha
    09.09.2011, 21:42

    Э-э-э-х, Аякс дело нужное однозначно. По такому материалу может и я с ним смогу наконец-то разобраться по-человечески.

  86. 4program
    09.09.2011, 22:11

    Спасибо, узнал много нового для себя.

  87. Сайт для открытия пластиковой карты онлайн.
    10.09.2011, 22:16

    ПриватБанк

  88. Sergey
    12.09.2011, 16:12

    Очень полезная статья! Признателен автору!

  89. Maxim
    13.09.2011, 10:10

    Так подробно разжевали! Даже я немного понял!

  90. игорь
    13.09.2011, 21:58

    хотелось бы еще пост про чат на аякс

  91. Viktor
    14.09.2011, 16:13

    Очень информативный пост, много из него узнал!

  92. Alex
    16.09.2011, 12:24

    Спасибо за очень полезный и доступный материал!

  93. Serg
    16.09.2011, 23:29

    Ну насколько я понял, с этой проблемой справился код jquery ajax

  94. Stas
    19.09.2011, 17:04

    Отличный пост, много для себя нового узнал

  95. french riviera
    19.09.2011, 21:52

    Это один из хороших статей, вы можете найти в сети объяснить все в деталях, касающихся темы. Я благодарю вас за ваше время обмениваться мнениями и идеями, чтобы много читателей там.

  96. Ivan
    20.09.2011, 13:03

    Классная статья! А последний камент просто убил=)))

  97. фильмоман
    20.09.2011, 17:18

    Хорошая статья, но для себя усвоил не очень много, т.к. хорошо разбирабсь в аякс

  98. Михаил
    20.09.2011, 17:28

    Хорошая статья!!! Спасибо!

  99. Charger
    22.09.2011, 21:02

    Интересная статья, но все же это можно реализовать чуть-чуть проще

  100. ИТ
    22.09.2011, 21:03

    Спасибо за статью, AJAX это будущий стандарт для ВЕБ'a

  101. Ruslan
    23.09.2011, 13:17

    Хорошая статья, очень познавательная!

  102. Filipp
    23.09.2011, 17:23

    Уже давно стараюсь изучить Аякс, но все не осилю

  103. IO
    24.09.2011, 12:18

    Еще скажу, меня волнует что это достаточно медленно и могут быть частые ошибки.

  104. gucci outlet
    25.09.2011, 05:39

    5.

    И т.д.

    Мейнфрейм Впрочем, мы знаем в истории пример подобной архитектуры. В 70-годы были распространены мейнфреймы. Мейнфрейм — такой огромный железный сундук (сервер), к которому подключались рабочие станции (клиенты). Причём, рабочая станция представляла собой просто монитор с клавиатурой. И любые действия клиента на рабочей станции обрабатывалось на сервере, порой даже такие как обработка нажатия на клавишу и обрисовка экрана [2]. Ну, мы знаем, насколько популярны мейнфреймы сегодня…

  105. juicy couture outlet online
    25.09.2011, 06:20

    Мейнфрейм Впрочем, мы знаем в истории пример подобной архитектуры. В 70-годы были распространены мейнфреймы. Мейнфрейм — такой огромный железный сундук (сервер), к которому подключались рабочие станции (клиенты). Причём, рабочая станция представляла собой просто монитор с клавиатурой. И любые действия клиента на рабочей станции обрабатывалось на сервере, порой даже такие как обработка нажатия на клавишу и обрисовка экрана [2]. Ну, мы знаем, насколько популярны мейнфреймы сегодня…

  106. gucci outlet online
    25.09.2011, 08:33

    В XML-языках все элементы, вне зависимости от их смысла оформляются с помощью общих синтаксических конструкций.

  107. Вячеслав
    25.09.2011, 13:40

    Автору спасибо за очередной отличный пост) Уже 5 ваших постов прочитал) очень доволен))

  108. Dmitry
    26.09.2011, 17:17

    Хороший мануальчик, много из него почерпнул!

  109. Moncler Doudoune
    27.09.2011, 06:25

    всё более вытесняя формат традиционных информационных сайтов

  110. Tory Burch outlet stores
    27.09.2011, 10:32

    действия клиента на рабочей станции обрабатывалось на сервере, порой даже такие как обработка нажатия на клавишу и обрисовка экрана [2]. Ну, мы знаем, насколько популярны мейнфреймы сегодня…

  111. sergey
    27.09.2011, 17:15

    И не поленились же столько написать! Хорошая статья, очень познавательная

  112. Autoepoch
    29.09.2011, 13:00

    Если выводить сайдбар через AJAX, это не будет считаться за клоакинг?

  113. shop soccer jerseys
    30.09.2011, 13:00

    Мейнфрейм Впрочем, мы знаем в истории пример подобной архитектуры. В 70-годы были распространены мейнфреймы. Мейнфрейм — такой огромный железный сундук (сервер), к которому подключались рабочие станции (клиенты). Причём, рабочая станция представляла собой просто монитор с клавиатурой. И любые действия клиента на рабочей станции обрабатывалось на сервере, порой даже такие как обработка нажатия на клавишу и обрисовка экрана [2]. Ну, мы знаем, насколько популярны мейнфреймы сегодня…

  114. Roman
    03.10.2011, 17:19

    Неплохой получился ликбез! Много нового узнал!

  115. boomrest
    05.10.2011, 09:49

    Классная статья. Теперь хоть представление имею об Ajax. Плохо только, что страницы на Ajax поисковики не понимают пока. Или понимают?

  116. Boris
    05.10.2011, 17:32

    Никак не осилю эту технологию! Но теперь все начало проясняться!

  117. Вова
    05.10.2011, 22:55

    Супер.Так диржать.

  118. Frost
    06.10.2011, 15:58

    Отличная статья, столько нового узнал!

  119. Anton
    06.10.2011, 17:08

    Прям не пост, а настоящая лекция! Очень понравилось!

  120. Juriy
    06.10.2011, 18:06

    Очень подробная статься, немного стало все прояснятся!

  121. Alexandr
    07.10.2011, 12:38

    Отличный материал и очень доступно изложено!

  122. Stas
    07.10.2011, 16:21

    Интересная вышла статья, очень познавательная!

  123. Gucci bags on sale
    09.10.2011, 08:57

    #

    Библиотека контролов придаёт HTML-конструкциям внешний вид и функциональность соответствующего элемента управления.

    #

    При этом HTML-код элемента не меняется, а на него просто навешивая нужные стили и обработчики событий.

  124. Aleksej
    10.10.2011, 13:34

    Очень подробный урок, спасибо!

  125. Виталик
    12.10.2011, 12:39

    Аякс это классная технология только вот изучить ее не зная азов программирования будет очень трудно!!!

  126. Vitalij
    12.10.2011, 13:12

    Очень подробный урок! Побольше бы таких!

  127. Viktor
    12.10.2011, 16:59

    Отличный материал, очень доступно описанный!

  128. Alexej
    13.10.2011, 11:42

    У меня вот освоить Ajax все времени не хватает, основные принцыпы только знаю!

  129. Sergey
    13.10.2011, 17:42

    Очень много узнал об Ajax из этой статьи! Довольно познавательно!

  130. Ринат
    13.10.2011, 17:47

    Ajax супер, все отлично описано!

  131. Саша
    15.10.2011, 18:55

    Много узнал,спасибо за такую статью

  132. Артем Лоик
    17.10.2011, 00:38

    Статья полезная для новичков, почерпнуть знаний можно трошки

  133. Artur
    17.10.2011, 13:27

    C Аяксом все никак не разберусь - все руки не доходят!

  134. Равиль Г.Сафин
    17.10.2011, 17:13

    День добрый!

    Имеется идея часов "Jikhan" - "Global".

    Разработка для муниципалитетов имеет диаметр в 27 метров.

    Часы одновременно способны показывать реальное время и реальное событие с любой точки земли, откуда смогут исходить информации на электронных носителях.

    Макет данных часов (в простой механической разработке обкатывался в течении нескольких лет.

  135. Stas
    18.10.2011, 13:29

    Отличная статья, очень много почерпнул об Аяксе!

  136. Longchamp outlet
    19.10.2011, 06:24

    Wow, that’s an incredibly nice read!

    Отличная статья

  137. valerij
    19.10.2011, 14:24

    Очень интересная статья! Подробно и доступно все описанно!

  138. vyachestav
    20.10.2011, 12:37

    Очень интересно было почитать, хоть с Аяксом и не работаю!

  139. Tory Burch Outlet
    21.10.2011, 11:03

    Много узнал,спасибо за такую статью

  140. Pavel
    24.10.2011, 16:14

    Хороший материал, все доступно и легко!

  141. debt management
    24.10.2011, 20:39

    Спасибо за такую ​​интересную статью здесь. Я искал что-то подобное в течение достаточно долгого времени, и, наконец, я нашел его здесь.

  142. how to make money online
    24.10.2011, 20:40

    Увлекательный пост. Я думал на эту тему, так что спасибо за разделение этого с нами! Это мой первый визит на ваш сайт.

  143. how to fight
    24.10.2011, 20:42

    Это действительно полезно. Я хотел бы попросить, если все будет правильно, если я заявляю, некоторые, что на мой личный блог. Конечно, я бы компенсировать вам, и ссылку здесь.

  144. diets that work
    25.10.2011, 21:06

    Тема замечательная. Я на самом деле никогда не думаю я, возможно, отличное чтение к этому времени, пока не найду этот сайт. Я благодарен за информацию. Спасибо, что вы так любезно поделились информацией с нами.

  145. Vadim
    26.10.2011, 12:53

    А я Аякс не изучал, но все-равно было интересно!

  146. revitol reviews
    26.10.2011, 19:28

    Здравствуйте, я люблю читать через вашу почту, я хотел оставить комментарий мало, чтобы поддержать вас и желаем вам хорошего продолжения. Желаю вам удачи во всех ваших усилий.

  147. market samurai download
    26.10.2011, 19:33

    большой вдохновляющей статье. Я довольно много довольны вашей хорошей работы. Вы ставите действительно полезной информации. Ждем вас в следующем посте.

  148. Juriy
    27.10.2011, 16:04

    Интересная информация, хоть я и далек от програмщины!

  149. fat burning furnace review
    27.10.2011, 20:52

    Ценная информация и отличный дизайн у тебя здесь! Я хотел бы поблагодарить Вас за обмениваться мнениями и времени на то, что вы пост!

  150. debt solutions
    27.10.2011, 20:55

    Спасибо за это читать мат. Ну, это мой первый визит на ваш сайт! Но я восхищаюсь драгоценное время и усилия, которые вы вложили в него, особенно в интересных статей вы разделяете здесь!

  151. Moncler Doudoune
    29.10.2011, 10:17

    ателен для исполнения!

  152. Moncler Doudoune
    29.10.2011, 10:17

    ателен для исполнения!

  153. Mihail
    31.10.2011, 19:19

    Я вот с аяксом никак не разберусь, но после этой статьи все стало проясняться!

  154. Cheap Soccer Jerseys
    01.11.2011, 14:40

    #

    Смешивание бизнес-логики и пользовательского интерфейса;

    #

    Сложно реализовать несколько пользовательских интерфейсов;

    #

    Сторонни программы не могут обращаться к серверу (если не написан специальный api);

    #

    Большая часть нагрузки по обработке интерфейса ложится на сервер.

  155. artem
    01.11.2011, 19:03

    Прекрасный материал, очень подробно, легко и доступно!

  156. Алексей
    02.11.2011, 01:16

    Спасио за статью, узнал много нового, буду работать над сайтом.

  157. maxim
    02.11.2011, 17:14

    Отличный материал, много для себя почерпнул, теперь буду использовать!

  158. Ralph Lauren outlet
    03.11.2011, 09:04

    #.Net работают поверх .Net Framework, а протокол HTTP работает поверх TCP/IP.

    Система «браузер — web-сервер» действительно имеет клиент-серверную архитектуру: web-сервер принимает и обрабатывает запросы, а браузер визуализирует результат.

    Однако, здесь мы говорим не о системе «браузер — web-сервер», а о работающих поверх неё web-приложениях.

  159. Радик
    08.11.2011, 09:29

    Подписался на обновление. Буду следить за вашими новостями.

  160. roman
    09.11.2011, 18:31

    Отличный урок, начал кое-что понимать об Аяксе!

  161. Игорь
    10.11.2011, 13:46

    Очень познавательная информация. Многое из написанного не знал.Спасибо за полезную статью.

  162. Vadim
    10.11.2011, 18:16

    Хорошая статья, много для себя узнал! Хоть я и не программирую, все-равно было интересно!

  163. Juicy Couture Outlet
    11.11.2011, 04:42

    Вторая часть – более занудная будет содержать много технических деталей и выйдет в следующий раз.

  164. Eugeny
    11.11.2011, 14:57

    Отличная статья, очень много из нее узнал об Ajax

  165. Ruslan
    16.11.2011, 15:37

    Очень доступно и просто написана статья! Было очень интересно почитать!

  166. denny
    17.11.2011, 15:13

    <a href="http://holo-mf.ru" > Сайтик </a> <a href="http://yragent.ru/" >сделан </a> <a href="http://micro-form.ru"> очень </a> <a href="http://microform.su" >профессионально, </a> <a href="http://holomaster.ru" > и легко им пользоватся.</a> <a href="http://xn--h1aeecjamc8a.xn--p1ai" > И придратся не к чему, </a> <a href="http://микроформ.рф" > а я так люблю покритиковать... </a>

  167. Andrej
    17.11.2011, 17:27

    Отличный урок, теперь стал лучше понимать эту технологию!

  168. Ruslan
    18.11.2011, 18:31

    Полезная инфа, очень доступно изложена!

  169. Gucci handbags on sale
    22.11.2011, 08:28

    1.

    Бизнес-логика не смешивается с пользовательским интерфейсом.

    2.

    Можно реализовать несколько клиентов с разными пользовательскими интерфейсами: интерфейс командной строки, оконный Windows-интерфейс, Flash, web-интерфейс, мобильный интерфейс и т.д.

    3.

    Клиентский компьютер не требователен к ресурсам;

    4.

    И т.д.

  170. keyran
    25.11.2011, 00:24

    Полезнинько :)

    А то чет мне С++ поднадоел как-то :(

  171. find cell phone
    25.11.2011, 18:50

    А почему в блог перестал писать-то интересные статкйки вроде получались...

  172. longchamp le pliage
    26.11.2011, 09:58

    При этом HTML-код элемента не меняется, а на него просто навешивая нужные стили и обработчики событий.

  173. track cell
    26.11.2011, 19:35

    По этому пока не понятна ваша рекомендация использовать обе разметки.

  174. znoy
    28.11.2011, 01:09

    да кстати, где еще статейки? интереснож

  175. seo company
    28.11.2011, 10:33

    По этому пока не понятна ваша рекомендация использовать обе разметки.

  176. seo company
    28.11.2011, 10:37

    По этому пока не понятна ваша рекомендация использовать обе разметки.

  177. car runs on water
    28.11.2011, 15:00

    А почему в блог перестал писать-то интересные статкйки вроде получались...

  178. seo vancouver
    29.11.2011, 20:13

    Речь идёт о клиент-серверных приложениях с конечным пользователем. В клиент-серверных приложениях вроде «клиент — сервер базы данных», пользовательский интерфейс, разумеется, отсутствует.

  179. Александр
    30.11.2011, 14:33

    Обычный Ajax - это большая нагрузка на сервер, а тут вроде все ОК, интересная идея :)

  180. louis vuitton
    01.12.2011, 12:46

    По этому пока не понятна ваша рекомендация использовать обе разметки.

  181. coach factory outlet
    01.12.2011, 12:47

    Я думаю, что до тех пор, пока нет полной самостоятельности машин, и о чувствах их идти речь не может. Все будет лишь после полный автоматизации, но тогда, как уже говорилось, будет новая жизнь

  182. christian louboutin
    01.12.2011, 12:48

    По этому пока не понятна ваша рекомендация использовать обе разметки.

  183. coach outlet
    01.12.2011, 12:48

    Я думаю, что до тех пор, пока нет полной самостоятельности машин, и о чувствах их идти речь не может. Все будет лишь после полный автоматизации, но тогда, как уже говорилось, будет новая жизнь

  184. denis
    01.12.2011, 19:20

    Классная статья, очень много нового узнал! Спасибо!

  185. Alexej
    02.12.2011, 19:18

    Очень полезная статья! Я много из нее почерпнул об аяксе!

  186. louis vuitton outlet
    03.12.2011, 04:59

    Я думаю, что до тех пор, пока нет полной самостоятельности машин, и о чувствах их идти речь не может. Все будет лишь после полный автоматизации, но тогда, как уже говорилось, будет новая жизнь

  187. coach outlet online
    03.12.2011, 05:00

    По этому пока не понятна ваша рекомендация использовать обе разметки.

  188. coach outlet
    03.12.2011, 05:01

    как мне кажется, толчок в развитии веб-технологий не помешал бы

  189. Dmitry
    07.12.2011, 15:24

    Отличный материальчик, очень познавательная!

  190. Ligue-1
    07.12.2011, 23:21

    О как бы пригодилось, спасибки!

  191. Denis
    09.12.2011, 15:57

    Отличная статья, столько и не знал об Аяксе!!!

  192. Евгений
    10.12.2011, 19:12

    спасибо за крутую статью

  193. Konstantin
    13.12.2011, 18:20

    Классная статья, очень долго ее изучал, но зато много нового узнал!

  194. Igor
    14.12.2011, 17:59

    Полезная статейка, много нашел интересного для себя! Буду дальше осваивать Аякс!

  195. Artur
    15.12.2011, 18:30

    Отличная статья, очень подробно, просто и доходчиво все описано!

  196. Evgenij
    16.12.2011, 18:37

    Отличный урок, очень познавательный!

  197. Artem
    20.12.2011, 19:03

    Очень подробно все расписано! Много чего узнал!

  198. Timberland Boots
    21.12.2011, 07:58

    Тоже самое происходит с электронной почтой, хотя социальные сети уже начинают сильно конкурировать.

  199. vibram five finger
    23.12.2011, 17:29

    таких, как использование серверного JavaScript на платформе Mozilla Rhino, прототипно-ориентированная ORM и поддержка SPARQL — языка запросов к Semantic Web

  200. maksim
    23.12.2011, 19:05

    Хороший материал, все очень понятно расписанно!

  201. Блогер обо всём
    25.12.2011, 14:39

    уже совсем запутался, сколько этих языков программирования новых появляется...

  202. Stas
    26.12.2011, 18:55

    Отличный материал, очень познавательный, для себя нашел очень много нового!

  203. Valerij
    28.12.2011, 14:12

    Раньше очень мало знал про аякс, а теперь нашел в статье очень много полезного!

  204. Resume help
    29.12.2011, 09:53

    Раньше очень мало знал про аякс, а теперь нашел в статье очень много полезного!

  205. Marc Jacobs outlet online
    31.12.2011, 11:54

    ьше очень мало знThis website has a lot of good quality stuff,By the way I am going to add this web publication to my favorites.

  206. Помощник
    07.01.2012, 14:07

    В настоящий момент мир вступает в эпоху расцвета богатых web-приложений.

    Программы, работающие через Веб, все больше вытесняют традиционные десктопные приложения. Gmail, Google Map, online-офис, даже web-операционные системы… Список можете продолжить сами.

  207. Интернет магазин косметики
    09.01.2012, 22:34

    Parfumer

  208. mmosoft
    11.01.2012, 13:59

    Новости Lineage 2, Aion, WoW, Tera на http://mmosoft.ru

  209. Longchamp Outlet
    13.01.2012, 10:37

    зыков программирован

  210. Valeryj
    14.01.2012, 13:33

    никак Аякс изучить не могу! А эта статейка помогла мне многое понять!

  211. socpiter
    15.01.2012, 00:50

    Уже давно интересуюсь Ajax-ом но никогда его неиспользую так как постоянно находжу компромисное решение при написании какой то странички. А статейка в самый раз, надо сохранить, пригодится.

  212. SANNY
    15.01.2012, 02:13

    Спасибо большое

  213. Victor
    16.01.2012, 18:55

    Очень полезная статейка, нашел здесь много интересного для себя!

  214. Volodya
    17.01.2012, 18:46

    Не очень хорошо знаю Ajax, но эта статейка позволила заполнить некоторые пробелы!

  215. sportcas1
    17.01.2012, 19:16

    статья действительно хорошая.

    <a href="http://s-boutique.com.ua/detskoe.html?product_type=2875">детская обувь киев</a>

  216. sportcas1
    17.01.2012, 19:16
  217. Hixon
    18.01.2012, 13:19

    Информативненько. Давно уже собираюсь освоить аякс, только это сложновато для меня пока что. Проще поручить исполнителю и не вникать во все тонкости, нельзя же уметь всего.

  218. Vitalij
    18.01.2012, 19:21

    Полезная статья, теперь немного больше знаю об Аяксе!

  219. Roman
    19.01.2012, 18:50

    Очень полезная информация, нигде такого полезного материала об Аяксе не встречал!

  220. Denis
    20.01.2012, 18:20

    Отличный материал, не знал многого об Аяксе!

  221. Ruslan
    20.01.2012, 19:02

    Очень классно написанна статья, все понятно, читать легко!

  222. Stas
    21.01.2012, 14:50

    Отличный материальчик! Много нового узнал!

  223. woodworking plans
    23.01.2012, 11:24

    Например, в Wiki-разметке для задания горизонтальной линии используют та конструкция внешне напоминает линию; для задания списка перед каждым пунктом ставят *, т.к. она внешне напоминает маркер списка.

  224. Aleksej
    23.01.2012, 18:47

    Аякс дело нужное однозначно. По этому материалу может и я с ним смогу наконец-то разобраться по-нормальному.

  225. Juriy
    25.01.2012, 15:33

    Отличная статья! Помогла мне многое узнать об этой отличной технологии Аякс!

  226. Паша
    26.01.2012, 15:01

    Хороший материал, начал лучше понимать аякс!

  227. Denis
    27.01.2012, 15:14

    Никак руки не доходят изучить Аякс! Хотя кое-что теперь понял!

  228. Владимир
    30.01.2012, 20:25
    Это хорошая идея по поводу совершенного AJAX, но все равно предварительно потребуется каким-то образом иметь у пользователя все необходимые скрипты и непосредственно странички.
    Чтож, придется просить пользователей присылать их по емейлу :)
  229. discount monster beats
    31.01.2012, 06:48

    Раз It’s hard to sort the good from the bad sometimes, but I think you’ve nailed it. You write very well which is amazing

  230. Rustan
    31.01.2012, 14:54

    Отличный урок! Теперь немного знаю об Аяксе!

  231. Dmitrij
    31.01.2012, 18:09

    Всегда пытался освоить технологию Аякс! Теперь знаю ее намного лучше!

  232. федор
    02.02.2012, 10:17

    Логично

  233. Winexcel
    03.02.2012, 06:41

    тема неплохая =) у неё есть будушее это факт!побольше бы таких тем

Добавить комментарий

Имя:
E-mail (не публикется):
Веб-сайт (ссылки не «глушатся» nofollow):
Текст:
Вы можете использовать BBCode:
[b]жирность[/b]
[i]курсив[/i]
[u]подчеркивание[/u]
[s]перечеркивание[/s]
[url]http://www.example.com[/url]
[url=http://www.example.com]Текст ссылки[/url]
[quote]Цитата[/quote]
[code]
код на
  языке
программирования
[/code]
[list]
* Список
* Список
* Список
[/list]

Статьи

About

Подписка

Ждите...

Valid XHTML 1.0 Strict © Алик Кириллович, 2008—2010