Разработка веб-сервиса для хранения и передачи данных | Статья в журнале «Молодой ученый»

Отправьте статью сегодня! Журнал выйдет 6 июля, печатный экземпляр отправим 10 июля.

Опубликовать статью в журнале

Автор:

Рубрика: Информационные технологии

Опубликовано в Молодой учёный №21 (520) май 2024 г.

Дата публикации: 26.05.2024

Статья просмотрена: 19 раз

Библиографическое описание:

Косюк, А. В. Разработка веб-сервиса для хранения и передачи данных / А. В. Косюк. — Текст : непосредственный // Молодой ученый. — 2024. — № 21 (520). — С. 72-76. — URL: https://moluch.ru/archive/520/114723/ (дата обращения: 28.06.2024).



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

Ключевые слова : веб-сервис, облачное хранилище, схема алгоритма, REST API, JWT, UUID, графический интерфейс.

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

Облачные хранилища отличаются от традиционных методов хранения данных, которые базируются на собственных компьютерах, портативных устройствах или выделенных серверах, тем, что они скрыты от конечного пользователя. Для пользователя его данные находятся и обрабатываются в виртуальном «облаке», представляющем собой масштабный удаленный серверный ресурс. Эти серверы могут физически находиться в различных местах, включая разные континенты.

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

Описание разработки серверной части облачного хранилища

Серверная часть облачного хранилища была реализована с помощью объектно-ориентированного языка программирования Java [1], с использованием фреймворка Spring [2]. Написание кода осуществлялось в интегрированной среде разработки IntelliJ IDEA, которая включает в себя интеграцию с различными инструментами, например, Git, Maven и JUnit.

На рисунке 1 представлена схема базы данных веб-сервиса, в которой определены основные сущности и связи между атрибутами.

Схема базы данных веб-сервиса

Рис. 1. Схема базы данных веб-сервиса

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

Схема алгоритмов облачного хранилища

Рис. 2. Схема алгоритмов облачного хранилища

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

Авторизация в облачном хранилище реализована с использованием Spring Security, обеспечивающего обработку запросов, аутентификацию и управление доступом к ресурсам для защиты приложения от несанкционированного доступа. В основе схемы авторизации лежат JWT (JSON Web Tokens) — компактные токены, представляющие информацию в виде JSON-объекта и состоящие из заголовка (header) с информацией о типе токена и алгоритме шифрования, полезной нагрузки (payload) с данными пользователя и ролями, а также подписи (signature), созданной с использованием секретного ключа. JWT токены позволяют безопасно передавать информацию между клиентом и сервером без необходимости хранения состояния на сервере и защищают от подделки благодаря секретному ключу, известному только серверу [3]. Это обеспечивает надежную и безопасную аутентификацию и авторизацию пользователей в веб-сервисе.

В хранилище пользователь создает иерархию данных, но папки существуют только как записи в базе данных, что позволяет снизить нагрузку на сервер при перемещении каталогов, меняя лишь атрибуты, а не структуру сервера. Файлы на сервере организованы в собственной иерархии папок. При загрузке файла ему присваивается уникальный идентификатор UUID, и на основе первых трех пар символов формируется путь к файлу [4]. UUID становится именем файла, который копируется на жесткий диск по указанному пути, а метаданные сохраняются в базе данных. Этот подход равномерно распределяет файлы и снижает нагрузку на файловую систему, предотвращая ухудшение производительности.

Обмен файлами между пользователями осуществляется через временные ссылки, позволяющие загрузить файл в течение нескольких часов после их создания. Эти ссылки генерируются с использованием токенов JSON Web Tokens (JWT). Токен кодируется в формат Base64 и объединяется с хеш-суммой, разделенной точками. Пользователь, перейдя по ссылке, предоставляет токен серверу, который проверяет его подпись и срок действия, затем возвращает файл по его идентификатору. Преимуществом такого подхода является отсутствие необходимости хранения ссылок в базе данных, однако ссылки не могут быть отозваны до истечения их срока действия или удаления файла.

Также в разработанном веб-сервисе удаленные файлы и папки перемещаются в специальный контейнер под названием «корзина», который служит временным хранилищем для удаленных объектов, позволяя пользователям восстанавливать данные в случае ошибочного удаления. Корзина — это абстракция для удобства пользователей; в архитектуре сервиса не существует отдельной сущности «корзина». При регистрации пользователя создается корневая папка, которая выступает родительской для всех хранящихся данных. Если файл или папка не имеют родительской папки, они считаются удаленными и отображаются в корзине, вместе с их подпапками и файлами. Для просмотра содержимого корзины пользователи могут открыть специальный раздел интерфейса и, при необходимости, восстановить данные, переместив их обратно в основную структуру папок. Этот механизм гарантирует безопасность и возможность восстановления удаленных данных.

Описание разработки клиентской части облачного хранилища

Кроме серверной части также был разработан графический интерфейс, с помощью языков HTML, CSS, JavaScript, с использованием фреймоворка React [5], который представляет собой библиотеку, специализирующуюся на создании пользовательских интерфейсов.

В облачном хранилище реализованы следующие разделы: профиль, файлы, корзина, администрирование. На рис. 3 представлена экранная форма раздела «Файлы», с помощью которой осуществляется взаимодействие пользователя со своими данными.

Экранная форма раздела «Файлы»

Рис. 3. Экранная форма раздела «Файлы»

Заключение

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

Литература:

  1. Изучаем Java / К. Сьерра, Б. Бэйтс. — М.: Эксмо, 2021. 720 c.
  2. Spring в действии / К. Уоллс — М.: ДМК Пресс, 2022. 544 с.
  3. Habr [Электронный ресурс] — Пять простых шагов для понимания JSON Web Tokens (JWT) — URL: https://habr.com/ru/articles/340146/ (Дата обращения 17.05.2024)
  4. Habr [Электронный ресурс] — Как генерируются UUID — URL: https://habr.com/ru/companies/vk/articles/522094/ (Дата обращения 19.05.2024)
  5. Документация по фреймворку React [Электронный ресурс] URL: https://ru.legacy.reactjs.org/ (Дата обращения: 20.05.2024)
Основные термины (генерируются автоматически): облачное хранилище, JWT, UUID, API, JSON, REST, пользователь, серверная часть, баз данных, данные.


Ключевые слова

облачное хранилище, JWT, веб-сервис, rest api, графический интерфейс, схема алгоритма, UUID

Похожие статьи

Задать вопрос