Файл: Особенности алгоритмизации при разработке WEB-приложений (Подходы к построению Web-приложений).pdf
Добавлен: 31.03.2023
Просмотров: 229
Скачиваний: 1
На стороне клиента используется:
Для реализации GUI
HTML, XHTML
CSS
Для формирования запросов, создания интерактивного и независимого от браузера интерфейса:
ActiveX
Adobe Flash, Adobe Flex
Java
JavaScript
Silverlight
2.1. Примеры
Наиболее известные примеры веб-приложений: веб-почта
(http://mail.ru), интернет-магазины (http://amazon.com), онлайно-
вые аукционы (http://ebay.com). Однако область применения веб-
приложений гораздо шире, чем электронный бизнес, они используются
во многих научных и коммерческих областях.
2.2. Организация
Хотя возможны различные вариации, чаще всего используется трехуров-
невая архитектура для построения веб-приложений: веб-браузер, какая-
нибудь технология предоставления динамического веб-контента и база
данных. Веб-браузер посылает запросы среднему уровню, который об
служивает их, производя запросы к базе данных, и представляя резуль-
таты в пользовательском интерфейсе.
Например, рассмотрим самую популярную на сегодняшний день платформу для веб-приложений, т. н. LAMP — Linux, Apache, MySQL, PHP.
Здесь роль среднего уровня играет веб-сервер Apache с установленным
на нем модулем поддержки скриптового языка программирования PHP.
А в качестве базы данных выступает MySQL.
2.3. Достоинства и недостатки
Достоинства:
• независимость от клиентской, а часто и серверной платформы;
• нетребовательность к ресурсам клиента (используется т.н. тонкий
клиент — браузер);
• не требует установки на клиентский компьютер какого-либо про-
граммного обеспечения кроме браузера;
• легкость обновления версий веб-приложения, т.к. оно обновляется
только один раз — на сервере;
• «встроенные» сетевые возможности (возможность работать с
несколькими клиентами одновременно);
• сохраняются все данные при переходе клиента с машины на машину.
Недостатки и способы их обхода:
• низкое время реакции — ориентация на клиентские технологии,
типа JavaScript, DOM, Flash, XUL;
• протокол HTTP не хранит состояния — механизм cookies, сессии;
• малая защищенность — защищенные соединения HTTPS, автори-
зация встроенная в HTTP или на основе сессий;
• неразвитость языка HTML в смысле форм — разработка стандарта
XForms, Flash, Java applets.
3. Современное состояние и перспективы
Сегодня веб-приложения набирают популярность. Самыми посещаемыми сайтами становятся не чисто информационные, гипертекстовые сайты, а те, которые предоставляют какой-либо сервис, как-либо взаимодействуют с пользователем. Но даже и обычные информационные сайты часто используют системы управления контентом для удобства управления информацией, так что и их тоже можно причислить к веб-приложениям.
Некоторые уже ставят веб в один ряд с Windows, Linux и
проч., в качестве новой платформы для выполнения приложений
(http://www.joelonsoftware.com/articles/APIWar.html).
Развитие веб-технологий идет полным ходом. В данный момент наиболее интересными и перспективными технологиями представляются:
• XForms — новый стандарт для описания интерфейсов на XML, учитывающий недостатки форм в HTML. Он добавляет к стандартным
возможностям HTML-форм проверку правильности заполнения, об-
мен данными в формате XML и использование стандартных XML-
технологий, независимость от платформы.
• XMLHttpRequest дает возможность послать на сервер какие-либо
данные без полной перезагрузки страницы.
• XUL — еще один стандарт для описания интерфейсов, который
используется в Mozilla и других, созданных на его основе брау-
зерах, благодаря чему получил сейчас большое распространение в
качестве технологии для создания т.н. «rich» веб-приложений, т.е.
обладающих большим набором возможностей на стороне клиента,
чем традиционные веб-приложения.
Среди интересных серверных технологий можно выделить т.н. серверы веб-приложений. Они включают в себя функциональность обычного веб-сервера, но при этом более ориентированы на выполнение приложений, а не раздачу статических страниц. Это выражается в наличии различных кэшей для ускорения приложений, удобного интерфейса администрирования и поддержке различных технологий разработки приложений.
4. Построение веб-приложений
В этой работе основное внимание будет уделено разработке веб-
приложений. В качестве платформы для разработки выбрана Java, т.к.
эта технология на данный момент является наиболее развитой, стандар-
тизированной, применяемой на уровне Enterprise и классической (т.е. из
нее в основном идут заимствования в других платформах). Она обладает
следующими преимуществами:
• Большое сообщество опытных пользователей, программистов, ад-
министраторов. Не возникает проблем с поиском интересующей
информации.
• Стандартизированность и постоянное развитие через Java
Community Process — стандартный процесс, позволяющий заин-
тересованным сторонам участвовать в разработке будущих версий
платформы.
• Большое количество и разнообразие разработанных библиотек.
• Переносимость между различными платформами.
4.1. Технологии построения Web-приложений
В данном разделе будут рассмотрены технологии среднего уровня для
построения веб-приложений. Старейшей из них является CGI (Common
Gateway Interface) — это спецификация, которая задает способы взаимо-
действия обычных приложений, выполняющихся на серверной машине,
с браузером пользователя по протоколу HTTP. В частности, код для
отображения на странице и HTTP-заголовки передаются программой в
стандартном потоке вывода, а параметры в программу передаются че-
рез переменные окружения. CGI позволяет писать сервеные скрипты на
каком угодно языке, лишь бы он поддерживался программным обеспече-
нием, установленным на сервере. Наиболее часто используемыми такими языками были Perl, C, bash (язык командной строки Unix).
Основным недостатком такого подхода была неустойчивость под высокими нагрузками на сервер, связанная с тем, что каждый запущенный скрипт создавал новый процесс на сервере (как известно операции с процессами довольно дорогостоящи), кроме того у такого подхода возникали сложности с хранением промежуточных данных между вызовами скриптов или общих для всех скриптов данных (приходится их где-то сохранять, что также связано с дополнительными накладными расходами). Решением всего этого стало встраивание специальных модулей непосредственно в веб-сервер Apache (например, модуль PHP). Теперь промежуточные данные могли храниться в оперативной памяти, новых процессов каждый раз не созывалось, и все скрипты могли иметь общиеразделяемые ресурсы, такие как соединение с базой данных (установка соединения тоже занимает определенное время). Кроме PHP существуют также модули для Perl, Python и других скриптовых языков.
Следующим шагом в развитии платформ для веб-приложений ста-
ли сервера веб-приложений (Apache Tomcat, Zope), ориентированные на
какой-либо один язык программирования. Несмотря на то, что языки
используются скриптовые, довольно медленные, достигается неплохое
увеличение производительности. В первую очередь это происходит из-за
кэширования всего, что только можно в оперативной памяти: програм-
мы не перекомпилируются каждый раз, когда к ним обращаются, суще-
ствует общий пул соединений с базой данных. Кроме того достигается
масштабируемость за счет использования языков с хорошей поддержкой
многопоточности.
4.2. Java технологии
Язык Java изначально позиционировался производителем, как язык для
Интернет. С пользовательскими приложениями у Java не сложилось, но
зато на стороне сервера Java применяется очень широко и имеет большое
количество различных интересных возможностей.
Прежде всего существует несколько конкурирующих серверов веб-
приложений, которые несмотря на различия придерживаются некоторых
стандартов, установленных Sun, а значит большинство приложений без
каких-либо значительных модификаций могут быть перенесены с серве-
ра на сервер.
Кроме того существует несколько разного уровня сложности и с
разными подходами фреймворков для разработки веб-приложений (т.е.
библиотек классов, на основе которых строится веб-приложение). Это
фреймворки для структурирования приложений на основе паттерна
MVC (Struts, Spring), библиотеки для построения шаблонов веб-страниц
(JSTL, Velocity, Java ServerFaces), библиотеки для отображения реляци-
онной таблицы на объекты и обратно (Hibernate).
4.3. Подходы к построению Web-приложений
Подходы к построению веб-приложений развивались эволюционно. Са-
мым простым и вероятно самым первым подходом было писать веб-
приложения точно также, как обычные консольные приложения. Т.е.
вся логика и весь вывод программы находится непосредственно в одном
файле и никак не разделены. Пример:
word = "world";
display("<h1>Title</h1>");
display("hello " + word);
Это было связано с определенными неудобствами. Самое заметное из них заключалось в том, что программа загромождалась огромным ко-
личеством вызовов процедуры вывода текста странички. Поэтому вывод
шаблонных данных и непосредственно программу решено было условно
разделить с помощью специальных синтаксических конструкций (как в
PHP или JSP). Пример:
<% word = "world"; %>
<h1>Title</h1>
hello <% display(word) %>
И как только избавились от самого заметного недостатка исходного
подхода, внимание было обращено на другой, скрывавшийся в его те-
ни, — проблема разделения логики и представления. Для этого в рамках
использования предыдущего подхода налагают еще одно ограничение: в
тексте шаблона должны присутствовать только инструкции, влияющие
на представление информации, а вся логика уходит в отдельные классы,
описывающие модель приложения.
4.3.1. Паттерн MVC
Наиболее подходящим для построения веб-приложений оказался пат-
терн объектно-ориентированного программирования под названием MVC
(Model, View, Controller). Кроме того этот паттерн является рекомендо-
ванным Sun паттерном для разработки интерактивных программ. Он
также используется при построении обычных десктопных приложений.
Суть его в том, что приложение организуется в виде трех различ-
ных модулей: один для модели приложения, включающей представление
данных и логику системы, второй для представления данных и ввода
данных от пользователя и третий для контроллера, который обрабаты-
вает запросы и передает управление различным модулям.
Достоинства такого подхода к проектированию системы заключаются
в следующем. MVC разделяет различные аспекты проектирования (хра-
нение данных, поведение системы, представление и управление), дает
возможность повторного использования кода, централизует управление
выполнением программы и упрощает внесение изменений в систему.
Существуют вариации MVC называемые Model 1 и Model 2, также
известные как Page Centric и Servlet Centric соответственно. Их раз-
личие в том, что в первом код контроллеров содержится в JSP-файлах
(см. рис. 1), а во втором он содержится в сервлетах, которые передают
управление JSP-файлам в конце своего выполнения (см. рис. 2). Досто-
инство последнего способа в том, что он позволяет выбрать показывае-
мую пользователю страницу на основе данных, содержащихся в запросе.
Кроме того он улучшает разделение различных аспектов приложения и
увеличивает уровень абстракции классов.
В Java самым известным фреймворком для реализации паттерна
MVC является Jakarta Struts. В его состав входит готовый конфигуриру-
емый сервлет контроллера и базовые классы, расширяя которые можно
писать обработчики запросов пользователя. С использованием этой биб-