Назад в библиотеку

Cовременные подходы к построению сетевых игровых приложений

Авторы: Алексеева В.А., Грищенко В.И.

Источник: Компьютерная и программная инженерия (КПИ — 2015) — 2015 / Материалы международной научно технической конференции студентов, аспирантов и молодых ученых. — Донецк, ДонНТУ — 2015.

Аннотация

Рассмотрены технологии, используемые при создании Back-end сетевых распределенных приложений. Проведено сравнение и выбор базы данных между классической реляционной базой и базами NoSQL. Кратко описаны языки программирования Python, Ruby и PHP приведены их преимущества и недостатки. Описаны два метода взаимодействия компонентов приложения SOAP и REST и приведены их преимущества и недостатки. На каждом этапе обосновывается выбоор тго или иного средства для приложения, разрабатываемого в рамках магистерской работы.

Введение

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

Упрощенная схема сетевого приложения

Рисунок 1 — Упрощенная схема сетевого приложения

Пользователь запускает клиентскую часть системы на смартфоне или планшете. Клиентская часть выполнена в виде приложения на языке Java. Приложение в ходе своей работы обращается к серверной части системы (Back-end) для актуализации игровой сцены и сохранения промежуточных результатов. Back-end состоит из балансировщика запросов, кластера серверов приложений и СУБД.

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

Прежде чем начать разработку приложения необходимо определить, программные средства (язык программирования, тип базы данных, средства для передачи данных между front-end и back-end), которые будут использоваться для разработки приложения.

1 Выбор базы данных для системы

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

К реляционным базам данных относятся (MySQL, SQLite и PostgreSQL), выделим их основные характеристики:

Реляционные БД обеспечивают:

NoSQL базы данных делятся на:

Данные в таких БД представляются в виде агрегатов (вместо использования логической последовательности, все объекты рассматриваются как единое целое). Они легко подвергаются горизонтальному масштабированию и используют специализированный механизм запросов вместо SQL.

Таблица 1 – Достоинства и недостатки БД

Преимущества Недостатки
NoSQL базы данных
  • быстрое считывание информации;
  • хранение объектов в удобном виде для приложения (агрегаты вместо таблиц);
  • поддержка атомарности на уровне записей;
  • использование только определенного вида запроса;
  • сложности, в случае, если один и тот же объект может выполнять различные роли;
Реляционные базы данных
  • сохраняется целостность информации при обновлении;
  • возможность работы с различными запросами;
  • медленное чтение при использовании соединений таблиц;
  • сложность горизонтального масштабирования;

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

2 Выбор языка программирования для сервера

Наиболее популярными языками программирования для распределенных приложений являются Python, Ruby и PHP.

Python применяется как интерпретируемый язык для скриптов различного назначения. Основной целью Python является приближение синтаксиса реальной программы, написанной на нём, к описывающему задачу псевдокоду, что позволяет уменьшить объём программы. Python позволяет совместить два подхода к программированию: процедурный и объектно-ориентированный.

Ruby – динамический императивный объектно-ориентированный язык программирования, разработанный Юкихиро Матсумото.

PHP – язык программирования, исполняемый на стороне веб-сервера, спроектированный Расмусом Лердорфом (Rasmus Lerdorf) в качестве инструмента создания динамических и интерактивных веб-сайтов. Является мощным и гибким из-за чего и стал одним из популярнейших языков. Возможности языка позволяют применять его в проектах любого масштаба [3].

Для выбора из этих языков наиболее подходящего, их достоинства и недостатки были представлены в виде таблицы 2.

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

Таблица 2 – Преимущества и недостатки Python, Ruby, PHP

Преимущества Недостатки
Python
  • открытая разработка;
  • прост в изучении;
  • стимулирует писать читаемый код;
  • большое сообщество, которое позитивно к новичкам;
  • множество полезных библиотек и расширений.
  • мало качественных программ;
  • малая производительность в сравнении с другими языками.
Ruby
  • открытая разработка;
  • работает на многих платформах;
  • реализует концептуально чистую объектно-ориентированную парадигму;
  • предоставляет продвинутые методы манипуляции строками и текстом;
  • возможности языка можно расширить при помощи библиотек.
  • сложности в изучении языка для новичков;
  • малая производительность в сравнении с другими языками;
  • медленно развивается.
PHP
  • является свободным программным обеспечением, распространяемым под особой лицензией (PHP license);
  • легок в освоении;
  • большая аудитория пользователей;
  • обширный набор средств, при работе с базами данных;
  • множество дополнительных библиотек и настроек;
  • может быть развёрнут почти на любом сервере;
  • поддерживается на многих платформах и операционных системах.
  • не подходит для создания десктопных приложений или системных компонентов;
  • глобальные параметры конфигурации влияют на базовый синтаксис языка, что затрудняет настройку сервера и разворачивание приложений.

3 Выбор метода взаимодействия компонентов приложения

Наиболее популярными методами являются: REST (метод взаимодействия, при котором вызов удаленной процедуры представляет собой HTTP-запрос, а данные являются параметрами запроса) и SOAP (протокол, основанный на XML и предназначен для обмена структурированной информацией между распределенными приложениями поверх существующих веб протоколов). Исходя из данных приведенных в таблице 3 и задач, которые необходимо решить наиболее подходящим будет метод взаимодействия компонентов через REST [4].

Таблица 3 – Преимущества и недостатки SOAP и REST

Преимущества Недостатки
REST
  • производительность;
  • простота использования;
  • простота разработки и добавления функциональности приложению;
  • надежность (нет необходимости сохранять информацию о состоянии клиента);
  • малая ресурсоемкость;
  • ответ может быть представлен в разных формах.
  • не стандартизирован
SOAP
  • при передаче данных использует XML, что позволяет пользоваться всеми возможностями, предоставляемыми этим языком;
  • может использоваться как поверх других протоколов.
  • увеличение объема сообщения, что снижает скорость передачи.

Выводы

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

ЛИТЕРАТУРА

  1. Базы данных. Вводный курс [Электронный ресурс]. – Режим доступа: http://citforum.ck.ua/database/advanced_intro/39.shtml
  2. Сравнение NoSQL систем управления базами данных [Электронный ресурс]. – Режим доступа: http://devacademy.ru/posts/nosql/
  3. PHP, Ruby, Python краткая характеристика [Электронный ресурс]. – Режим доступа: http://www.internet-technologies.ru/articles/article_1991.html
  4. REST vs SOAP [Электронный ресурс]. – Режим доступа: http://habrahabr.ru/post/131343/