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

Разработка WEB-приложений

Содержание:

Введение

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

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

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

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

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

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

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

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

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

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

1.1 Идеология разработки 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-совместимый формат) — все зависит от потребностей заказчика. Однако наиболее распространенным типом хранилища данных является реляционная или объектно-реляционная база данных.

1.2 Структура 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.

Выбор системы управления базами данных обычно стоит между MySQL и PostgreSQL. Обе эти системы бесплатны, однако анализ показывает, что MySQL более популярна, а также обладает более удобным редактором. Разница по скорости выполнения некоторых операций, например, операций select или insert, можно оценить, как несущественную.

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

ORM (Object-Relational Mapping) - это технология программирования, позволяющая представлять записи в базе данных как объекты в языке программирования и наоборот. Для Java самым распространенным фреймворком, который берет на себя задачи ORM, является Hibernate [3].

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

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

Самыми распространенными аннотациями являются:

  • @Entity показывает, что данный класс является отражением базы данных;
  • @Table позволяет указывать данные о таблице, с которой связан данный класс;
  • @Id показывает, что данное поле является отражением главного ключа в таблице базы данных, которая соответствует данному объекту;
  • @Column позволяет указывать информацию о колонне, с которой связано поле;
  • @ManyToOne обозначает, что данное поле отражает связь "многие к одному";
  • @OneToMany обозначает, что данное поле отражает связь "один ко многим";
  • @ManyToMany обозначает, что данное поле отражает связь "многие ко многим".

Анализ показывает, что фреймворк Hibernate является весьма эффективным при создании Web-приложений.

Java Database Connectivity (JDBC) – является простым фреймворком для работы с базой данных. Он позволяет установить соединение между аппликацией и базой данных и высылать SQL запросы. Реализован в виде пакета java.sql и входит в состав JavaSE.

Соединение с базой данных реализовано в виде класса с интерфейсом java.sql.Connection. После этого можно создавать объекты типа Statement, которые содержат в себе SQL запрос. Существует три вида таких объектов:

  • Statement для запросов общего назначения;
  • PreparedStatement для запросов с параметрами;
  • CallableStatement для вызова хранимых процедур.

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

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

Если взаимодействие с приложением будет происходить через браузер, то интерфейс пользователя реализуется с использованием стандартных технологий HTML, CSS и JavaScript. Эти технологии поддерживаются всеми современными браузерами, поэтому приложением можно будет пользоваться на любом компьютере с доступом в Интернет.

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

AngularJS – это Javascript фреймворк с открытым исходным кодом, который разрабатывается и поддерживается компанией Google. AngularJS позволяет создавать быстрые одностраничные Web-приложения. Термин "одностраничные" означает, что браузер не перезагружает страницу для того чтобы показать пользователю новую информацию, а вместо этого получает ее с сервера и вставляет в указанное место на странице.

Кроме этого, AngularJS обладает двумя другими важными компонентами:

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

- Dependency Injection позволяет устанавливать связи между контроллерами и уменьшить количество повторяющегося кода.

Работа AngularJS основана на модели Model-View-Controller (рисунок 5).

Пользователь взаимодействует в View (Вид), изменяет данные в Model (Модели) через Data Binding или взывает функции из Controller (Контроллера). Контроллер работает с данными в Модели, а также взаимодействует с сервером. AngularJS обнаруживает изменения в Модели и изменяет Вид.

Принцип работы AngularJS заключается в том, что программист размещает в HTML коде специальные директивы AngularJS, которые определенным образом воздействуют на то, что увидит пользователь. Самые важные директивы AngularJS:

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

  • ng-app обозначает, что содержимое этого html элемента управляется с помощью приложения, написанного в AngularJS;
  • ng-controller определяет управляющий контроллер для текущего тэга;
  • ng-bind устанавливает одностороннюю связь с параметром;
  • ng-model устанавливает двустороннюю связь с параметром (two way data binding);
  • ng-repeat повторяет тэг указанное количество раз (полезен при создании таблиц данных);
  • ng-click вызывает определенное действие по нажатию на объект.

Twitter Bootstrap является фреймворком для визуального оформления Web-интерфейсов. Включает в себя готовые компоненты: кнопки, таблицы, формы, навигация и т.д. Все компоненты совместимы с большинством современных браузеров (Firefox, Chrome, Internet Explorer, Safari, Opera и т.д.). Twitter Bootstrap позволяет быстро создавать красивые интерфейсы, которые будут динамически меняться в зависимости от размера экрана устройства.

AngularUI – это библиотека для AngularJS, позволяющая создавать интерфейсы пользователя. Представляет собой Twitter Bottstrap, переписанный на AngularJS.

Приложение MASS широко использует различные элементы библиотеки: кнопки, таблицы, меню, формы, окна модальные, datapicker и пр.

Библиотека Google Charts, разработанная Google добавляет к AngularJS возможность рисования графиков. К достоинствам данной бесплатной библиотеки можно отнести:

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

В качестве источника информации для построения графика Google Chart использует Javascript объект, который содержит в себе информацию о всех координатах, которые нужно изобразить. Приложение MASS стрит графики на основе данных полученных в форме JSON от стороны сервера.

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

В настоящее время такое сочетание технологий можно назвать стандартом в отрасли разработки Web-приложений.

Заключение

Web-приложения более универсальны и практичны для конечного пользователя. Достаточно будет установить web-приложение на сервер, работающий под любой современной ОС, и можно пользоваться им через интернет на любом мобильном устройстве или компьютере, работающем под управлением Windows, Linux, Mac OS или какой-либо другой ОС. Если приложения сделаны качественно, то они будут работать одинаково хорошо в любом браузере, будь то Mozilla Firefox, Opera, Google Chrome, Internet Explorer или Safari.

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

Любое web-приложение, которое предназначено для манипулирования конфиденциальными данными, имеет следующий механизм защиты:

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

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

Список использованных источников

  1. Гупта А. Java EE7. Основы: Пер. с англ.- М.: Вильямс, 2014. – 336 с.
  2. Шеффер К., Хо К., Харроп Р. Spring 4 для профессионалов: Пер. с англ. - М.: Вильямс, 2015. – 752 с.
  3. Зырянов В. В. Моделирование при транспортном обслуживании мега-событий // Инженерный вестник Дона. — 2016. — № 4.
  4. Зеленцов Л. Б. Информационное обеспечение формирования водного баланса в системе водо-снабжения мегаполиса // Интернет-вестник ВолгГАСУ. 2012. Вып. 1 (20). URL: http://www.vestnik.vgasu.ru.
  5. Что кроется за аббревиатурой ERP? URL: http://www.ecommerce.ru/biz_tech/implementation/man agement/.
  6. Обзор: 10 русских SaaS-систем управления проектами URL: http://projectman.livejournal.com/5123.html.
  7. Облачный Microsoft Project 2013. URL: http://www.microsoftproject.ru/articles.phtml?aid=446.
  8. Bauer С., King G. Hibernate in Action. – Manning Publications Co., 2015.-408 c.
  9. MS Project URL: http://www.microsoftproject.ru/.