Актуальные проблемы авиации и космонавтики - 2022. Том 2
УДК 004.042
РАЗРАБОТКА СЕРВЕРНОЙ ЧАСТИ ДЛЯ ПРЕДОСТАВЛЕНИЯ СПРАВОЧНОЙ ИНФОРМАЦИИ ПРОЕКТА КРАСНОЯРСКИЙ ХАЙКИНГ
Д. А. Крутько Научный руководитель - В. В. Буряченко
Сибирский государственный университет науки и технологий имени академика М. Ф. Решетнева Российская Федерация, 660037, г. Красноярск, просп. им. газ. «Красноярский рабочий», 31
E-mail: krutko.d00@gmail.com
Рассматривается реализация клиент-серверной части приложения для работы со справочной информацией по проекту Красноярский Хайкинг.
Ключевые слова: backend, Flask, Python, база данных, взаимодействие клиента и сервера.
DEVELOPMENT OF THE SERVER PART TO PROVIDE REFERENCE INFORMATION
OF THE KRASNOYARSK HIKING PROJECT
D. A. Krutko Scientific supervisor - V. V. Buryachenko
Reshetnev Siberian State University of Science and Technology 31, Krasnoyarskii rabochii prospekt, Krasnoyarsk, 660037, Russian Federation E-mail: krutko.d00@gmail.com
The implementation of the client-server part of the application for working with reference information on the Krasnoyarsk Hiking project is considered.
Keyword: backend, Flask, Python, database, client-server interaction.
На сегодняшний день актуальна тема поддержания здорового образа жизни. Люди стремятся следить за своим здоровьем, занимаются спортом, а также путешествуют. Они постоянно находятся в поиске различных мест посещения. Красноярский край обладает очень богатой природой. Муниципальное молодежное автономное учреждение г. Красноярска «Центр путешественников» — это спорт и туризм, лагеря и экспедиции, альпинизм и спелеология, экскурсии и прогулки [1]. Организация имеет достаточно большой поток информации, которую необходимо структурировать для пользователей. В связи с этим разработка клиент-серверной системы справочной информации по проекту Красноярский хайкинг будет полезна для разработки мобильного приложения, содержащего справочную информацию.
Архитектура «Клиент-сервер» — это вычислительная или сетевая архитектура, в которой задания или сетевая нагрузка распределены между поставщиками услуг, называемыми серверами, и заказчиками услуг, называемыми клиентами [2]. Клиент и сервер фактически является программным обеспечением. В веб-приложении роль клиента чаще всего выполняет браузер, а роль сервера - веб-сервер.
Структура программного продукта разрабатываемого приложения состоит из: базы данных, серверной части и мобильного приложения. Мобильное приложение привязано к серверу, на котором хранится база данных со справочной информацией. По требованию пользователей происходит обращение к серверу за получением или отправкой какой-либо
Секция «Программные средства и информационные технологии»
информации из базы данных, затем, через серверную часть возвращается ответ в мобильное приложение.
Серверная часть системы будет реализовываться на высокоуровневом языке программирования Python версии 3.9 с использованием веб-фреймворка Flask. Python поддерживает несколько парадигм программирования, в том числе структурное, объектно-ориентированное и функциональное. Flask — фреймворк для создания веб-приложения на языке программирования Python, использующий набор инструментов Werkzeug, а также шаблонизатор Jinja2. Относится к категории так называемых микрофреймворков — минималистических каркасов веб-приложений, сознательно представляющих лишь самые базовые возможности [3].
Перейдем к рассмотрению процесса реализации базы данных. Изначально, Flask не поддерживает базы данных. Это одна из многих областей, в которых Flask намеренно не самодостаточен, что хорошо для нас, так как у нас появляется свобода выбора базы данных, которая наилучшим образом подходит для реализуемого приложения.
На сегодняшний день существуют две конкурирующих системы проектирования баз данных:
1. Реляционные базы данных.
2. Нереляционные или NoSQL базы данных.
Реляционные базы данных по традиции используют веб-приложении. Они хранят данные в таблицах и колонках и используют внешний ключ для создания связи между несколькими таблицами.
В последние годы популярность баз данных NoSQL выросла. Такие базы данных не хранят данные в таблицах и колонках, а вместо них используют такие структуры, как документные хранилища, хранилища ключей и значений, графы и так далее. Нереляционные базы данных имеют тенденцию быть лучше для данных, которые имеют менее определенную структуру.
Реляционные базы данных намного старше NoSQL. Они доказали свою надежность и безопасность во многих отраслях, в связи с чем было решено использовать именно реляционную базу данных.
SQLAlchemy - это фреймворк для работы, который на практике используется для работы с реляционными базами данных в Python. Поддерживает следующие базы данных: MySQL, PostgreSQL, Oracle, MS-SQL, SQLiteи др. Данная ORM позволяет приложениям управлять базой данных с использованием объектов высокого уровня, таких как классы, объекты и методы, а не таблицы и SQL. Задача ORM - перевести операции высокого уровня в команды базы данных.
После рассмотрения основных элементов структуры программного обеспечения, вернемся к серверной части и рассмотрим её взаимодействие с браузером.
Backend включает в себя код, который исполняется на сервере. Он включает в себя взаимодействие с базами данных^?/, обработку входящих данных. Пользователь работает лишь с внешней частью системы - заполняя некоторую форму и подтверждая вход, клиент отправляет введенные данные на сервер, где они затем, при необходимости, подвергаются обработке и сохраняются в базу данных. Поэтому, когда пользователь снова входит в приложение, вся информация остается на виду, где затем ее можно отредактировать, удалить и выполнить другие действия.
Клиентская часть приложения и сервер взаимодействуют друг с другом с помощью НТТРзапросов и подходаAJAX. Как правило, при этом используется архитектура RESTAP/, которая включает в себя следующие методы:
- GET - запрос данных;
- POST - создание новой записи;
- PUT - обновление данных;
Актуальные проблемы авиации и космонавтики - 2022. Тома 2
- DELETE - удаление данных [4].
В современных веб-приложениях используется AJAX-модель взаимодействия. В фоне браузер создает HTTP запрос к серверу. Сервер получает запрос, обрабатывает и возвращает ответ браузеру. Браузер получает ответ от сервера, как правило в формате JSON, результат отображается на странице без ее перезагрузки. Рассмотрим на рисунке 1 жизненный цикл системы, реализованный в виде одностраничного приложения.
БРАУЗЕР первый зал рос v СЕРВЕР
г ^ html *
пользовательский интерфейс ajax http jjutoc ^ (...kon) вебсервер |_ база данных
Рис. 1. Жизненный цикл одностраничного приложения
В заключении хочется сказать, что в работе была изучена и проанализирована разработка серверной части системы с последующей программной реализацией на языке программирования Python с использованием веб-фреймворка Flask. В качестве системы управления базой данных была выбрана реляционная СУБД - PostgreSQL. Данная серверная часть способна обрабатывать информацию пользователя.
Серверная часть будет включать таблицы, содержащие информацию о районах, маршрутах, объектах посещения и создателях проекта Красноярский Хайкинг, которую добавляет разработчик согласно наработкам организаторов проекта. Таблица «Новости», информирующая о ближайших событиях, будет получать информацию из группы в ВКонтакте «Красноярский Хайкинг» содержащую в себе такую информацию как название мероприятия, описание, дата и время начала, протяженность и продолжительность маршрута, ссылку на регистрацию и стоимость. Таблица «Пользователи» будет включать данные при регистрации пользователя в мобильном приложении.
Библиографические ссылки
1. Центр путешественников [Электронный ресурс]. URL: https://krascp.ru/ (дата обращения:26.01.2022)
2. Клиент-серверная архитектура [Электронный ресурс]. URL:https://qastart.by/class-2/60-klient-servernaya-arkhitektura (дата обращения: 26.01.2022).
3. Flask (веб-фреймворк)[Электронный ресурс]. URL: https://ru.wikipedia.org/wiki/Flask_(веб-фреймворк)(дата обращения: 26.01.2022)
4. Клиент-сервер [Электронный ресурс].Ц^: https://developer. mozil-la.org/ru/docs/Learn/Server-side/First_steps/Client-Server_overview (дата обращения: 26.01.2022)
© Крутько Д. А., 2022