ТЕРМИНЫ И ОПРЕДЕЛЕНИЯ 3
ВВЕДЕНИЕ 4
1. ВЫБОР СПОСОБА ОРГАНИЗАЦИИ СЕРВИСА 7
1.1 Spring Boot 8
1.2 Spring Roo 10
1.3 Анализ результатов 12
2. ИНСТРУМЕНТЫ РАЗРАБОТКИ И РЕАЛИЗАЦИЯ 15
2.1 Инструменты разработки 15
2.2 Реализация 17
2.2.1 Взаимодействие сервиса с приложением 17
2.2.2 Доступ к данным 18
2.2.3 Функциональность обмена сообщениями 20
2.2.4 Аутентификация и авторизация 23
2.3 Подключение к приложению 25
ЗАКЛЮЧЕНИЕ 29
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 30
ПРИЛОЖЕНИЕ А 31
ПРИЛОЖЕНИЕ Б
Команда ООО «Первая платформа программной инженерии» , занимающаяся разработкой корпоративных веб-приложений, часто сталкивается с требованием обеспечить возможность общения пользователей приложения в режиме реального времени. Данное требование предъявляется не только к системам, ориентированным на общение пользователей и обмен контентом, где функционал чата является центральным, но и к тем продуктам, где данная функция является второстепенной либо служебной (например, переписка со службой технической поддержки).
Разработка серверной части программных продуктов в ООО «Первая платформа программной инженерии» ведется на языке программирования Java с использованием возможностей фреймворка Spring , являющегося на сегодня самым востребованным фреймворком для разработки на Java [5].
В качестве решения для реализации обмена сообщениями между web- клиентом и сервером Spring предоставляет поддержку протокола полнодуплексной связи WebSocket (RFC 6455 ) [2]. Данный протокол
предоставляет возможность непрерывного взаимодействия в двух направлениях, при этом избегая постоянного опроса клиентом серверной стороны и дополнительных накладных расходов, кроме того, он подходит для приложений, в которых сообщения передаются с высокой частотой, а также требующих низкой задержки [1].
Несмотря на то, что библиотека для работы с WebSocket из фреймворка Spring значительно упрощает задачу по реализации функциональности обмена сообщениями, она остается трудоемкой и требовательной к навыкам и знаниям программиста в данной области. Также стоит учесть, что модули приложений, использующих Spring WebSocket, строятся по одному и тому же шаблону, состоят из одних и тех же компонентов и взаимодействуют с другими компонентами по одним и тем же принципам. В связи с этим возникает необходимость разработать сервис, позволяющий быстро добавить к уже готовому приложению либо приложению, находящемуся на стадии разработки, возможность обмена сообщениями. Таким образом, целью данной дипломной работы является разработка сервиса внедрения модуля обмена сообщениями на основе протокола WebSocket в серверное Spring-приложение.
Внедрение модуля обмена сообщениями с помощью сервиса не должно требовать больших трудозатрат от пользователя: подключение и настройка сервиса должны занимать мало времени, а написание программного кода внутри пользовательского приложения для взаимодействия с сервисом необходимо свести к минимуму. Использование сервиса должно быть понятным для пользователя, не имеющего опыта работы с WebSocket, но при этом необходимо сохранить возможность гибкой настройки внедряемого модуля под конкретный проект.
Для достижения цели были поставлены следующие задачи:
• Рассмотреть опыт проектов, предоставляющих решения для упрощения работы с фреймворком Spring.
• Выбрать способ внедрения сервиса в готовое или находящееся на стадии разработки приложение.
• Разработать компоненты, отвечающие за обмен сообщениями.
• Реализовать универсальный способ внедрения изменений в схему пользовательской базы данных.
• Разработать клиентский модуль для использования функциональности чата
В ходе выполнения дипломной работы был реализован фреймворк для автогенерации модуля безопасного обмена сообщениями на основе пользовательской конфигурации внутри Spring-приложения.
Данное приложение:
• внедряется в существующее приложение посредством подключения Maven-артефакта и реализации набора интерфейсов;
• автоматически вносит изменения, необходимые для хранения данных о диалогах, в схему базы данных;
• использует конфигурацию безопасности, настроенную в пользовательском приложении;
• предоставляет API с функциями чата и готовые web-страницы с логикой обработки сообщений для использования чата в браузере.
Таким образом, сервис решает поставленные перед ним задачи и удовлетворяет изначально обозначенным требованиям.
В качестве протокола обмена сообщениями в сервисе используется современная и лучшая для выполнения данной задачи технология WebSocket, а для реализации взаимодействия на сервере выбран модуль spring-websocket из Spring Framework.
Разработанный сервис снижает трудозатраты разработчиков, необходимые для реализации модуля обмена сообщениями в Spring- приложении.
Возможность разбивать пользователей на группы на основе соответствующей конфигурации с целью разграничения доступа к созданию диалогов между пользователями, и возможность создания групповых диалогов представляются на сегодня одними из первых функций, которые необходимо добавить к сервису. Однако данный план по доработке сервиса может быть скорректирован на основе опыта использования сервиса в реальных и тестовых проектах.