Понимание Mobile Back End, как сервис

Что делать, если вы могли бы создать целую заднюю часть для ваших мобильных приложений, который был функционально полной в синхронизации данных, нажмите-уведомления поддержку, управление пользователями и файл обработки, прежде чем вы даже начали строить работу с мобильными устройствами?Что, если это был архитектуру таким образом, что вы можете легко Создать новую кросс-платформенный родной и веб-приложений seamlessly? На этом задний конец

Хотя это может звучать как сказка, это именно то, что провайдеры мобильных задней части, как услуга (MBaaS) стремятся дать разработчикам приложений.Это до вас, чтобы определить, является ли это верно для опыта вы создаете .

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

Обрамление Discussion

Нормализация дискуссии вокруг MBaaS является чрезвычайно сложной задачей.В то время как MBaaS является общепринятым термином, каждый определяет его по-разному.Kinvey недавно отображенные поставщики фоновым-как-услуга предприятие solutions 1 .Эта карта показывает обширную экосистему, и определение различных групп решение может быть чрезвычайно сложной задачей .

С пейзаж меняется с каждой минутой, гвоздей вниз все игроки в любой данный момент времени трудно.Тем не менее, некоторые ключевые поставщики зарекомендовали себя на рынке.Провайдеры, такие как Parse 10 2 , Kinvey 11 3 и Salesforce.com 4 создали сформировавшиеся платформы, которые в настоящее время основаны на многие приложения, которые вы используете ежедневно.Другие, более зарождающиеся решения, такие как Amazon Web Services “(AWS) Cognito 5 , __51 Microsoft Azure в | Мобильная Services 6 , __57 от Apple | CloudKit 7 , Кони MobileFabric 8 и Ведущие CF 9 еще нужно время, чтобы быть оценены.Еще одной ключевой проблемой в сравнении MBaaS поставщиков в том, что не все провайдеры имеют функцию паритета .

Примечание: В этой статье, я буду тратить свое время, сосредотачиваясь на Parse 10 2 и Kinvey 11 3 из-за их зрелости и широты функциональных возможностей.Эти два решения могут работать для большинства применений случаях из приложения независимого разработчика, чтобы корпоративное решение через несколько цифровых свойства .

MBaaS в реальном Life

Чтобы объяснить цель MBaaS, я буду использовать пример, который мы недавно создали из нашего исследования и разработки группы в Универсальный Mind 12 .Все из наших офисов в Вселенского Разума имеют гибкие рабочие зоны.Мы хотели, чтобы изучить, как отслеживать имеющиеся рабочие места, используя iBeacons 13 .

IBeacons являются класс датчиков, которые следуют iBeacon спецификации Apple.Они используют Bluetooth 4 низкую энергию для общения, который позволяет приложению постоянно поиск для них, не истощая аккумулятор пользователя.Они являются идеальным датчики для определения близости пользователя (насколько близко пользователя к объекту), который в определенных условиях (например, в помещении) является более желательным, чем при использовании GPS .

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

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

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

This is a view of the mobile application prototype that was developed by the research and development team at Universal Mind. 14
Это вид мобильного прототипа приложения, который был разработан в научно-исследовательской команды в Вселенского Разума.( Просмотр большой version)

Без MBaaS

Для создания этого кросс-платформенного приложения, мы должны поставить некоторые ключевые компоненты на месте:

  • ServerЯ мог бы, вероятно, запустить в AWS Elastic Compute Cloud 15 (EC2) экземпляра и запустить сервер Node.js.Я мог бы даже использовать эластичный бобовый стебель или OpsWorks обрабатывать некоторые общие развертывания процессов .
  • DatabaseПотому что я смотрю на AWS, я мог бы использовать реляционной обслуживание базы данных (RDS) или DynamoDB для хранения данных.Существует также возможность развертывания другое решение на AWS, таких как MongoLab .
  • ServicesЯ мог бы создать весь интеграцию с базой данных, а затем предоставлять сервисы REST основе, чтобы сделать его легко выполнять операции CRUD на данные .
  • Управление пользователями и securityМне нужно, чтобы включить объект пользователя в качестве части данных, а затем связать разрешения в рамках услуг к данным, которые владеет конкретный пользователь и / или группы.Кроме того, мне нужно, чтобы дать пользователям возможность подписаться, сброс свой пароль, удалить свой счет и так далее .
  • Нажмите notificationsВ этом приложении Node.js, развернутого на сервере EC2, я должен был бы объединить один из немногих модулей, которые позволяют для уведомлений кросс-платформа как для МО и Android.В то время как большая часть тяжелой случится в этих модулей с открытым исходным кодом, я все равно необходимо будет интегрировать логику приложения с уведомлениями .
  • IOS служба integrationПотому что IOS является целевой операционной системы, я должен был бы интегрировать с сервером по КСН в любом Swift или Objective-C.Кроме того, я должен был бы определить, как обращаться с кэширование службы, хранение данных, обработку форума, Push-уведомления обработки и т.д. .
  • Android служба integrationПотому что Android является совершенно разные платформы, я должен был бы создать такую ​​же интеграцию сервера на этой платформе, а также.Я должен был бы обрабатывать все те же опасения, что я решаться на прошивкой, а .

С этих позиций на месте, я мог бы начать на самом деле построения мненияприложения и соединяя их с данными.И я мог бы начать обработку iBeacon интеграции и настройки рабочей станции как “оккупированные” основывается на близости пользователя.Однако, попадая в этот момент и получить инфраструктуры в месте мне потребуется немало времени и конфигурации.Это где преимущество MBaaS реализуется .

С MBaaS

Красота здесь является то, что самые большие предметы заботятся для меня: я никогда не иметь дело с настройкой сервера, установке и настройке базы данных, настройке сервиса, управления пользователями, защиты данных, создание уведомления толчка илиинтеграции родные услуги.Все, что предусмотрено как часть MBaaS.Мои шаги сейчас выглядят немного по-другому:

  1. Создать приложение с провайдером MBaaS .
  2. Включить родной SDK в каждом приложении .

С этих позиций на месте, я могу решать две основные взаимодействия сервисов с минимальным кодом: извлечение близлежащие рабочие зоны и изменение состояния одного рабочего места от вакантными, в оккупированной (и наоборот).Ниже я подробно некоторые примеры IOS Objective-C код с этих образцов, используя Разбор качестве поставщика MBaaS:

// In header file or class extension
@property (nonatomic,strong) NSArray *workstations;

// Within the implementation
/*
  After the view loads, we can asynchronously grab the user's location
  and then use that to query for a list of nearby workstations.
*/
- (void)viewDidLoad
{
  [super viewDidLoad];
  // Get the user's location as a Parse PFGeoPoint
  [PFGeoPoint geoPointForCurrentLocationInBackground:^(PFGeoPoint *geoPoint, NSError *error) {
    if (!error) {
      [self fetchWorkstationsNearPoint:geoPoint];
    }
  }];
}

/*
  This method asychronously fetches an array of the workstations
  that are within two miles of the user's current location.
*/
- (void)fetchWorkstationsNearPoint:(PFGeoPoint *)geoPoint
{
  PFQuery *query = [PFQuery queryWithClassName:@"Workstations"];
  [query whereKey:@"location" nearGeoPoint:userLocation withinMiles:2];
  [query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
    if (!error)
    {
      self.workstations = objects;
    }
  }];
}

В приведенном выше коде, я взялся за первый вызов: Извлечение данных для рабочих станций в двух милях от текущего местоположения пользователя.Это начинается с вызова, чтобы захватить текущее местоположение пользователя после того, как приложение завершит загрузку.Разбор обеспечивает помощник, который получает эти данные, так что мы не должны полагаться на CLLocationManager напрямую.Далее, fetchWorkstationsNearPoint метод называется, что асинхронно запрашивает хранилище данных PARSE.За кулисами, SDK делает REST вызывает, чтобы захватить данные из хранилища .__ 0 данных разбора, в |

/*
  This method fetches a workstation data object given the iBeacon
  identifier. Then, it sets the occupied property and saves the
  object asynchronously.
*/
- (void)setWorkstationState:(BOOL)isOccupied
withBeaconIdentifier:(NSString *)beacon
completionHandler:^(NSError *error)completion
{
  PFQuery *query = [PFQuery queryWithClassName:@"Workstations"];
  [query whereKey:@"beaconIdentifier" equalTo:beaconIdentifier];
    [query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
    if (!error)
    {
      POWorkstation *workstation = [objects firstObject];
      workstation[@"occupied"] = [NSNumber numberWithBool:isOccupied];
      [workstation saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
        completion(error);
      }];
    }
  }];
}

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

Очень мало код необходим для выполнения этих задач, потому что большинство логики, что происходит в IOS SDK разбора, в.Это обрабатывает такие вещи, как делегаты услуг, перевод данных и кэшируются хранения данных, что значительно снижает код, который разработчик должен был бы написать и поддерживать в течение долгого времени.Хотя это не панацея, она обеспечивает твердый раствор для наиболее распространенных случаев мобильного использования .

Основной Premise

Благодаря этому, например, можно увидеть, что ядро ​​обещание MBaaS является то, что он решает сложную задачу поддержки Вашего мобильного Back End один раз таким образом, что она может быть использована последовательно в нескольких проектах.Вместо того, чтобы стрелять базу данных облачной, пуш-уведомлений сервераи система управления пользователями, которые вам придется управлять, вы можете использовать в поставщика MBaaS, которая обеспечит все это из коробки.Кроме того, вам больше не придется нести ответственность за безотказной работы и масштабируемость в задней части, а не полагаться на поставщика для этого .

В то время как MBaaS безусловно, имеет свои скептики (которых я коснусь позже в этой статье), акцент на MBaaS за последний год был неоспорим.Ранние MBaaS поставщик Разбор была приобретена Facebook;С тех пор, Apple, Microsoft, Amazon и Google появились со своими облачных платформ.Кроме того, существующие поставщики процветали и наблюдаем резкий захват в принятии как их платформы созрели .

Различие между Options

Нет двух MBaaS решения не совпадают, поэтому зная, как их сравнивать имеет решающее значение.Основные различия между поставщиками лежат в трех областях: Поддержка платформы, методологии развертывания и функцию автофокусировки .

Кросс-платформенный Support

Основное преимущество MBaaS является способность поддерживать приложения на нескольких платформах.Некоторые решения, такие как ICloud и CloudKit, делают большую работу по обеспечению глубоко интегрированного хранилища данных (один из компонентов MBaaS) на единой платформе.В то время как это работает хорошо для одной платформы, это значительно ограничивает возможности приложения, чтобы стать кросс-платформенный в будущем времени.Однако, если приложение будет только когда-либо быть на одной платформе, это может быть хорошим решением .

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

  • Разбор настоящее время обеспечивает SDK, для IOS, Android, Windows Phone 8, Windows 8, PHP, JavaScript, Mac OS X и единства .
  • Kinvey в настоящее время предоставляет SDK, для прошивкой, Android, JavaScript, AngularJS, Backbone.js, Ember.js, Node.js, PhoneGap и Titanium .

Methodology

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

Вот наиболее популярные методы развертывания для MBaaS решений:

Comments are closed.