Евгений Васькевич
Backend разработчик
Еще в марте 2018 года разработчиков порадовали новостью о том, что теперь семейство symfony-компонентов пополнилось полезным инструментом Messenger.
В настоящее время индустрия информационных технологий является одной из наиболее динамично развивающихся. Процесс развития - это всегда накопление огромного количества знаний, которые необходимо постоянно обобщать и систематизировать.
Почему это важно упомянуть? Дело в том, что чем шире базовая лексика, тем сложнее вникнуть в детали человеку, не принадлежащему к отрасли.
С технарями (подрядчиками) все понятно: они работают с технологиями и постоянно используют термины, так как это значительно ускоряет общение в команде. Для бизнесмена ( клиента) все эти «жужжащие слова» вызывают лишь дополнительные вопросы, причем следующего типа: «Зачем это нужно? Почему это стоит так дорого? Можем ли мы обойтись без этого?
Команда Stfalcon имеет большой опыт в разработке мобильных приложений, и мы часто сталкиваемся с вопросами, которые можно квалифицировать как «типичные». Один из них - «Зачем нам нужен API для мобильного приложения?»
.Чтобы облегчить понимание этого вопроса, давайте узнаем, что такое API (Application Programming Interface) объясним простыми словами. Мы’узнаем, какие функциональные задачи он выполняет и почему мобильное приложение не может обойтись без него.
Интерфейс - это лучшее слово, с которого стоит начать, когда речь идет о понятии API. Интерфейс - это примитивное понятие, которое имеет более широкое значение. Чтобы упростить ситуацию, давайте не будем углубляться в инженерные и программные аспекты, а обратимся к общим темам.
Ответ на вопрос: Какие функциональные задачи выполняет автомобиль?
Скорее всего, первое, что придет вам в голову, - это перемещение человека из пункта А в пункт Б. В общем, это действительно основная функция автомобиля, перевозка каких-то вещей или зарабатывание денег - это второстепенные возможные функции.
Подробнее
Второй вопрос - что заставляет автомобиль двигаться, ускоряться, замедляться? Не вдаваясь в подробности, можно сказать, что автомобиль как средство передвижения состоит из множества взаимосвязанных компонентов. На верхнем уровне их 3: кузов, подрамник и двигатель. Каждый из этих компонентов, в свою очередь, состоит из более узкоспециализированных устройств и механизмов, которые работают рука об руку друг с другом. В результате мы получаем от автомобиля то, что нам нужно.
Современный автомобиль - это довольно серьезное инженерное решение, однако водителю не нужно обязательно разбираться со всем этим, это просто скрыто от глаз. Как вы понимаете, это скрыто за интерфейсом ☺
.
Вы правильно поняли, что руль, педаль газа, коробка передач, климатическое оборудование и даже ваша любимая автомагнитола - это части интерфейса, который предоставляется водителю для управления всей этой сложностью.
<фигура>Интерфейсы довольно часто встречаются в нашей жизни:
Приняв во внимание приведенные выше примеры, давайте попробуем найти определение этого понятия.
Интерфейс — это граница между двумя системами, которая представляет собой набор правил, методов и ограничений, регулирующих взаимодействие систем друг с другом.
Если продолжить пример с автомобилем, то можно выделить две системы: человек и автомобиль. Последнее устанавливает определенные правила, которые позволяют человеку управлять им следуя этим правилам.
Разобравшись с основной составляющей термина, продолжим расшифровку двух оставшихся слов — Application Programming. Само название намекает на то, что термин относится к сфере программного обеспечения. Если сравнить его с автомобилем, то можно прийти к выводу, что API обозначает 2 системы и правила. Системами, в данном случае, являются модули программирования, веб-сервисы и так далее.
На самом деле, мы могли бы закончить с API на этом пункте, но не упомянуть RESTfull API будет неправильно. Дело в том, что API описывает явление. RESTfull API (или просто REST API), в свою очередь, является одним из подходов к реализации API при разработке мобильных приложений.
Это важно понимать, так как API часто используется в общении для краткости, но предполагается, что оно должно быть реализовано с помощью RESTfull API.
Воооружившись знаниями о том, что такое интерфейс и даже немного прикоснувшись к более узкоспециализированному термину RESTfull API, мы можем легко ответить на главный вопрос «Зачем мобильному приложению API?»
.Начнем с «анатомии». Мобильное приложение состоит не только из визуальной части — UI - пользовательского интерфейса, но и ряда вопросов, которые необходимо решить в процессе мобильной разработки. Они таковы: где хранить информацию о пользователях, сообщения, заказы и т.д.
.
Решение также должно обладать определенными функциями, такими как прием платежей, авторизация пользователя, отправка SMS при регистрации или PUSH-уведомлений при наступлении события.
Задач много, но какая из них (или может быть, все они) является причиной для создания API для мобильного приложения? Ответ таков: ни одна. Все это можно реализовать без API в рамках одного смартфона.
В действительности, основная причина заключается в многопользовательской природе мобильного приложения. Как только появляется более одного пользователя, возникает проблема совместного использования данных.
Как только появляется более одного пользователя, возникает проблема совместного использования данных.
Представьте себе ситуацию, когда пользователь меняет свое имя. Если данные хранятся только на его смартфоне, другой пользователь не сможет узнать об изменении.
Если данные хранятся только на его смартфоне, другой пользователь не сможет узнать об изменении.
Кроме обмена данными, есть и другие проблемы: что делать, если смартфон потерян или перезагружен, и как справиться с поддержкой сотен устройств’?
Все эти проблемы решаются за счет централизации бизнес-логики и доступа к API, который разработан (если быть точнее — RESTfull API, как мы уже знаем).
<фигура>Еще один случай, когда без API не обойтись, - это когда вы хотите предоставить своим клиентам доступ к вашим данным или функциям за определенную плату.
В качестве примера можно взять агрегаторы SMS, основная функция которых заключается в отправке SMS. Разработчику в этом случае не нужно вникать во всю сложность мобильных сетей, а достаточно сделать лишь интеграцию приложения с SMS-интегратором и вызов необходимого API для отправки.
Приняв во внимание все вышеописанное, мы можем прийти к главному выводу: для выполнения своих функций мобильное приложение обращается к внешнему серверу, на котором сосредоточена вся бизнес-логика (его еще называют Backend).
Для доступа к серверу необходим API, то есть определенный набор правил, который позволит клиенту, приложению, быть точным, получить к нему доступ.
Практически это выглядит так: вы хотите сделать заказ, например, ваше приложение для iOS или Android отправит команду на сервер с помощью API для создания заказа. Сервер выполнит запрос и сохранит всю информацию в базе данных, таким образом, информация о заказе будет доступна другим пользователям.
Надеемся, что эта статья поможет вам раз и навсегда отсеять вопрос об API на дно.
Всего наилучшего :)
Пожалуй, я не совру, если скажу, что в экосистеме Symfony наиболее часто используемой ORM является Doctrine. Поэтому изучение этой библиотеки крайне важно для Symfony-разработчика. В данной статье предлагаю заглянуть «под капот» этого Мустанга в мире ORM-ок и выяснить, на базе каких абстракций и паттернов построена эта библиотека.