azure mobile backend
Post on 21-May-2015
221 Views
Preview:
DESCRIPTION
TRANSCRIPT
Azure back-end для iOS и Android
Особенности разработки и быстрый старт
Виталий Баум vitaly.baum@gmail.com
@butaji
Структура доклада
• Требования к мобильному приложению
• Особенности реализации
• Практические советы
• Как быстро построить прототип
http://bit.ly/1819mzC
Dealer Mobility
• Мобильная платформа для автодилеров
Новости, спецпредложения Запись на ТО, личный кабинет Оповещения с помощью push
Ресурсы
• Серверная команда – Разработчики .NET
• Мобильная команда – Разработчики iOS – Разработчики Android
Контракт взаимодействия
• Серверная команда не знает что писать • Клиентская команда ждёт пока серверная напишет что-‐нибудь
• Контракты бесполезно передавать с помощью POCO
Протокол взаимодействия
• HTTP REST/JSON • Запросы через HTTPS + AppKey
Проблема протокола: • Версионирование • Решено через /api/v1/…
Серверная сторона
• Всё начиналось в 2011 году • WCF REST Starter Kit
Что необходимо мобильному приложению от backend?
Что нужно для приложения?
• Хранение данных (База, Файлы) • Пуш уведомления • Управление пользователями • Трансляция звука/видео • Аналитика использования
Наш случай
• Есть .net разработчики, которые умеют хорошо готовить SQL Server
• Есть требование, что продукт можно ставить On Premise
Хранение данных
В Azure есть: • Реляционное хранилище • Blob storage
Решение: • SQL Server + Entity Framework
Синхронизация данных
• Требование – работа офлайн
• Есть две стратегии – Плохой кеш – Хороший кеш
Data Sync
• Вести аудит изменений данных – Фактически логировать CRUD операции – Или ввести атрибуты
• CreatedAt • UpdatedAt • Deleted
Data Sync
время
изменения данных данные для синхронизации
1.04.2013 2011
Data Sync
void Update(NewsItem newsItem) {
//…update database record EventLog.Append( “NewsItem”, “Updated”, newsItem.Id, newsItem.ToJson());
}
Data Sync
/changes?since=01.04.2013 {
News : { Added : [1,2,3,4,5], Updated: [2,3], Deleted: [5] }
}
Data Sync
Changes GetChanges(DateTime since) {
return EventLog .FetchSince(since) .GroupBy(x => x.ItemType);
}
Data Sync
/news/changes?since=01.04.2013 {
Added : [1,2,3,4,5], Updated: [2,3], Deleted: [5]
}
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]
}
Файлы / изображения
/image?id=123&width=720&height=360 • Разные разрешения экранов • Разные платформы • Ленивые контент-‐менеджеры J
Пуш уведомления
• Azure Worker Role • PushSharp • Пул сообщений (почта/пуши/смс) – http://sendgrid.com – http://twillio.com
Пуш уведомления
• 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
Управление пользователями
• Кастомная реализация – Basic auth – Facebook, twitter, vk.com, odnoklassniki – Профили пользователей
• Общий AppId на серверном и мобильном приложении
Аналитика использования
• Приложение использует Flurry, Google Analytics
• Админочка использует flurry api, чтобы показывать красивые графики пользователям
Аналитика использования
• Аудит: логирование всех вызовов методов – Статистика просмотра данных – Статистка регистраций пользователей – Статистика действий пользователей
Как построить прототип в кратчайшие сроки
Прототипирование
• Сделать за вечер • Не дороже 200$/мес • Мобильный API и может понадобиться админка
Backend as Service
• Windows Azure Mobile Services – Windows Store – Windows Phone 8 – iOS – Android – HTML/JavaScript – REST API
WAMS: iOS, Android
• Есть SDK для упрощения доступа к данным – Абстракция над подключением и таблицами – Асинхронные запросы с callback’ами для получения данных
• Язык запросов
Демо: iOS и Android
WAMS == node.js
• Пакеты для пушей (apns, mpns, wns, gcm) • Для Azure сервисов (azure) • Для HTTP запросов (request) • Для отправки email (sendgrid)
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
WAMS REST API
-‐ Можно бесшовно поменять оснастку на Web Api (OData Query Options)
Плюсы и минусы WAMS
• Callback hell • Debugging • Source control
Рекомендации по использованию WAMS
• Отключить Dynamic Scheme • Четко провести грань, когда прототип стал приложением и заранее запланировать миграцию
Что должен уметь Back-end для мобильных клиентов?
Возможности back-end
• Хранение данных • Отправка push • Управление пользователями • Трансляция видео/аудио • Аналитика использования
Спасибо за внимание!
top related