Azure Mobile Backend

289 views

Published on

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

1 Comment
0 Likes
Statistics
Notes
  • Be the first to like this

No Downloads
Views
Total views
289
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
2
Comments
1
Likes
0
Embeds 0
No embeds

No notes for slide

Azure Mobile Backend

  1. 1. Azure back-end дляiOS  и AndroidОсобенности  разработки  и    быстрый  стартВиталий  Баум  vitaly.baum@gmail.com  @butaji  
  2. 2. Структура  доклада•  Требования  к  мобильному  приложению  •  Особенности  реализации  •  Практические  советы  •  Как  быстро  построить  прототипhttp://bit.ly/1819mzC    
  3. 3. Dealer Mobility•  Мобильная  платформа  для  автодилеров  Новости,  спецпредложения  Запись  на  ТО,  личный  кабинет  Оповещения  с  помощью  push  
  4. 4. Ресурсы•  Серверная  команда  – Разработчики  .NET•  Мобильная  команда  – Разработчики  iOS– Разработчики  Android
  5. 5. Контракт  взаимодействия•  Серверная  команда  не  знает  что  писать  •  Клиентская  команда  ждёт  пока  серверная  напишет  что-­‐нибудь  •  Контракты  бесполезно  передавать  с  помощью  POCO
  6. 6. Протокол  взаимодействия•  HTTP REST/JSON•  Запросы  через  HTTPS + AppKeyПроблема  протокола:  •  Версионирование  •  Решено  через  /api/v1/…
  7. 7. Серверная  сторона•  Всё  начиналось  в  2011  году•  WCF REST Starter Kit
  8. 8. Что  необходимо  мобильному  приложению  от  backend?
  9. 9. Что  нужно  для  приложения?•  Хранение  данных  (База,  Файлы)  •  Пуш  уведомления  •  Управление  пользователями  •  Трансляция  звука/видео  •  Аналитика  использования  
  10. 10. Наш  случай•  Есть  .net разработчики,  которые  умеют  хорошо  готовить  SQL Server•  Есть  требование,  что  продукт  можно  ставить  On Premise
  11. 11. Хранение  данныхВ  Azure есть:•  Реляционное  хранилище  •  Blob storageРешение:  •  SQL Server + Entity Framework    
  12. 12. Синхронизация  данных•  Требование  –  работа  офлайн•  Есть  две  стратегии  – Плохой  кеш  – Хороший  кеш  
  13. 13. Data Sync•  Вести  аудит  изменений  данных  –  Фактически  логировать  CRUD операции  –  Или  ввести  атрибуты  •  CreatedAt•  UpdatedAt  •  Deleted  
  14. 14. Data Syncвремяизменения  данных данные  для  синхронизации1.04.20132011
  15. 15. Data Syncvoid Update(NewsItem newsItem){//…update database recordEventLog.Append(“NewsItem”,“Updated”,newsItem.Id, newsItem.ToJson());}
  16. 16. Data Sync/changes?since=01.04.2013{News :{Added : [1,2,3,4,5],Updated: [2,3],Deleted: [5]}}
  17. 17. Data SyncChanges GetChanges(DateTime since){return EventLog.FetchSince(since).GroupBy(x => x.ItemType);}
  18. 18. Data Sync/news/changes?since=01.04.2013{Added : [1,2,3,4,5],Updated: [2,3],Deleted: [5]}
  19. 19. 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]}
  20. 20. Файлы  /  изображения/image?id=123&width=720&height=360•  Разные  разрешения  экранов  •  Разные  платформы  •  Ленивые  контент-­‐менеджеры  J
  21. 21. Пуш  уведомления•  Azure Worker Role•  PushSharp  •  Пул  сообщений  (почта/пуши/смс)– http://sendgrid.com  – http://twillio.com
  22. 22. Пуш  уведомления•  Apple Push Notification Service– The maximum size allowed for a notificationpayload is 256 bytes•  Google Cloud Messaging– Message can be up to 4kb in size
  23. 23. Управление  пользователями•  Кастомная  реализация  – Basic auth– Facebook, twitter, vk.com, odnoklassniki– Профили  пользователей•  Общий  AppId на  серверном  и  мобильном  приложении  
  24. 24. Аналитика  использования•  Приложение  использует  Flurry, GoogleAnalytics•  Админочка  использует  flurry api, чтобы  показывать  красивые  графики  пользователям  
  25. 25. Аналитика  использования•  Аудит:  логирование  всех  вызовов  методов  – Статистика  просмотра  данных  – Статистка  регистраций  пользователей– Статистика  действий  пользователей  
  26. 26. Как  построить  прототип  в  кратчайшие  сроки
  27. 27. Прототипирование•  Сделать  за  вечер  •  Не  дороже  200$/мес•  Мобильный  API и  может  понадобиться  админка  
  28. 28. Backend as Service•  Windows Azure Mobile Services– Windows Store– Windows Phone 8– iOS– Android– HTML/JavaScript– REST API
  29. 29. WAMS: iOS,Android•  Есть  SDK для  упрощения  доступа  к  данным  – Абстракция  над  подключением  и  таблицами  – Асинхронные  запросы  с  callback’ами  для  получения  данных  •  Язык  запросов
  30. 30. Демо:  iOS и  Android
  31. 31. WAMS == node.js•  Пакеты  для  пушей  (apns,  mpns,  wns, gcm)•  Для  Azure сервисов  (azure)•  Для  HTTP запросов  (request)•  Для  отправки  email (sendgrid)
  32. 32. WAMS REST API•  Передавать  X-ZUMO-APPLICATION•  READ == HTTP GET + OData QueryOptions ($filter, $orderby, $top, $skip)•  CREATE == HTTP POST•  UPDATE == HTTP PATCH•  DELETE == HTTP DELETE  
  33. 33. WAMS REST API-­‐  Можно  бесшовно  поменять  оснастку  на  Web Api (OData Query Options)  
  34. 34. Плюсы  и  минусы  WAMS•  Callback hell•  Debugging•  Source control
  35. 35. Рекомендации  по  использованию  WAMS•  Отключить  Dynamic Scheme•  Четко  провести  грань,  когда  прототип  стал  приложением  и  заранее  запланировать  миграцию
  36. 36. Что  должен  уметь  Back-end для    мобильных  клиентов?
  37. 37. Возможности  back-end•  Хранение  данных  •  Отправка  push•  Управление  пользователями  •  Трансляция  видео/аудио  •  Аналитика  использования
  38. 38. Спасибо  за  внимание!

×