- Windows Azure Mobile Services – краткое руководство по использованию. Часть 1
- Windows Azure Mobile Services Concepts
- Создание нового мобильного сервиса
- Создание приложения Магазина Windows
- Запуск приложения
- Windows Azure [Mobile Services]
- Популярное
- С телефона в облака: Azure Mobile Services. С чего начать?
Windows Azure Mobile Services – краткое руководство по использованию. Часть 1
Посетителей: 499 | Просмотров: 734 (сегодня 0)
Типичной проблемой, которая может возникнуть перед разработчиком, создаюим приложение, управляющее данными – это вопрос, где их хранить, и, уже потом, как предоставлять к ним доступ на различных платформах, например, Windows Phone или iOS. В 2012 году командой разработчиков Windows Azure был представлен новый сервис, который помогает решать вышеперечисленные проблемы – Mobile Services.
Mobile Services – это механизм, которым может воспользоваться разработчик для создания мощного серверного бэкенда для своих приложений, как мобильных, так и, например, приложений Магазина Windows. Серверный бэкенд в случае Windows Azure Mobile Services поможет выполнять такие задачи, как хранение данных в облаке, реализация аутентификации, Push-уведомления.
Windows Azure Mobile Services очень полезен при разработке любого типа приложений:
- Windows Store
- Windows Store (JavaScript)
- Windows Phone 8
- iOS (iPhone, iPad)
- Android
- HTML
Что касается возможностей, предлагаемых сервисом для разработчиком, то Windows Azure Mobile Services предоставляет:
1) Аутентификация с использованием следующих провайдеров аутентификации:
- a. Microsoft Account
- b. Facebook
- c. Twitter
- d. Google
2) Обеспечение Push-уведомлений для приложений:
- a. Windows Store
- b. Windows Phone
- c. iOS
3) Авторизация операций с данными на различных уровнях:
- a. Everyone (изменять могут все)
- b. Everyone with Application Key (все, но с ключом приложения)
- c. Only Authenticated Users (только вошедшие в систему пользователи)
- d. Only Scripts and Admins (только скрипты и администраторы).
4) Планировать задачи, которые должны быть выполнены в определенный период.
Разумеется, что, как и практически все другие сервисы Windows Azure, Windows Azure Mobile Services могут быть масштабированы по запросу пользователя. Стоит отметить, что до 10 приложений в простом режиме бесплатны.
Windows Azure Mobile Services Concepts
Недавно была опубликована официальная версия Android SDK для разработки с использованием Windows Azure Mobile Services – теперь разработчики под Android имеют простой и эффективный метод для взаимодействия с возможностями Windows Azure Mobile Services — хранилие данных, аутентификации и Push-уведомлениям, которые в случае Android используют механизм Google Cloud Messaging (GCM) – в виде Java. Android SDK был выпущен в рамках сотрудничества с Microsoft Open Technologies, которые разработали SDK и в дальнейшей коллаборации с командой Windows Azure произвели работу по интеграции в портал. Этот Java SDK for Android может использовать для любых приложений, направленных на попадание в Google Play Store, Amazon App Store или любой другой магазин приложений для Android. Как и все остальные SDK для Mobile Services, Android SDK находится в свободном доступе на GitHub ( https://github.com/WindowsAzure/azure-mobile-services).
В этом кратком руководстве-переводе мы рассмотрим разработку приложения МагазинаWindows, использующегоWindowsAzureMobileServicesкак облачный бэкенд в различных задачах.
Windows Azure Mobile Services: введение в облачные сервисы для мобильных разработчиков
Приложение-планировщик задач будет выглядеть так, как на рисунке 1.
Рис. 1. Результат работы
Для того, чтобы успешно выполнить все задачи из этого цикла, необходимо иметь аккаунт Windows Azure с активированной функциональностью WAMS, либо зарегистрировать бесплатный аккаунт по ссылке Windows Azure Free Trial.
Создание нового мобильного сервиса
Войдите под своими учетными данными на портал управления Windows Azure.
Нажмите +NEW (рисунок 2).
Рис. 2. Создание мобильного сервиса
Разверните MobileService и нажмите Create (рисунок 3).
Рис. 3. Создание мобильного сервиса.
В появившемся диалоговом окне на странице Createamobileservice введите значение URL, которое будет далее использоваться для идентификации вашего мобильного сервиса, и дождитесь проверки его наличия. Нажмите Next. (рисунок 4).
Рис. 4. Создание мобильного сервиса
Дальше будет создан новый экземпляр SQL Database, который можно использовать не только для мобильного сервиса. Либо вы можете воспользоваться существующим экземпляром, нажав на UseexistingDatabase.
Введите в Name наименование новой базы данных, затем введите логин администратора в Loginname, введите два раза пароль и нажмите Next (рисунок 5).
Рис. 5. Создание мобильного сервиса
Мобильный сервис создан.
Создание приложения Магазина Windows
После создания мобильного сервиса можно воспользоваться функциональностью портала управления и создать либо новое приложение, либо внести изменение в уже существующее приложение, связав его с мобильным сервисом.
На портале управления нажмите MobileServices и выберите созданный мобильный сервис.
На вкладке quickstart выберите Windows и Create a new Windows Store app (рисунок 6).
Рис. 6. Вкладка Quickstart
Вам будет предложено выполнить три простых шага, которые необходимы для подключения приложения Магазина Windows к мобильному сервису (рисунок 7).
Рис. 7. Создание нового приложения Windows 8
Нажмите CreateTodoItemstable для создания таблицы для данных.
В Downloadandrunapplication выберите предпочитаемый язык приложения, нажмите Download.
Вам будет предложено загрузить проект для приложения, подключенного к мобильному сервису. Сохраните проект на локальный компьютер.
Запуск приложения
Откройте файл решения в Visual Studio 2012 Express для Windows 8 (рисунок 8).
Рис. 8. Интерфейс Visual Studio 2012 Express
Запустите проект, нажав F5.
Введите какой-либо текст в InsertaTodoItem и нажмите Save (рисунок 9).
Рис. 9. Интерфейс приложения
Нажатие на клавишу вызовет отправку POST-запросе на мобильный сервис в Windows Azure. Данные из запроса будут вставлены в таблицу TodoItem. Сущности, хранимые в таблицу, будут получаться мобильным сервисом и показаны в приложении.
На портале управления перейдите на вкладку Data и нажмите на таблице TodoItems (рисунок 10).
Рис. 10. Вкладка Data
Откроется страница с данными, хранящимися в таблице приложения (рисунок 11)
Windows Azure [Mobile Services]
Windows Azure — название платформы «облачных сервисов» от Microsoft, с помощью которой можно размещать в «облачных» датацентрах Microsoft и «виртуально»-неограниченно масштабировать приложения. Windows Azure реализует модель Platform as a service (PaaS), когда платформа предоставляется клиенту как сервис. Платформа Windows Azure предоставляет возможность разработки и выполнения приложений и хранения данных на серверах, расположенных в распределенных датацентрах.
Windows Azure Mobile Services предлагает облачную инфраструктуру для всех популярных мобильных платформ: Windows 8, Windows Phone, iOS и Android. На основе сервиса можно построить облачный бэкенд, на который перенести задачи по хранению данных, аутентификации и Push-уведомлений.
Популярное
Основные метрики мобильного приложения
52 ресурса для начинающих и профессиональных Android-разработчиков
Прекратите использовать спиннеры — есть кое что получше
С телефона в облака: Azure Mobile Services. С чего начать?
Автор: Анастасия Белокурова, .NET Developer DataArt.
Я расскажу, как и зачем использовать облачную систему Azure Mobile Services для ваших мобильных приложений. Для этого мы разберем небольшое приложение, на примере которого увидим, как это всё работает, затронем и практику, и теорию.
Но перед этим давайте вспомним, каковы преимущества облачных технологий и какое отношение эти технологии имеют к мобильным устройствам.
Преимущества облачных технологий
Термин «облачные вычисления» появился достаточно давно, но его значение немного менялось. Сначала облачными вычислениями называли просто распределенные вычисления. Но сейчас облачная платформа — большой набор удобных сервисов, которые вы можете использовать для решения своих задач.
Итак, почему же облака? Они предоставляют следующие преимущества вашему приложению:
- Масштабируемость.
- Надежность.
- Большой выбор сервисов.
Представьте, что вы запускаете небольшой интернет-магазин — сначала просто хотите проверить, будет ли он вообще востребован. Бюджет у вас небольшой. Поэтому вы пишете небольшое веб-приложение и размещаете его на своем компьютере, который не выключаете на ночь. К вашему сайту есть доступ извне, и он может выдержать, допустим, 10 пользователей одновременно. Со временем ваш сайт становится популярным, и вам уже нужно, чтобы он выдерживал 100 пользователей одновременно. Но ваш компьютер не способен справиться с такой нагрузкой. И тут вы начинаете думать, не превратить ли мне мою квартиру в серверную. Нет, это ужасно неудобно! Тогда вы покупаете сервера, предоставляемые хостингом. Теперь ваш сайт поддерживает 100 запросов в минуту и даже тысячу. Наконец в какой-то момент вы понимаете, что выходите на глобальный рынок, т. к. у вас очень много пользователей, круглосуточно, и сервера, которые вы купили, уже не справляются.
Тут мы подходим к первому преимуществу облачных платформ — они предоставляют масштабируемость практически всего практически в любой момент времени. И это делается очень просто, быстро и удобно: вам остается думать только о разработке, а не о размещении и нагрузке. Это первое преимущество.
Второе. Допустим, у вас успешный проект со множеством посетителей и пользователей, размещенный на серверах. И тут на ваши серверы падает метеорит или еще что-нибудь такое происходит. А на них хранились вообще все данные вашего проекта… Между тем, большая часть облачных платформ поддерживает репликацию: вы выбираете регион, в котором будет размещаться приложение, но при этом оно автоматически будет дублироваться на серверах в каком-то другом регионе. Поэтому облачные провайдеры всегда надежно хранят ваши данные: они обещают, что в форс-мажорных ситуациях они будут восстановлены минут за 20. Такой надежной защиты данных вы никогда не достигнете, если будете хранить свои данные в одном месте.
Третье, тоже очень важное преимущество: сейчас большая часть облачных провайдеров предоставляет множество сервисов- велосипедов, которыми можно пользоваться. Это код, который мы можем использовать в каждом проекте. Поэтому мы можем не писать каждый раз один и тот же код, не строить одну и ту же архитектуру — многое из этого нам предоставляется. Мы можем воспользоваться этим и думать только о том специфическом, что нужно для конкретного проекта.
Мобильные устройства и облачные технологии
Как мобильные устройства связаны с облаками?
Многие мобильные приложения работают только с подключенным интернетом. Поэтому они могут использовать логику, которая находится не на телефоне, а размещена где-то на серверах — это позволяет экономить ресурсы устройства.
Стоит отметить, что сейчас наблюдается тенденция к росту использования мобильных устройств в повседневной жизни — у одного человека может быть даже несколько таких устройств. И, конечно же, удобно, если данные между всеми этими мобильными устройствами синхронизируются. Если все наши устройства, например, от Apple — с этим нет никаких проблем. Но что делать, если у наших устройств разные ОС? Отдельно писать приложения для каждой из ОС? Это неудобно! И где хранить общие данные? Таким образом, можно выделить следующий список проблем:
- Необходим запуск на разных платформах.
- Неудобно писать одно приложение для разных платформ.
- Доступ к данным нужен из других приложений.
Облачные технологии помогают решить эти проблемы. Давайте рассмотрим решение на примере Azure Mobile Services.
Создаем приложение с помощью Azure Mobile Services
Приложение, которое мы рассмотрим, — список задач. Это простейшее приложение, которое вы можете скачать, зайдя на Azure Portal. В этом приложении можно создавать задачи, удалять их и переименовывать. Приложение включает в себя базовую функциональность для работы с сервисами Azure.
Нам нужно, чтобы это приложение работало на разных устройствах с разными ОС, и чтобы всё синхронизировалось. Посмотрим на примере списка задач, как написать мобильное приложение с использованием Azure Mobile Services при помощи PhoneGap. PhoneGap — фреймворк, который позволяет писать код один раз, а затем компилировать его для нескольких платформ. Другими словами, вам не нужно писать нативные приложения для каждой ОС.
Кроме PhoneGap, для разработки такого приложения понадобятся:
- SQL Azure — база, в которой будут храниться все ваши данные. Этот сервис работает независимо от Mobile Services, но в Mobile Services присутствует функциональность, которая позволяет удобней работать с SQL Azure.
- SDK: Android SDK, Visual Studio Express for Windows Phone 8 и/или Xcode — в зависимости от того, для какой платформы вы разрабатываете. Я вам покажу разработку на Visual Studio.
Чтобы решить стоящие перед нами задачи, нужно создать сервис Azure Mobile. Для этого нам нужно зайти на Azure Portal, и нажать «создать мобильный сервис» (compute>mobile service>create):
Что важно в мобильном сервисе? Его URL, база данных, с которой он будет работать (без нее мобильный сервис мы создать не можем), регион (место, где будут размещены ваши данные) и язык, на котором вы будете писать сервисную логику. Я, например, выбрала Node.js для этого приложения (также можно выбрать .NET).
После создания сервиса вы заходите на портал:
Здесь вы видите ваш сервис. Заходите в него и видите следующую «стартовую страницу»:
Тут можно выбрать одну из платформ, которую вы будете использовать для представления (UI) вашего приложения. То есть следующим шагом вы будете скачивать уже готовый проект со всеми нужными подключёнными библиотеками на нужном языке, с которыми вы будете дальше работать.
Конечно, можно создавать окружение в других средах, можно писать вообще с нуля, но удобнее будет скачать отсюда. Здесь можно скачать нативные приложения для Android, iOS или Windows, или просто HTML-приложение. Xamarin и PhoneGap — фреймворки, предоставляющие возможность кроссплатформенной разработки. Они отличаются тем, что в Xamarin вы пишете на .NET, а в PhoneGap — на JS; а затем вы просто компилируете код и запускаете приложение на нужной вам платформе.
Выбрав PhoneGap, вы видите такую вот небольшую пошаговую инструкцию:
Здесь перечислены нужные инструменты. На втором шаге вы должны создать таблицу для базового приложения — это будет таблица в базе данных, ассоциированная с вашим мобильным сервисом. Затем вы скачиваете приложение и можете им пользоваться. Всё!
Немного теории
А теперь я расскажу о том, как это всё работает.
Любое подобное приложение, которое работает с данными, будет иметь следующую структуру:
Конечно, ваше приложение может быть сложнее, но оно в любом случае включает эти части: представление (единственное, что будет размещено на устройстве), базу данных (с которой работает приложение) и серверную логику (то, что будет передавать данные из базы представлению). На схеме видно, что за базу данных и серверную логику отвечает Azure. Серверная логика у вас уже изначально написана Azure -— вы можете ее лишь немного видоизменять в соответствии с вашими потребностями.
Что еще предоставляет Azure, кроме хранения данных и логики?
- Аутентификация. Она осуществляется, в том числе, с помощью популярных соцсетей, т. ч. вы можете не писать для нее логику сами.
- Сервис уведомлений (push notifications), который показывает пользователю уведомления на его мобильном устройстве, если он в сети.
- Планировщик задач. Он нужен, например, чтобы ваше приложение, допустим, раз в неделю показывало пользователям какие-либо уведомления (в случае интернет-магазина это может быть информация о скидках).
База данных
Что касается базы данных, это — SQL-база. Вы можете писать к ней какие угодно запросы, и там есть индексация, которая вам нужна.
Очень приятная вещь — динамическая схема, которая позволяет вам не строить полностью все таблицы. Допустим, в вашем приложении предусмотрены четыре колонки в таблице, а туда ввели еще какие-то данные, для которых колонки не предусмотрены. Ничего страшного — всё добавится!
Базой данных легко можно управлять со всех возможных порталов и приложений, предназначенных для этого. Это может быть Azure Portal (считывание и удаление), SQL Portal (Silverlight), SQL Management Studio (Windows) и REST API.
REST API
REST API прилагается не только для работы с базой данных, но и к сервису вообще. Это единственный механизм взаимодействия с сервисами Azure, который есть у нашего смартфона. Все запросы будут идти через HTTP (хотя, надо сказать, сейчас уже появляются мобильные сервисы, позволяющие работать офлайн). Запросы будут выглядеть так:
Базовый адрес состоит из следующих элементов: [ваше название сервиса].azure-mobile.net/tables/[имя таблицы].
Колонки в todoitem
Еще немного поговорим о базе данных.
В любой таблице есть колонки “id”, «создан», «обновлен», «версия» и «удален». Эти колонки, за исключением «id», мы не получаем из базы данных по умолчанию, когда получаем элемент. Они используются для определения времени создания и т. д. Главное — помнить, что они есть, и не создавать что-то лишнее. Также есть две колонки (“text” и “complete”), созданные с помощью динамической схемы.
А вот пример наполнения таблицы (какой тип данных используется в каждой колонке, вы можете увидеть на изображении выше):
Колонка “_deleted” — реализация механизма «мягкого удаления». Т. е., когда вы удаляете какую-то запись, вы удаляете ее мнимо: она остается в таблице, но пользователи не будут ее видеть, а, если она понадобится, вы сможете ее быстро восстановить. Если же вам все-таки нужно совсем удалять запись при действии удаления, можно написать для этого свою реализацию — она пишется очень просто. Или же можно удалять запись вручную, если это какой-нибудь этап тестирования.
Серверная логика
Для мобильных сервисов поддерживаются два языка серверной логики: .NET Web API и Node.js.
Node.js предоставляет по умолчанию настроенные SQL-таблицы. Запросы к таблицам скрыты — мы не пишем сам запрос.
.NET Web API предоставляет все возможности, которые есть при разработке обычных серверных приложений. Можно даже подключать NoSQL-базы данных: MongoDB и Table Storage.
Пример реализации
Самое удобное, что есть в мобильных сервисах — это то, что вам не нужно никакого окружения, никакой среды, чтобы писать серверную логику. Вот, например, скриншот с портала:
Вы выбираете таблицу, выбираете вкладку “script” и видите готовые сценарии для четырех операций: вставки, обновления, удаления и получения. По умолчанию, сценарий сводится к “request.execute”. То есть мы получаем наш item, пользователя, совершающего эти действия, и объект, который отвечает за этот запрос. Здесь написана логика для валидации: она происходит уже здесь, а, если не проходит, отправляем особый объект “statusCodes” и некое сообщение, а “execute” не выполняем.
И вот я написала на портале этот код, сохранила его, и мое приложение, которое работает через интернет (я его не перекомпилировала и не изменяла), будет работать исходя из этой новой логики.
Что еще можно сделать с облачным сервисом?
Давайте еще раз посмотрим на «стартовую страницу» нашего сервиса:
Здесь есть вкладка “Data” — работа с базой данных. Там вы увидите список таблиц и сможете создать новые. В самой таблице вы увидите данные, которые в ней находятся. А в разделе “Script” увидите, какие сейчас есть операции для работы с таблицей.
Следующая вкладка — “API”. Мы можем написать свой API, если нам недостаточно простых функций создания, обновления и удаления, если у нас есть, например, какое-то более сложное взаимодействие между несколькими таблицами.
Есть “Scheduler” — планировщик задач.
“Push” — создание уведомлений.
“Identity” — можно настроить механизм аутентифакции в приложении. Все данные для идентификации будут в объекте “user”, который вы видели на скриншоте.
“Scale” — возможности масштабирования сервиса: можно менять количество ресурсов, которые выделяются под обслуживание ваших сервисов, настраивать количество push-уведомлений и т. д.
Что касается языков, сейчас вы можете писать приложения на .NET, Node.js, Java, PHP и Python, размещать их в Azure и взаимодействовать со всеми предоставляемыми сервисами.
Azure, конечно, не бесплатен, однако для учащихся существует программа DreamSpark, которая предоставляет многие возможности бесплатно. Есть также пробная подписка на месяц.
В целом, работать с Azure Mobile Services очень удобно и просто: все изменения вносятся на лету (по крайней мере, в случае Node.js) и ничего не нужно перекомпилировать. Код можно быстро изменить с любого устройства. Это идеальный вариант для простых приложений и для прототипов. А вот для сложных проектов вряд ли подходит — однажды мы столкнемся с ограничениями, которые будет довольно трудно обойти.
Напоследок хочу отметить, что с момента написании статьи Microsoft Azure успел представить новый сервис, Azure Mobile Apps, который в будущем предназначен заменить Azure Mobile Services. Но это — тема следующей статьи.