SlideShare une entreprise Scribd logo
1  sur  66
Télécharger pour lire hors ligne
"Windows Azure для мобильных платформ". Владимир Юнев, Microsoft
"Windows Azure для мобильных платформ". Владимир Юнев, Microsoft
5 мобильных платформ – 

один готовый бэкенд в облаке

от потребностей к использованию
Владимир Юнев
Microsoft
Agenda
Идеальный бэкенд для мобильных
приложений – какой он?
Мобильное приложение и данные
Мы создаем мобильное приложение
 Но где нам хранить данные?
?данные пользователя, таблицы рекордов, 

настройки приложения, логи и так далее
Мобильное приложение и данные
Мы создаем мобильное приложение
А давайте построим 

свое хранилище
VPS + OS
СУБД
Среда исполнения
Бизнес-логика
REST API
?
все еще
?
Данные
Идеальный бэкенд для мобильных приложений – это…
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, …
ИСТОРИЯ
 четыре друга
ЖИЛИ–БЫЛИ 4 ДРУГА
 Эрик, Стэн, Кайл и Кенни
И РЕШИЛИ ОНИ
СРУБИТЬ БАБЛО
говорят, народ хорошо платит 

за мобильные приложения
СКОРО ПЕРЕД НИМИ
ВСТАЛА ПРОБЛЕМА
где хранить данные 

из мобильных приложений?!
?
РЕШЕНИЕ
Хостинг 

и ОС
СУБД
Масштабирование,

Балансировка,

Отказоустойчивость,

Бэкапы
PHP, 

REST API
Бизнес-логика
Мобильный
бэкенд 

как сервис!
ШЛО ВРЕМЯ…
пока Эрик разбирался с
хостингом

Стэн и Кайл писали код
мобильных приложений
ШЛО ВРЕМЯ…
пока Эрику настраивали БД 

и писали код бэкенда

Стэн и Кайл писали код
мобильных приложений
ШЛО ВРЕМЯ…
пока Эрик обсуждал бизнес-
логику

Стэн и Кайл засабмитили
приложения в магазин
ШЛО ВРЕМЯ…
пока Эрик разбирался 

со сбоями и отказами

Стэн и Кайл начали рубить бабло 

со своих приложений
ШЛО ВРЕМЯ…
Да, Эрик почти закончил 

свой бэкенд



А Стэн и Кайл уже успели
разработать приложения 

под iOS и Android для одного 

и того же облачного бэкенда
!  Потратил кучу времени 

на посторонние задачи
!  Потратил силы и средства 

на постройку своего велосипеда
!  Проблемы с масштабированием,
надежностью
!  Пока не начал рубить бабло
!  Занимались бизнес-задачей – 

писали мобильные приложения
!  Воспользовались готовым облачным
бэкендом как сервисом
!  Масштабируемость облака, 

надежность и отказоустойчивость
!  Рубят бабло уже с четырех приложений
ИТОГИ
А КЕННИ…?
 Мы точно не знаем что
произошло с Кенни…
А КЕННИ…?
… похоже, он так и не
справился с установкой
рабочего окружения для
разработки под Android.
О, мой бог! 

Андроид убил Кенни!
Сволочь!
ДЕМО
Создание бэкенда.
Управление

и масштабирование
Создание бэкенда, мониторинг, логи
Масштабирование бэкенда
ДЕМО
Сохраняем данные в
облаке, получаем на
клиенте
URL и ключ доступа приложения
Создание и управление таблицами
Подключение к бэкенду
public static MobileServiceClient MobileService = 

new MobileServiceClient( "AppUrl", "AppKey" );
@property (nonatomic, strong) MSClient *client;

self.client = [MSClient
clientWithApplicationURLString:@"APPURL" 

applicationKey:@"APPKEY"];
private MobileServiceClient mClient;

mClient = new MobileServiceClient(
"MobileServiceUrl", "AppKey", this).withFilter(

new ProgressFilter());
var MobileServiceClient =
new WindowsAzure.MobileServiceClient(
'AppUrl', 'AppKey'),	
  
Обращение к таблице SQL
private IMobileServiceTable<TodoItem> todoTable =
App.MobileService.GetTable<TodoItem>();
await todoTable.InsertAsync(todoItem);
@property (nonatomic, strong) MSTable *table; 

self.table = [self.client tableWithName:@"TodoItem"];

[self.table insert:item completion:^(NSDictionary *result,
NSError *error) { 

NSUInteger index = [items count]; 

[(NSMutableArray *)items 

insertObject:item atIndex:index];
mToDoTable = mClient.getTable(ToDoItem.class);

mToDoTable.insert(item, new
TableOperationCallback<ToDoItem>() {

…
todoItemTable = MobileServiceClient.getTable('todoitem');

todoItemTable.insert({ text: itemText, complete: false })
.then(refreshTodoItems);	
  
Постраничные данные на клиенте
	
   	
   	
  .Skip(3).Take(3);	
  
	
   	
  query.includeTotalCount	
  =	
  YES;	
  //	
  Request	
  the	
  total	
  item	
  count	
  
	
   	
  query.fetchOffset	
  =	
  3;	
  
	
   	
  query.fetchLimit	
  =	
  3;	
  
	
   	
  mToDoTable.where().field("complete").eq(false).skip(3).top(3)
	
   	
  var	
  query	
  =	
  todoItemTable.where({	
  complete:	
  false	
  }).skip(3).take(3);	
  
Скрипты на сервере
'select	
  *	
  from	
  orders	
  where	
  country	
  =	
  "Russia"
tables.getTable('address');
log("Inserting	
  item	
  '%j'.",	
  item);	
  
ДЕМО Авторизуемся 

в социальных сетях
Аутентификация и бэкенд
Аутентификация пользователя
private MobileServiceUser user; 

user = await App.MobileService .LoginAsync(MobileServiceAuthenticationProvider.Facebook);
[client loginWithProvider:@"facebook" controller:self animated:YES completion:^

(MSUser *user, NSError *error) { 

[self refresh]; 

}];
mClient.login(MobileServiceAuthenticationProvider.Google, 

new UserAuthenticationCallback() { 

…
client.login("facebook").then(refreshAuthDisplay, function(error) { 

alert(error); 

}); 	
  
ДЕМО Рассылаем уведомления
миллионам пользователей
Push Notifications
Подключение учетных записей пуш-сервисов
Пуш-Уведомления
Windows	
  Store	
  
push.wns.sendToastText04(item.channel,	
  {text1:	
  text},	
  …	
  );	
  
Windows	
  Phone	
  
push.mpns.sendFlipTile(item.channel,	
  {title:	
  text},	
  …);	
  
iOS	
  
push.apns.send(item.token,	
  {	
  
	
  alert:	
  text,	
  	
  
	
  payload:	
  {	
  inAppMessage:	
  details	
  }	
  
},	
  …);	
  
Android	
  
push.gcm.send(item.registrationId,	
  item.text,	
  …);	
  
Единый бэкенд для пуш-уведомлений
function	
  sendNotifications()	
  {	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  
…	
  
	
  if	
  (deviceInfo.platform	
  ==	
  'iOS')	
  {	
  
	
   	
  push.apns.send(deviceInfo.pushToken,	
  	
  
	
   	
   	
  {	
  alert:	
  "New	
  something	
  created"	
  });	
  
	
  }	
  else	
  if	
  (deviceInfo.platform	
  ==	
  'Android')	
  {	
  
	
   	
  push.gcm.send(deviceInfo.pushToken,	
  	
  
	
   	
   	
  "New	
  something	
  created");	
  
	
  }	
  
…	
  
}	
  
ДЕМО Собственный код в бэкенде.
Git и Node.js – наш выбор
Создание своего REST Web API
Интеграция с Git
Планировщик (CRON)
ДЕМО 3rd party сервисы
Windows Azure Store
Отправка почтового сообщения 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)	
  {	
  
	
  …	
  
	
  	
  	
  	
  });	
  
}	
  
Отправка 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)	
  {	
  
…	
  
	
  	
  	
  	
  });	
  
};	
  
ДЕМО Управление через 

командную строку
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
Управление через командную строку
Создание	
  сервиса	
  
azure	
  mobile	
  create	
  <service-­‐name>	
  	
  
	
  <server-­‐admin>	
  <server-­‐password>	
  
Список	
  сервисов	
  
azure	
  mobile	
  list	
  
Удаление	
  сервиса	
  
azure	
  mobile	
  delete	
  <service-­‐name>	
  -­‐a	
  -­‐q	
  
Управление через командную строку
Создание	
  таблицы	
  
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
ДЕМО REST API
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.
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.
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.
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.
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.
ПРАЙСИНГ Сравнение с Parse.com
Примеры использования
Тарифные планы и ценообразование
$
Коммерческая
доступность - 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
Сравнение с Parse.com
Mobile Services Pros:
- SQL Database – возможность делать все, что вы можете
делать с SQL Server: развернуть у себя, запросы, отчеты, BI;
- CRON-сервисы, планировщик задач;
- Инфраструктура глобальной платформы Windows Azure:
надежность, присутствие по всему миру, интеграция
компонент, постоянное быстрое развитие;
- $25 plan, масштабирование в 10 раз, автомасштабирование;
- Расширение через Windows Azure Store.
Где используется Windows
Azure Mobile Services?
Приложения для iOS
Приложения для
Android
Приложение для
Windows Phone
www.aplana.com
Наши клиенты
10/1/13
 61
www.aplana.com
Как	
  мы	
  используем	
  Azure	
  Mobile	
  Services	
  
10/1/13
 62
Server	
  
(REST	
  API)	
  
Azure	
  Mobile	
  Services	
  
(Пуш	
  нотификация,	
  
авторизация	
  в	
  соц.	
  сетях)	
  
	
  
Примеры использования
ЗАКЛЮЧЕНИЕ Windows Azure Mobile
Services
CLOUD OS SUMMIT
Спасибо за внимание!
Ваши вопросы
Бесплатный триал

http://WindowsAzure.com
Центр экспертизы на русском языке

http://AzureHub.ru
Группа «Windows Azure для всех» на Facebook

http://fb.com/groups/azurerus
Консультации от группы экспертов

azurerus@microsoft.com

Contenu connexe

En vedette

Nuevas diapositivas 250 leila schabas
Nuevas diapositivas 250 leila schabasNuevas diapositivas 250 leila schabas
Nuevas diapositivas 250 leila schabasLeii Schabas
 
Иван Бибилов: Основы ООП
Иван Бибилов: Основы ООПИван Бибилов: Основы ООП
Иван Бибилов: Основы ООПYandex
 
Xarxes Socials i Administracio Pública II
Xarxes Socials i Administracio Pública IIXarxes Socials i Administracio Pública II
Xarxes Socials i Administracio Pública IINoemí Roig
 

En vedette (8)

Sunu6
Sunu6Sunu6
Sunu6
 
Nuevas diapositivas 250 leila schabas
Nuevas diapositivas 250 leila schabasNuevas diapositivas 250 leila schabas
Nuevas diapositivas 250 leila schabas
 
Иван Бибилов: Основы ООП
Иван Бибилов: Основы ООПИван Бибилов: Основы ООП
Иван Бибилов: Основы ООП
 
Opera
OperaOpera
Opera
 
intervenciones
intervencionesintervenciones
intervenciones
 
Ant zine
Ant zineAnt zine
Ant zine
 
Xarxes Socials i Administracio Pública II
Xarxes Socials i Administracio Pública IIXarxes Socials i Administracio Pública II
Xarxes Socials i Administracio Pública II
 
File4
File4File4
File4
 

Similaire à "Windows Azure для мобильных платформ". Владимир Юнев, Microsoft

Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...
Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...
Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...Ontico
 
DevCon 2016 - Xamarin
DevCon 2016 - XamarinDevCon 2016 - Xamarin
DevCon 2016 - XamarinAnton Shunkov
 
Наталья Ефимцева, Microsoft
Наталья Ефимцева, MicrosoftНаталья Ефимцева, Microsoft
Наталья Ефимцева, MicrosoftDiana Dymolazova
 
CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Mic...
CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Mic...CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Mic...
CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Mic...CodeFest
 
Инфраструктура распределенных приложений на nodejs / Станислав Гуменюк (Rambl...
Инфраструктура распределенных приложений на nodejs / Станислав Гуменюк (Rambl...Инфраструктура распределенных приложений на nodejs / Станислав Гуменюк (Rambl...
Инфраструктура распределенных приложений на nodejs / Станислав Гуменюк (Rambl...Ontico
 
Облако Microsoft Azure - введение в основные сервисы для разработки и инфраст...
Облако Microsoft Azure - введение в основные сервисы для разработки и инфраст...Облако Microsoft Azure - введение в основные сервисы для разработки и инфраст...
Облако Microsoft Azure - введение в основные сервисы для разработки и инфраст...Microsoft
 
Миграция в Azure Service Fabric
Миграция в Azure Service FabricМиграция в Azure Service Fabric
Миграция в Azure Service FabricAlexander Laysha
 
Микросервисы в .NET Core
Микросервисы в .NET CoreМикросервисы в .NET Core
Микросервисы в .NET CoreAndrew Gubskiy
 
Solit 2013, Разработка приложений в облаке на примере Amazon Web Services, Сл...
Solit 2013, Разработка приложений в облаке на примере Amazon Web Services, Сл...Solit 2013, Разработка приложений в облаке на примере Amazon Web Services, Сл...
Solit 2013, Разработка приложений в облаке на примере Amazon Web Services, Сл...solit
 
Windows Azure & NodeJS Microsoft SWIT 2012
Windows Azure & NodeJS Microsoft SWIT 2012 Windows Azure & NodeJS Microsoft SWIT 2012
Windows Azure & NodeJS Microsoft SWIT 2012 Dmytro Mindra
 
Android: Как создать свое первое приложение?
Android: Как создать свое первое приложение?Android: Как создать свое первое приложение?
Android: Как создать свое первое приложение?Kuban Dzhakipov
 
Sergey Gavruk - Mix11
Sergey Gavruk - Mix11Sergey Gavruk - Mix11
Sergey Gavruk - Mix11beloslab
 
Java осень 2012 лекция 5
Java осень 2012 лекция 5Java осень 2012 лекция 5
Java осень 2012 лекция 5Technopark
 
iOS and Android Mobile Test Automation
iOS and Android Mobile Test AutomationiOS and Android Mobile Test Automation
iOS and Android Mobile Test AutomationAndrii Dzynia
 
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)7bits
 
Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)
Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)
Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)Ontico
 
Программируемость фабрики ACI. Объектная модель, REST API, ACI Python SDK
Программируемость фабрики ACI. Объектная модель, REST API, ACI Python SDKПрограммируемость фабрики ACI. Объектная модель, REST API, ACI Python SDK
Программируемость фабрики ACI. Объектная модель, REST API, ACI Python SDKCisco Russia
 
презентация Адеев Николай, Artsofte для Tеlecom&Clouds 2014
презентация Адеев Николай, Artsofte для Tеlecom&Clouds 2014презентация Адеев Николай, Artsofte для Tеlecom&Clouds 2014
презентация Адеев Николай, Artsofte для Tеlecom&Clouds 2014Artsofte IT company
 
Полный цикл разработки и Xamarin.Forms при создании мобильного клиента «Интач...
Полный цикл разработки и Xamarin.Forms при создании мобильного клиента «Интач...Полный цикл разработки и Xamarin.Forms при создании мобильного клиента «Интач...
Полный цикл разработки и Xamarin.Forms при создании мобильного клиента «Интач...Binwell
 

Similaire à "Windows Azure для мобильных платформ". Владимир Юнев, Microsoft (20)

Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...
Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...
Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...
 
DevCon 2016 - Xamarin
DevCon 2016 - XamarinDevCon 2016 - Xamarin
DevCon 2016 - Xamarin
 
Наталья Ефимцева, Microsoft
Наталья Ефимцева, MicrosoftНаталья Ефимцева, Microsoft
Наталья Ефимцева, Microsoft
 
CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Mic...
CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Mic...CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Mic...
CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Mic...
 
Лекция Android
Лекция AndroidЛекция Android
Лекция Android
 
Инфраструктура распределенных приложений на nodejs / Станислав Гуменюк (Rambl...
Инфраструктура распределенных приложений на nodejs / Станислав Гуменюк (Rambl...Инфраструктура распределенных приложений на nodejs / Станислав Гуменюк (Rambl...
Инфраструктура распределенных приложений на nodejs / Станислав Гуменюк (Rambl...
 
Облако Microsoft Azure - введение в основные сервисы для разработки и инфраст...
Облако Microsoft Azure - введение в основные сервисы для разработки и инфраст...Облако Microsoft Azure - введение в основные сервисы для разработки и инфраст...
Облако Microsoft Azure - введение в основные сервисы для разработки и инфраст...
 
Миграция в Azure Service Fabric
Миграция в Azure Service FabricМиграция в Azure Service Fabric
Миграция в Azure Service Fabric
 
Микросервисы в .NET Core
Микросервисы в .NET CoreМикросервисы в .NET Core
Микросервисы в .NET Core
 
Solit 2013, Разработка приложений в облаке на примере Amazon Web Services, Сл...
Solit 2013, Разработка приложений в облаке на примере Amazon Web Services, Сл...Solit 2013, Разработка приложений в облаке на примере Amazon Web Services, Сл...
Solit 2013, Разработка приложений в облаке на примере Amazon Web Services, Сл...
 
Windows Azure & NodeJS Microsoft SWIT 2012
Windows Azure & NodeJS Microsoft SWIT 2012 Windows Azure & NodeJS Microsoft SWIT 2012
Windows Azure & NodeJS Microsoft SWIT 2012
 
Android: Как создать свое первое приложение?
Android: Как создать свое первое приложение?Android: Как создать свое первое приложение?
Android: Как создать свое первое приложение?
 
Sergey Gavruk - Mix11
Sergey Gavruk - Mix11Sergey Gavruk - Mix11
Sergey Gavruk - Mix11
 
Java осень 2012 лекция 5
Java осень 2012 лекция 5Java осень 2012 лекция 5
Java осень 2012 лекция 5
 
iOS and Android Mobile Test Automation
iOS and Android Mobile Test AutomationiOS and Android Mobile Test Automation
iOS and Android Mobile Test Automation
 
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)
 
Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)
Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)
Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)
 
Программируемость фабрики ACI. Объектная модель, REST API, ACI Python SDK
Программируемость фабрики ACI. Объектная модель, REST API, ACI Python SDKПрограммируемость фабрики ACI. Объектная модель, REST API, ACI Python SDK
Программируемость фабрики ACI. Объектная модель, REST API, ACI Python SDK
 
презентация Адеев Николай, Artsofte для Tеlecom&Clouds 2014
презентация Адеев Николай, Artsofte для Tеlecom&Clouds 2014презентация Адеев Николай, Artsofte для Tеlecom&Clouds 2014
презентация Адеев Николай, Artsofte для Tеlecom&Clouds 2014
 
Полный цикл разработки и Xamarin.Forms при создании мобильного клиента «Интач...
Полный цикл разработки и Xamarin.Forms при создании мобильного клиента «Интач...Полный цикл разработки и Xamarin.Forms при создании мобильного клиента «Интач...
Полный цикл разработки и Xamarin.Forms при создании мобильного клиента «Интач...
 

Plus de Yandex

Предсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of TanksПредсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of TanksYandex
 
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...Yandex
 
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров ЯндексаСтруктурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров ЯндексаYandex
 
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров ЯндексаПредставление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров ЯндексаYandex
 
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...Yandex
 
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...Yandex
 
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...Yandex
 
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...Yandex
 
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...Yandex
 
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...Yandex
 
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...Yandex
 
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...Yandex
 
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровКак защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровYandex
 
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...Yandex
 
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...Yandex
 
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...Yandex
 
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...Yandex
 
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...Yandex
 
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...Yandex
 
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...Yandex
 

Plus de Yandex (20)

Предсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of TanksПредсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of Tanks
 
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
 
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров ЯндексаСтруктурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
 
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров ЯндексаПредставление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
 
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
 
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
 
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
 
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
 
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
 
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
 
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
 
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
 
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровКак защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
 
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
 
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
 
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
 
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
 
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
 
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
 
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
 

"Windows Azure для мобильных платформ". Владимир Юнев, Microsoft

  • 3. 5 мобильных платформ – 
 один готовый бэкенд в облаке
 от потребностей к использованию Владимир Юнев Microsoft
  • 4. Agenda Идеальный бэкенд для мобильных приложений – какой он?
  • 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, …
  • 9. ЖИЛИ–БЫЛИ 4 ДРУГА Эрик, Стэн, Кайл и Кенни
  • 10. И РЕШИЛИ ОНИ СРУБИТЬ БАБЛО говорят, народ хорошо платит 
 за мобильные приложения
  • 11. СКОРО ПЕРЕД НИМИ ВСТАЛА ПРОБЛЕМА где хранить данные 
 из мобильных приложений?! ?
  • 13. ШЛО ВРЕМЯ… пока Эрик разбирался с хостингом
 Стэн и Кайл писали код мобильных приложений
  • 14. ШЛО ВРЕМЯ… пока Эрику настраивали БД 
 и писали код бэкенда
 Стэн и Кайл писали код мобильных приложений
  • 15. ШЛО ВРЕМЯ… пока Эрик обсуждал бизнес- логику
 Стэн и Кайл засабмитили приложения в магазин
  • 16. ШЛО ВРЕМЯ… пока Эрик разбирался 
 со сбоями и отказами
 Стэн и Кайл начали рубить бабло 
 со своих приложений
  • 17. ШЛО ВРЕМЯ… Да, Эрик почти закончил 
 свой бэкенд
 
 А Стэн и Кайл уже успели разработать приложения 
 под iOS и Android для одного 
 и того же облачного бэкенда
  • 18. !  Потратил кучу времени 
 на посторонние задачи !  Потратил силы и средства 
 на постройку своего велосипеда !  Проблемы с масштабированием, надежностью !  Пока не начал рубить бабло !  Занимались бизнес-задачей – 
 писали мобильные приложения !  Воспользовались готовым облачным бэкендом как сервисом !  Масштабируемость облака, 
 надежность и отказоустойчивость !  Рубят бабло уже с четырех приложений ИТОГИ
  • 19. А КЕННИ…? Мы точно не знаем что произошло с Кенни…
  • 20. А КЕННИ…? … похоже, он так и не справился с установкой рабочего окружения для разработки под Android. О, мой бог! 
 Андроид убил Кенни! Сволочь!
  • 24. ДЕМО Сохраняем данные в облаке, получаем на клиенте
  • 25. URL и ключ доступа приложения
  • 27. Подключение к бэкенду public static MobileServiceClient MobileService = 
 new MobileServiceClient( "AppUrl", "AppKey" ); @property (nonatomic, strong) MSClient *client;
 self.client = [MSClient clientWithApplicationURLString:@"APPURL" 
 applicationKey:@"APPKEY"]; private MobileServiceClient mClient;
 mClient = new MobileServiceClient( "MobileServiceUrl", "AppKey", this).withFilter(
 new ProgressFilter()); var MobileServiceClient = new WindowsAzure.MobileServiceClient( 'AppUrl', 'AppKey'),  
  • 28. Обращение к таблице SQL private IMobileServiceTable<TodoItem> todoTable = App.MobileService.GetTable<TodoItem>(); await todoTable.InsertAsync(todoItem); @property (nonatomic, strong) MSTable *table; 
 self.table = [self.client tableWithName:@"TodoItem"];
 [self.table insert:item completion:^(NSDictionary *result, NSError *error) { 
 NSUInteger index = [items count]; 
 [(NSMutableArray *)items 
 insertObject:item atIndex:index]; mToDoTable = mClient.getTable(ToDoItem.class);
 mToDoTable.insert(item, new TableOperationCallback<ToDoItem>() {
 … todoItemTable = MobileServiceClient.getTable('todoitem');
 todoItemTable.insert({ text: itemText, complete: false }) .then(refreshTodoItems);  
  • 29. Постраничные данные на клиенте      .Skip(3).Take(3);      query.includeTotalCount  =  YES;  //  Request  the  total  item  count      query.fetchOffset  =  3;      query.fetchLimit  =  3;      mToDoTable.where().field("complete").eq(false).skip(3).top(3)    var  query  =  todoItemTable.where({  complete:  false  }).skip(3).take(3);  
  • 30. Скрипты на сервере 'select  *  from  orders  where  country  =  "Russia" tables.getTable('address'); log("Inserting  item  '%j'.",  item);  
  • 31. ДЕМО Авторизуемся 
 в социальных сетях
  • 33. Аутентификация пользователя private MobileServiceUser user; 
 user = await App.MobileService .LoginAsync(MobileServiceAuthenticationProvider.Facebook); [client loginWithProvider:@"facebook" controller:self animated:YES completion:^
 (MSUser *user, NSError *error) { 
 [self refresh]; 
 }]; mClient.login(MobileServiceAuthenticationProvider.Google, 
 new UserAuthenticationCallback() { 
 … client.login("facebook").then(refreshAuthDisplay, function(error) { 
 alert(error); 
 });  
  • 37. Пуш-Уведомления Windows  Store   push.wns.sendToastText04(item.channel,  {text1:  text},  …  );   Windows  Phone   push.mpns.sendFlipTile(item.channel,  {title:  text},  …);   iOS   push.apns.send(item.token,  {    alert:  text,      payload:  {  inAppMessage:  details  }   },  …);   Android   push.gcm.send(item.registrationId,  item.text,  …);  
  • 38. Единый бэкенд для пуш-уведомлений function  sendNotifications()  {                                                   …    if  (deviceInfo.platform  ==  'iOS')  {      push.apns.send(deviceInfo.pushToken,          {  alert:  "New  something  created"  });    }  else  if  (deviceInfo.platform  ==  'Android')  {      push.gcm.send(deviceInfo.pushToken,          "New  something  created");    }   …   }  
  • 39. ДЕМО Собственный код в бэкенде. Git и Node.js – наш выбор
  • 43. ДЕМО 3rd party сервисы
  • 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)  {   …          });   };  
  • 47. ДЕМО Управление через 
 командную строку
  • 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.
  • 57. ПРАЙСИНГ Сравнение с Parse.com Примеры использования
  • 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.
  • 60. Где используется Windows Azure Mobile Services? Приложения для iOS Приложения для Android Приложение для Windows Phone
  • 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