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

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

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

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

Добавлен: 31.03.2023

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

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

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

Фреймворк 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-приложение работает внутри определенного контекста, который состоит из контейнера (сервера приложений), конкретного хра­нилища данных, копии системного переменного окружения и других частей. При тестировании приложения все эти части должны быть соответствующим образом настроены, иначе результат тестирования не будет соответствовать реальному положению вещей. Когда приложение разрабатывается большой группой программистов, некоторые части контекста приложения могут быть еще не реализованы. Кроме того, в общем случае соответствующая настройка контекста занимает длительное время и может исказить результаты тестов тогда, когда проблема кроется не в логике, а в некорректно настроенном контексте.

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