Файл: Особенности алгоритмизации при разработке 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. В его состав входит готовый конфигуриру-

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

писать обработчики запросов пользователя. С использованием этой биб-