Какое бы мобильное приложение вы не разрабатывали (на iOS, Android, Windows Phone, Windows 8 или веб-версию на HTML5), лучшим выбором для бэкенда будет единая облачная платформа. В докладе речь пойдёт о требованиях мобильных разработчиков к серверному функционалу и сложностях, возникающих при сборке своих велосипедов. На примере Windows Azure Mobile Services мы рассмотрим готовое облачное решение, не требующее настройки и сопровождения, как альтернативу своему бэкенду. Вы узнаете, как облачную инфраструктуру можно использовать для отправки push-уведомлений и как интегрировать авторизацию с социальными сетями; как работать с серверным кодом мобильного приложения через Git и как масштабировать мобильный бэкенд по требованию, в том числе автоматически.
5. Мобильное приложение и данные
Мы создаем мобильное приложение
Но где нам хранить данные?
?данные пользователя, таблицы рекордов,
настройки приложения, логи и так далее
6. Мобильное приложение и данные
Мы создаем мобильное приложение
А давайте построим
свое хранилище
VPS + OS
СУБД
Среда исполнения
Бизнес-логика
REST API
?
все еще
?
7. Данные
Идеальный бэкенд для мобильных приложений – это…
SQL
RESTAPI,OpenSourceSDKs
Пуш-уведомления
Серверный код
Git
Custom REST
Web API
CRON
Аутентификация
Facebook Twitter
Microsoft
Account Google Active
Directory
TableBlobs
SQL
SQL
SQL
Обработка
CRUD
Node.js, NPM
MongoDB
Масштабирование по
требованию и автоматически
Бесплатный тариф
Администрирование, скрипты,
мониторинг, логи
Store - 3rd party сервисы:
DB, Mail, SMS, Auth0, OCR, …
13. ШЛО ВРЕМЯ…
пока Эрик разбирался с
хостингом
Стэн и Кайл писали код
мобильных приложений
14. ШЛО ВРЕМЯ…
пока Эрику настраивали БД
и писали код бэкенда
Стэн и Кайл писали код
мобильных приложений
15. ШЛО ВРЕМЯ…
пока Эрик обсуждал бизнес-
логику
Стэн и Кайл засабмитили
приложения в магазин
16. ШЛО ВРЕМЯ…
пока Эрик разбирался
со сбоями и отказами
Стэн и Кайл начали рубить бабло
со своих приложений
17. ШЛО ВРЕМЯ…
Да, Эрик почти закончил
свой бэкенд
А Стэн и Кайл уже успели
разработать приложения
под iOS и Android для одного
и того же облачного бэкенда
18. ! Потратил кучу времени
на посторонние задачи
! Потратил силы и средства
на постройку своего велосипеда
! Проблемы с масштабированием,
надежностью
! Пока не начал рубить бабло
! Занимались бизнес-задачей –
писали мобильные приложения
! Воспользовались готовым облачным
бэкендом как сервисом
! Масштабируемость облака,
надежность и отказоустойчивость
! Рубят бабло уже с четырех приложений
ИТОГИ
19. А КЕННИ…?
Мы точно не знаем что
произошло с Кенни…
20. А КЕННИ…?
… похоже, он так и не
справился с установкой
рабочего окружения для
разработки под Android.
О, мой бог!
Андроид убил Кенни!
Сволочь!
45. Отправка почтового сообщения SendGrid
var
SendGrid
=
require('sendgrid').SendGrid;
function
sendEmail(item)
{
var
sendgrid
=
new
SendGrid('**username**',
'**password**');
sendgrid.send({
to:
'**email-‐address**',
from:
'**from-‐address**',
subject:
'New
to-‐do
item',
text:
Text
is:
'
+
item.text
},
function(success,
message)
{
…
});
}
46. Отправка SMS через Twilio
var
twilio
=
require('twilio');
exports.post
=
function(request,
response)
{
var
client
=
new
twilio.RestClient('[ACCOUNT_SID]',
'AUTH_TOKEN');
client.sendSms({
to:'[]',
from:'[]',
body:‘Hello!
Testing
Twilio
and
node.js'
},
function(error,
message)
{
…
});
};
48. Windows Azure Command-Line Tools
Windows
Windows Azure Command-Line Tools Installer
OSX
Windows Azure SDK Installer
Linux
Node.js
npm install azure-cli -g
49. Управление через командную строку
Создание
сервиса
azure
mobile
create
<service-‐name>
<server-‐admin>
<server-‐password>
Список
сервисов
azure
mobile
list
Удаление
сервиса
azure
mobile
delete
<service-‐name>
-‐a
-‐q
50. Управление через командную строку
Создание
таблицы
azure
mobile
table
create
<service-‐name>
<table-‐name>
Удаление
таблицы
azure
mobile
table
delete
<service-‐name>
<table-‐name>
-‐q
Регистрирование
скрипта
для
обработки
CRUD
azure
mobile
script
upload
todolist
table/
todoitems.insert.js
http://www.windowsazure.com/en-us/manage/linux/other-resources/
command-line-tools/#Commands_to_manage_mobile_services
52. Login
• Verb: POST
• URL: https://<service-name>.azure-mobile.net/login?mode=authenticationToken
• Uri Parameter: mode
• Request Headers:
• Body: JSON object
{"authenticationToken":“<authentication-provider-token>"} for Microsoft
{“access_token":“<authentication-provider-token>"} for Facebook and Google
• Response: JSON object
{"user":{"userId":"<authentication-provider>:cb392ceae24a44408ed863482b20f274"},
"authenticationToken":"<mobile-service-authentication-token>"}
Request Header Required Value
Accept No Set this header to application/json.
Content-Length Yes The length of the request body.
Content-Type No Set this header to application/json.
53. Query Records
• Verb: GET
• URL: https://<service_name>.azure-mobile.net/tables/<table_name>
• URI Parameters: $filter, $inlinecount, $orderby, $select, $skip, $top
• Request Headers:
• Response: data in JSON format
• Samples:
• GET https://plunko.azure-mobile.net/tables/todoitem
• GET https://plunko.azure-mobile.net/tables/todoitem/1
• GET https://plunko.azure-mobile.net/tables/todoitem?$filter=(complete%20eq%20false)
• GET https://plunko.azure-mobile.net/tables/todoitem?$filter=(complete%20eq%20false)&$orderby=text%20asc
Request Header Required Value
Accept No Set this header to application/json.
X-zumo-application Conditional
The application key of the mobile service. You must specify a valid application key when
required to access the table operation. This is the default table operation access permission.
X-zumo-auth Conditional
The service-generated authentication token for an authenticated user. You must specify a
token for an authenticated user when required to access the table operation.
54. Insert Record
• Verb: POST
• URL: https://<service_name>.azure-mobile.net/tables/<table_name>
• Request Headers:
• Body: new record in JSON format
• Response: The JSON representation of the inserted item, which includes the ID for the
item generated by the mobile service.
• Sample:
• POST https://plunko.azure-mobile.net/tables/todoitem
• Body: {"text" : "Go to Las Vegas", "complete": false, "when" : "don't know"}
Request Header Required Value
Accept No Set this header to application/json.
Content-Length Yes The length of the request body.
Content-Type No Set this header to application/json.
X-zumo-application Conditional The application key of the mobile service.
X-zumo-auth Conditional The service-generated authentication token for an authenticated user.
55. Update Record
• Verb: PATCH
• URL: https://<service_name>.azure-mobile.net/tables/<table_name>/<item_id>
• Request Headers:
• Body: The updated values encoded in JSON format, along with the optional id value of
the object.
• Response: The JSON representation of the updated item
• Sample:
• PATCH https://plunko.azure-mobile.net/tables/todoitem/1
• Body: {"text" : "Go to Barcelona", "complete": false, "when" : "don't know"}
Request Header Required Value
Accept No Set this header to application/json.
Content-Length Yes The length of the request body.
Content-Type No Set this header to application/json.
X-zumo-application Conditional The application key of the mobile service.
X-zumo-auth Conditional The service-generated authentication token for an authenticated user.
56. Delete Record
• Verb: DELETE
• URL: https://<service_name>.azure-mobile.net/tables/<table_name>/<item_id>
• Request Headers:
• Body: none
• Response: none
• Sample:
• DELETE https://plunko.azure-mobile.net/tables/todoitem/6
Request Header Required Value
X-zumo-application Conditional The application key of the mobile service.
X-zumo-auth Conditional The service-generated authentication token for an authenticated user.
58. Тарифные планы и ценообразование
$
Коммерческая
доступность - 99.9%
Бесплатно Standard Premium
Цена Бесплатно
(до 10 сервисов/
месяц)
$25 в месяц
(за экземпляр*)
$199 в месяц
(за экземпляр*)
Вызовы API 500K
(для всей подписки)
1.5M
(для каждого сервиса)
15M
(для каждого сервиса)
Активные
устройства
500 Без ограничений Без ограничений
Масштабировани
е
N/A До 6
Standard-экземпляров
До 10
Enterprise-
экземпляров
Работы
планировщика
Ограничено Включено Включено
SQL Database
(требуется)
20MB включено,
при превышении
применяются
тарифы
20MB включено, при
превышении
применяются тарифы
20MB включено, при
превышении
применяются тарифы
Подробно о ценах:
http://aka.ms/Xbkujw
59. Сравнение с Parse.com
Mobile Services Pros:
- SQL Database – возможность делать все, что вы можете
делать с SQL Server: развернуть у себя, запросы, отчеты, BI;
- CRON-сервисы, планировщик задач;
- Инфраструктура глобальной платформы Windows Azure:
надежность, присутствие по всему миру, интеграция
компонент, постоянное быстрое развитие;
- $25 plan, масштабирование в 10 раз, автомасштабирование;
- Расширение через Windows Azure Store.
62. www.aplana.com
Как
мы
используем
Azure
Mobile
Services
10/1/13
62
Server
(REST
API)
Azure
Mobile
Services
(Пуш
нотификация,
авторизация
в
соц.
сетях)
66. Спасибо за внимание!
Ваши вопросы
Бесплатный триал
http://WindowsAzure.com
Центр экспертизы на русском языке
http://AzureHub.ru
Группа «Windows Azure для всех» на Facebook
http://fb.com/groups/azurerus
Консультации от группы экспертов
azurerus@microsoft.com