Файл: Особенности алгоритмизации при разработке WEB-приложений (Теоретические основы разработки web-приложений)..pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 14.03.2024

Просмотров: 22

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Содержание:

Введение

С каждым годом web-приложения приобретают все большую популярность из-за их универсальности, удобства использования и гибкости. Web-системы имеют преимущество перед обычными desktop-системами, которые работают по технологии клиент-сервер. Главное преимущество web-приложений — это удобство в поддержке и администрировании: отсутствие необходимости установки приложения на каждое рабочее место, удобство при обновлении версий web-приложения, возможность настройки интерфейса для каждого пользователя.

В последнее время список сервисов и ресурсов значительно увеличился. Интернет превратился из однообразных статических страничек в мощный инструмент интерактивности и общения с конечными пользователями. Многие компании переходят с обычных приложений на web-приложения, именно потому, что видят в них будущее. Широкое распространение использования web-интерфейса нашло при создании информационных технологий в различных отраслях народного хозяйства.

Установка web-приложений дешевле и намного проще. Благодаря использованию именно web-приложений предприятия и компании могут снизить затраты на содержание ИТ-отделов, которые отвечают за установку программного обеспечения и его сопровождение.

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

Предмет исследования – современные средства разработки WEB-приложений.

Целью исследования в курсовой работе является выявление особенностей алгоритмизации при разработке WEB-приложений.

Для достижения поставленных целей сформулированы следующие задачи:

  1. изучить теоретические основы разработки WEB-приложений;
  2. охарактеризовать современные средства разработки WEB-приложений.

Методологической основой курсовой работы являются учебная и методическая литература, статьи в периодической печати и Интернет – ресурсы.

ГЛАВА 1 Теоретические основы разработки web-приложений

Идеология разработки web-приложений

В последние годы Internet прочно вошел в повседневную жизнь множества людей. С развитием сетевых технологий открываются все новые и новые стороны использования World Wide Web. Одной из этих сторон является появление web-приложений, то есть приложений, имеющих web-интерфейс. По функциональности такие приложения зачастую не уступают приложениям, имеющим лишь локальный интерфейс, а возможность доступа к ним из любой точки мира способствует их быстрому распространению.


Сегодня разработка web-приложений представляет собой во многом отлаженный процесс, основанный на объектно-ориентированном подходе (далее ООП), включающий в себя несколько этапов, таких как проектирование, написание кода, тестирование, отладку и поддержку. В основе разработки лежит проработанная теория, которая в том числе включает в себя описания множества так называемых шаблонов проектирования, то есть описания объектов, исполняющих определенные роли, которые являются общими для любых приложений, построенных согласно парадигме ООП.

В последние годы развитие платформы Java 2 Enterprise Edition (Java EE), разработанной компанией Sun Microsystems, происходит очень быстрыми темпами, в то время как популярность языка Java и связанных с ним технологий непрерывно растет. Одновременно с ростом популярности платформы JAVA EE растет спрос на полнофункциональные распределенные web-приложения, которые могли бы полностью заменить клиентские аналоги, не ограничивая при этом пользователя и не создавая угроз безопасности и утечек информации.

Согласно идеологии разработки приложений на платформе JAVA EE [2] приложение имеет трехслойную структуру (рис. 1), а также работает внутри некоторого контейнера и использует какое-либо хранилище данных.

Рис. 1. Многослойная структура web-приложения

На сегодняшний день тенденции разработки таковы, что приложения обычно не являются строго ориентированными под определенный тип контейнера или хранилища данных. В качестве хранилища могут выступать различные типы СУБД (реляционная или иерархическая модели, например LDAP-репозиторий), а также различные типы файлов (например, некоторый XML-совместимый формат) — все зависит от потребностей заказчика. Однако наиболее распространенным типом хранилища данных является реляционная или объектно-реляционная база данных.

Структура web-приложения

Рассмотрим подробнее структуру web-приложения. Слой хранимых данных обеспечивает непосредственный доступ к хранилищу и инкапсулирует все операции, необходимые для работы с хранимыми данными. К ним относятся операции жизненного цикла объекта, так называемые CRUD-операции (Create/Retrieve/Update/Delete — операции создания/получения/обновления/удаления), операции поиска объекта или набора объектов, удовлетворяющих некоторому критерию, и различного рода вспомогательные операции, используемые на более высоких слоях, но реализация которых зависит от типа или даже от конкретного используемого хранилища данных. Все операции на этом слое управляются менеджером транзакций, что обеспечивает целостность данных и стабильность работы приложения. Таким образом, слой хранимых данных обеспечивает абстракцию от хранилища данных, что позволяет разрабатывать приложение, которое не привязано к тому или иному типу хранилища. Во многих случаях слой хранимых данных вообще может поставляться отдельным разработчиком и быть общим для различных приложений, имеющих схожую структуру хранимых данных.


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

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

Подобная многослойная структура приложения обеспечивает абстракцию отдельных идеологически независимых частей приложения друг от друга. Кроме того, рассмотрение приложения с точки зрения многослойной модели удобно при проведении комплексного тестирования. В первую очередь, определив, на каком из слоев были произведены изменения, можно определить, какие тесты необходимо проводить. Например, при внесении изменений в слой представления нет смысла проводить тестирование слоя бизнес-логики и слоя хранимых данных, поскольку зависимость слоев является односторонней и направленной снизу вверх (от слоя хранимых данных к слою представления). Но при изменении модели хранимых данных или методов доступа к ним необходимо проводить полный комплекс тестирования, включая тестирование слоя бизнес-логики и слоя представления, поскольку изменения в слое хранимых данных затрагивают все части приложения.

Описанная структура может быть использована при проектировании приложения на любой платформе (например, .Net). Платформа JAVA EE обладает некоторыми особенностями реализации логики каждого из слоев.

Операции управления данными реализуются с помощью компонентов Enterprise Java Beans, так называемых корпоративных бинов, которые инкапсулируют логику доступа к хранимым данным и предоставляют набор методов для использования в операциях бизнесслоя. Использование компонентов EJB до недавнего времени было признано нецелесообразным в силу того, что корпоративные бины увеличивают сложность приложения, а также, несмотря на первоначальные идеи корпорации Sun, возможность их повторного использования чрезвычайно низка (ситуация изменилась в лучшую сторону с началом работы над спецификацией EJB 3.0). Поэтому в некрупных приложениях работа с данными возлагалась на объекты DAO (Data Access Object - Объект доступа к данным), которые выполняли те же функции, что и корпоративные бины, но при этом не несли отрицательного воздействия на переносимость и не усложняли приложение в целом.


Бизнеслогика web-приложения, согласно спецификации JAVA EE, реализуется с помощью сервлетов (servlet), то есть специальных классов, выполняющихся на стороне сервера и обрабатывающих запросы пользователя (request), формируя отклики (response). В помощь сервлетам в спецификации были представлены фильтры (filter), обрабатывающие запрос перед подачей его сервлету, и разного рода слушатели (listener), призванные реализовать событийную модель внутри web-приложения.

Логика представления реализуется с помощью JSP-страниц, встроенного языка JSP-тегов, языка выражений (expression language), введенного в спецификации JP 2.0, и вставок Java-кода внутри страниц.

Таков краткий обзор идеологии построения web-приложений на базе платформы JAVA EE.

ГЛАВА 2. Современные средства разработки Web-приложений

2.1. Анализ применения Java EE как средства разработки Web-приложений

В настоящее время для разработки Web-приложений широко используется платформа Java EE [1]. Это объясняется тем, что Java является одним из наиболее популярных языков программирования, для которого написаны десятки бесплатных и очень удобных фреймворков, облегчающих процесс программирования для разработчика Web-приложений и серверных приложений (рисунок 2).

Рисунок 2 - Рейтинг популярности web фреймворков Java

Одним из основных преимуществ языка Java является его универсальность. Компилятор преобразует программу в специальный байт-код, который потом запускается JVM (Java Virtual Machine). Благодаря такому подходу приложение, написанное на Java можно запустить практически в системе, на компьютере с любой архитектурой.

2.2. Особенности наиболее популярных фреймворков для Java

Spring является одним из самых популярных фреймворков для Java. С его помощью многие сложные проблемы с которыми программисты сталкивались каждый день, теперь решаются быстро и просто [2].

Основные достоинства Spring:

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

В качестве основной идеи Spring выступает контейнер Inversion of Control (рисунок 3).

Класс приложения


Хранилище обновлений

Обновление метаданных

Готовое приложение

Внесение изменений

Рисунок 3 - Схема работы Spring Framework

Все приложение в момент запуска программы оказывается помещено в этот контейнер, который управляет зависимостями между объектами и жизненными циклами этих объектов.

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

Из самых популярных элементов Spring можно выделить:

  • Spring MVC;
  • Spring Security;
  • Spring AOP;
  • Spring Transactions.

Сравнительный анализ показывает, что наиболее эффективными для разработки корпоративных Web-приложений являются элементы Spring MVC и Spring Security.

Фреймворк Spring MVC разработан для облегчения создания Web-приложений, построенных по модели MVC (Model-View-Controller), и в последнее время уверенно занимает первое место среди самых популярных фреймворков для Java (на основе данных ежегодного отчета Developer Productivity Report).

Модель MVC (рисунок 4) предлагает делить приложение на три части, при этом модификация одной части не должна оказывать влияния на остальные. Такой подход значительно облегчает разработку большого приложения, потому что одна большая задача разделяется на три меньшие.

Controller

Model

View

обновление

оповещение

обновление

действие пользователя

Рисунок 4 – Схематическая модель MVC

Модель MVC имеет три базовых компонента:

- компонент Model отвечает за данные приложения. Обеспечивает извлечение данных и оперирование ими, но не обеспечивает представление этих данных в удобном для пользователя виде.

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

- компонент Controller отвечает за связь между компонентами Model и View. Содержит в себе всю бизнес логику приложения.

Фреймворк Spring MVC построен вокруг класса DispatcherServlet, который определяет какому контроллеру отправить запрос, полученный извне. С помощью аннотаций @Controller и @RequestMapping можно легко создать класс, который будет принимать запросы по определенному адресу и обрабатывать их.

Фреймворк Spring Security служит для создания систем авторизации и аутентификации в корпоративных приложениях, а также дает другие дополнительные возможности для защиты приложений.

Ключевые объекты Spring Security:

  • SecurityContextHolder содержит всю информацию о текущем контексте безопасности приложения, в том числе подробную информацию о пользователе, работающем в настоящее время с приложением;
  • SecurityContext содержит объект Authentication, а также информацию о запросе пользователя;
  • Authentication - пользователь с точки зрения Spring Security;
  • GrantedAuthority определяет, какие разрешения выданы пользователю, что он может или не может делать в приложении;
  • UserDetails предоставляет необходимую информацию для построения объекта Authentication из DAO объектов приложения (если используется база данных);
  • UserDetailsService реализует всего один метод loadUserByUsername (String username), который позволяет получить из базы данных информацию для класса UserDetails.