Azure Mobile Backend

38
Azure back-end для iOS и Android Особенности разработки и быстрый старт Виталий Баум [email protected] @butaji

description

Лучшие практики создания REST сервисов для мобильных приложений на Azure, а так же использование Windows Azure Mobile Services для прототипов

Transcript of Azure Mobile Backend

Page 1: Azure Mobile Backend

Azure back-end для iOS  и Android

Особенности  разработки  и    быстрый  старт

Виталий  Баум  [email protected]  

@butaji  

Page 2: Azure Mobile Backend

Структура  доклада

•  Требования  к  мобильному  приложению  

•  Особенности  реализации  

•  Практические  советы  

•  Как  быстро  построить  прототип

http://bit.ly/1819mzC    

Page 3: Azure Mobile Backend

Dealer Mobility

•  Мобильная  платформа   для  автодилеров  

Новости,  спецпредложения  Запись  на  ТО,  личный  кабинет  Оповещения  с  помощью  push  

Page 4: Azure Mobile Backend

Ресурсы

•  Серверная  команда  – Разработчики  .NET

•  Мобильная  команда  – Разработчики  iOS – Разработчики  Android

Page 5: Azure Mobile Backend

Контракт  взаимодействия

•  Серверная  команда  не  знает  что  писать  •  Клиентская  команда  ждёт  пока  серверная  напишет  что-­‐нибудь  

•  Контракты  бесполезно  передавать  с  помощью  POCO

Page 6: Azure Mobile Backend

Протокол  взаимодействия

•  HTTP REST/JSON •  Запросы  через  HTTPS + AppKey

Проблема  протокола:  •  Версионирование  •  Решено  через  /api/v1/…

Page 7: Azure Mobile Backend

Серверная  сторона

•  Всё  начиналось  в  2011  году •  WCF REST Starter Kit

Page 8: Azure Mobile Backend

Что  необходимо  мобильному  приложению  от  backend?

Page 9: Azure Mobile Backend

Что  нужно  для  приложения?

•  Хранение  данных  (База,  Файлы)  •  Пуш  уведомления  •  Управление  пользователями  •  Трансляция  звука/видео  •  Аналитика  использования  

Page 10: Azure Mobile Backend

Наш  случай

•  Есть  .net разработчики,  которые  умеют  хорошо  готовить  SQL Server

•  Есть  требование,  что  продукт  можно  ставить  On Premise

Page 11: Azure Mobile Backend

Хранение  данных

В  Azure есть: •  Реляционное  хранилище  •  Blob storage

Решение:  •  SQL Server + Entity Framework  

 

Page 12: Azure Mobile Backend

Синхронизация  данных

•  Требование  –  работа  офлайн

•  Есть  две  стратегии  – Плохой  кеш  – Хороший  кеш  

Page 13: Azure Mobile Backend

Data Sync

•  Вести  аудит  изменений  данных  –  Фактически  логировать  CRUD операции  –  Или  ввести  атрибуты  

•  CreatedAt •  UpdatedAt   •  Deleted  

Page 14: Azure Mobile Backend

Data Sync

время

изменения  данных данные  для  синхронизации

1.04.2013 2011

Page 15: Azure Mobile Backend

Data Sync

void Update(NewsItem newsItem) {

//…update database record EventLog.Append( “NewsItem”, “Updated”, newsItem.Id, newsItem.ToJson());

}

Page 16: Azure Mobile Backend

Data Sync

/changes?since=01.04.2013 {

News : { Added : [1,2,3,4,5], Updated: [2,3], Deleted: [5] }

}

Page 17: Azure Mobile Backend

Data Sync

Changes GetChanges(DateTime since) {

return EventLog .FetchSince(since) .GroupBy(x => x.ItemType);

}

Page 18: Azure Mobile Backend

Data Sync

/news/changes?since=01.04.2013 {

Added : [1,2,3,4,5], Updated: [2,3], Deleted: [5]

}

Page 19: Azure Mobile Backend

Data Sync

/news/changes?since=01.04.2013&data=true {

Added : [{ Id : 1, Text: “Latest news”}, Updated: [{ Id : 2, Text: “Shock news”}], Deleted: [3,4,5]

}

Page 20: Azure Mobile Backend

Файлы  /  изображения

/image?id=123&width=720&height=360 •  Разные  разрешения  экранов  •  Разные  платформы  •  Ленивые  контент-­‐менеджеры  J

Page 21: Azure Mobile Backend

Пуш  уведомления

•  Azure Worker Role •  PushSharp  •  Пул  сообщений  (почта/пуши/смс) – http://sendgrid.com  – http://twillio.com

Page 22: Azure Mobile Backend

Пуш  уведомления

•  Apple Push Notification Service – The maximum size allowed for a notification

payload is 256 bytes

•  Google Cloud Messaging – Message can be up to 4kb in size

Page 23: Azure Mobile Backend

Управление  пользователями

•  Кастомная  реализация  – Basic auth – Facebook, twitter, vk.com, odnoklassniki – Профили  пользователей

•  Общий  AppId на  серверном  и  мобильном  приложении  

Page 24: Azure Mobile Backend

Аналитика  использования

•  Приложение  использует  Flurry, Google Analytics

•  Админочка  использует  flurry api, чтобы  показывать  красивые  графики  пользователям  

Page 25: Azure Mobile Backend

Аналитика  использования

•  Аудит:  логирование  всех  вызовов  методов  – Статистика  просмотра  данных  – Статистка  регистраций  пользователей – Статистика  действий  пользователей  

Page 26: Azure Mobile Backend

Как  построить  прототип  в  кратчайшие  сроки

Page 27: Azure Mobile Backend

Прототипирование

•  Сделать  за  вечер  •  Не  дороже  200$/мес •  Мобильный  API и  может  понадобиться  админка  

Page 28: Azure Mobile Backend

Backend as Service

•  Windows Azure Mobile Services – Windows Store – Windows Phone 8 –  iOS – Android – HTML/JavaScript – REST API

Page 29: Azure Mobile Backend

WAMS: iOS, Android

•  Есть  SDK для  упрощения  доступа  к  данным  – Абстракция  над  подключением  и  таблицами  – Асинхронные  запросы  с  callback’ами  для  получения  данных  

•  Язык  запросов

Page 30: Azure Mobile Backend

Демо:  iOS и  Android

Page 31: Azure Mobile Backend

WAMS == node.js

•  Пакеты  для  пушей  (apns,  mpns,  wns, gcm) •  Для  Azure сервисов  (azure) •  Для  HTTP запросов  (request) •  Для  отправки  email (sendgrid)

Page 32: Azure Mobile Backend

WAMS REST API

•  Передавать  X-ZUMO-APPLICATION •  READ == HTTP GET + OData Query

Options ($filter, $orderby, $top, $skip) •  CREATE == HTTP POST •  UPDATE == HTTP PATCH •  DELETE == HTTP DELETE  

Page 33: Azure Mobile Backend

WAMS REST API

-­‐  Можно  бесшовно  поменять  оснастку  на  Web Api (OData Query Options)  

Page 34: Azure Mobile Backend

Плюсы  и  минусы  WAMS

•  Callback hell •  Debugging •  Source control

Page 35: Azure Mobile Backend

Рекомендации  по  использованию  WAMS

•  Отключить  Dynamic Scheme •  Четко  провести  грань,  когда  прототип  стал  приложением  и  заранее  запланировать  миграцию

Page 36: Azure Mobile Backend

Что  должен  уметь  Back-end для    мобильных  клиентов?

Page 37: Azure Mobile Backend

Возможности  back-end

•  Хранение  данных  •  Отправка  push •  Управление  пользователями  •  Трансляция  видео/аудио  •  Аналитика  использования

Page 38: Azure Mobile Backend

Спасибо  за  внимание!