УДК 004.78
ВЕБ-СЕРВИС ДЛЯ ОЦЕНИВАНИЯ РАБОТЫ ГОРОДСКОГО ТРАНСПОРТА
А. Е. Фадеев
Сибирский государственный аэрокосмический университет имени академика М. Ф. Решетнева
Российская Федерация, 660037, г. Красноярск, просп. им. газ. «Красноярский рабочий», 31
E-mail: [email protected]
Предложено программное обеспечение, позволяющее выполнять оценивание качества работы городского общественного транспорта посредством мобильного android-клиента, получающего информацию о местоположении транспорта и с помощью разработанного веб-сервиса.
Ключевые слова: Веб-сервис, android-клиент, оценивание работы, городской транспорт. WEB SERVICE FOR PUBLIC TRANSPORTATION EVALUATION
A. E. Fadeev
Reshetnev Siberian State Aerospace University 31, Krasnoyarsky Rabochy Av., Krasnoyarsk, 660037, Russian Federation E-mail: [email protected]
Evaluation and improvement the quality of public transportation with the mobile android-client, which receives information about the location of transport, and with the help of the developed web-service to comment and evaluate.
Keywords: Web-service, android-client, evaluation of work, urban transport.
В работе [6] был рассмотрен Android-клиент для сайта по отслеживанию и прогнозированию местоположения Красноярского городского транспорта. Этот сайт помогает если не исключить, то хотя бы свести к минимуму время ожидания автобуса, трамвая или троллейбуса на остановке.
Опыт эксплуатации Android-клиента показал, что для расширения его возможностей необходимо создать сервис, который позволит пользователю оценивать качество транспорта и обслуживания, а также удобство маршрута и фактическое время ожидания транспорта. Кроме того, собранные данные помогут пассажирам выбирать действительно качественного перевозчика. Так как в приложении имеются данные даже о государственном номере транспорта, то можно оценить работу конкретного экипажа и кондуктора. Кроме того, такой сервис можно использовать для сохранения личных данных пользователя, например, избранных остановочных пунктов, маршрутов, транспортных карт. Анализ аналогичных мобильных клиентов [2; 5; 7] показал, что поддержки подобных функций нет ни у одного из них, что делает задачу по созданию такого сервиса актуальной.
Первым шагом на пути решения поставленной задачи стал выбор средств и технологий разработки веб-сервиса. На основе анализа различных хостингов и веб-серверов было решено писать серверную часть сервиса на языке PHP под управлением сервера Apache, в связи с его доступностью и лидирующей позицией в рейтинге популярных. В качестве системы управления базами данных подобные хостинги, как правило, предоставляют MySQL различных версий. А также необходимо использование расширения PDO [3] - расширение для PHP, предоставляющее разработчику простой и универсальный интерфейс для доступа к различным базам данных, а также защите от SQL-инъекциями с помощью Prepared Statement.
Теперь, когда все технологии были определены, можно было перейти к проектированию базы данных. По результатам концептуального проектирования было выявлено шесть сущностей, которых вполне достаточно для хранения всех необходимых данных, затем на основе логического проектирования были определены названия таблиц, перечень полей и первичный ключ, идентифицированы
Актуальные проблемы авиации и космонавтики - 2016. Том 1
связи между таблицами, а также сформулированы ограничения целостности и приняты решения и создании индексов. И, наконец, была физически спроектирована база данных, её схема, с указанием всех связей, ключей, индексов и типов полей представлена на рисунке.
3 TransportFavorite
J StationFavorite
f AccountEd INT f Stationld INT
- Ограничения
f FK_StationFavorite_Account_Id f FK_StationFavorite_Station&_Id э Индексы
jji FK_StationFavorite_Account_Id ■ FK_StationFavorite_Stations_Id
T
yf AccountEd IIMT
I TransportNumber VARCHAR
Ограничения
'i PRIMARY
f FK_Tran5portFavorite_Account_Id
FK_Stati o n Fav o rite_Acco u nt_Id
и-
H Account
FK_Tra n sp o rtFav o rite_Acco u nt_Id
FK_St ati o n Fav o rite_£tati о г s_I d
□ Stations
Й
f Id
f Station Name VARCHAR
- Ограничения
? PRIMARY
- Индексы
Г StationName
Î м INT
f Email VARCHAR
CreationDate DATETIME
UpdateDste DATETIME
AppVersion BUT
- Ограничения
1 PRIMARY
- Индексы
FK_Tra n&po rtEv a I u ati o n_Acco u nt_Id
Э TransportCard
AccountEd INT CardNumber VARCHAR CardName VARCHAR Correct! DOUBLE Correct DOUBLE Ограничения
f FK_TransportC:ard_Account_Id Индексы
f UK_AccountIdTran5portCard
3 TransportEvaluation
I Id INT
f AccountEd INT
TransportNumber VARCHAR
StateNumber VARCHAR
Comment VARCHAR
EvaluationDate DATETIME
TransportRating SMALLINT
WaitingRating SMALLINT
Service Rating SMALLINT
Route Rating SMALLINT
CreationDate DATETIME
- Ограничения
? PRIMARY
f FK_Transport£valuatjon_Account_Id
в Индексы
■ FK_Transport£valuation_Account_Id
Физическая модель базы данных
При создании веб-сервиса было решено использовать REST-архитектуру [4], так как она является современной и развивающейся. Данная архитектура представляет собой согласованный набор ограничений, учитываемых при проектировании распределённой гипермедиа-системы. В определённых случаях это приводит к повышению производительности и упрощению архитектуры в целом.
Android-клиент при каждом обращении к веб-сервису должен передавать через POST-параметр свой аккаунт Google, на который зарегистрирован смартфон. На основе этого аккаунта из таблицы Account извлекается Id пользователя (или заносится туда, при его отсутствии), далее, с помощью Id пользователя, можно выполнять основные операции с базой данных по добавлению, изменению и удалению личных данных. Совокупность запросов к сервису - представляет собой API (интерфейс программирования приложений, от англ. application program interface). Все разработанные API-методы REST-сервиса представлены в таблице.
Все ответы сервиса генерируются в формате JSON [1] - это очень популярный текстовый формат обмена данных, который, к тому же, можно легко интерпретировать с помощью встроенных классов в язык Java системы Android.
В январе этого года обновление приложения было загружено в маркет GooglePlay и сразу же появилось большое количество пользователей, желающих опробовать сервис - мой бесплатный хостинг не выдержал такой нагрузки и начал блокировать трафик, пришлось покупать премиум-аккаунт для снятия всех ограничений. На данный момент зарегистрировалось более двух с половиной тысяч человек и эта цифра продолжает расти.
API методы веб-сервиса
№ Метод URL Параметры Описание
1 GET /Sync/ Получение всех личных данных синхронизации: остановки, транспорт, транспортные карты, отзывы
2 POST /Sync/Card/ Card[], Name[] Передача данных о текущих транспортных картах для синхронизации
3 POST /Sync/Transport/ Transport[] Передача информации о текущем избранном списке транспорта
4 POST /Sync/Station/ Stations[] Передача информации о текущем списке избранных остановок
5 POST /Comment/ TransportNumber StateNumber Comment Rating TransportRating WaitingRating ServiceRating RouteRating Метод для отправки отзыва с оценками для маршрута
6 GET /Comment/ TransportNumber StateNumber Offset Получение отзывов и оценок. Параметры являются опциональными. Если их не задать - сервис вернет последние 15 отзывов. Параметр TransportNumber - задает номер маршрута, StateNumber - гос. номер транспорта. Параметр Offset задает позицию, с которой надо возвращать отзывы, по умолчанию равен нулю
Подводя итоги, можно сказать, что поставленная цель - достигнута: разработан веб-сервис, позволяющий пользователям Android-приложения оценивать и комментировать работу городского транспорта, выбирая лучший из них на основе собранной статистики оценок и отзывов. А благодаря тому, что водители и кондукторы также пользуются данным приложением, разработка способствует улучшению качества и удобства перевозок в городе Красноярск.
Библиографические ссылки
1. JSON [Электронный ресурс] // Wikipedia.org: свободная энцикл. 2016. URL: http://ru.wikipedia.org/wiki/JSON (дата обращения: 03.04.2016).
2. KrasBus [Электронный ресурс] // Play.google.com: Google Play. 2016. URL: https://play.google. com/store/apps/details?id= ru.softc.krasbus (дата обращения: 03.04.2016).
3. PDO [Электронный ресурс] // Hashphp.org: о языке PHP, 2016. URL: http://wiki.hashphp.org/ PDO_Tutorial_for_MySQL_Developers (дата обращения: 19.04.2014).
4. REST-Service [Электронный ресурс] // Wikipedia.org: свободная энцикл. 2016. URL: https://ru. wikipedia.org/wiki/REST (дата обращения: 03.04.2016).
5. Время автобуса [Электронный ресурс] // play.google.com: Google Play, 2016. URL: https://play. google.com/store/apps/details?id=com.indie.bustime (дата обращения: 03.04.2016).
6. Фадеев А. Е. Android-клиент для Красноярского сайта по отслеживанию положения автобусов : Актуальные проблемы авиации и космонавтики : тезисы докл. X Всерос. конф. творческой молодежи ; СибГАУ. Красноярск, 2014.
7. Яндекс-транспорт [Электронный ресурс] // Play.google.com: Google Play, 2016. URL: https:// play.google.com/store/apps/details?id=ru.yandex.yandexbus (дата обращения: 03.04.2016).
© Фадеев А. Е., 2016