Поиск на сайте: Расширенный поиск


Новые программы oszone.net Читать ленту новостей RSS
CheckBootSpeed - это диагностический пакет на основе скриптов PowerShell, создающий отчет о скорости загрузки Windows 7 ...
Вы когда-нибудь хотели создать установочный диск Windows, который бы автоматически установил систему, не задавая вопросо...
Если после установки Windows XP у вас перестала загружаться Windows Vista или Windows 7, вам необходимо восстановить заг...
Программа подготовки документов и ведения учетных и отчетных данных по командировкам. Используются формы, утвержденные п...
Red Button – это мощная утилита для оптимизации и очистки всех актуальных клиентских версий операционной системы Windows...
OSzone.net Microsoft Разработка приложений Облако/Azure Windows Azure Mobile Services: надежная серверная часть для ваших приложений на устройствах RSS

Windows Azure Mobile Services: надежная серверная часть для ваших приложений на устройствах

Текущий рейтинг: 0 (проголосовало 0)
 Посетителей: 526 | Просмотров: 659 (сегодня 0)  Шрифт: - +
В течение последних нескольких лет разработчикам приходится уделять особое внимание трем основным областям: поддержке множества устройств и нескольких операционных систем, приложениям, которые опираются на асинхронные веб-сервисы, обычно размещенные в облаке, и широко варьируемому трафику, усложняющему планирование и предоставление ресурсов. Новый Microsoft Windows Azure Mobile Services (WAMS) упрощает реализацию программных архитектур, рассчитанных на среды такого типа (рис. 1).

*
Рис. 1. Типичная архитектура для поддержки множества устройств одним веб-сервисом

Mobile ServicesMobile Services
SecurityБезопасность
NotificationsУведомления
ScalabilityМасштабируемость


Хотя можно вручную создать и развернуть компоненты, необходимые для того, чтобы этот подход работал, разработчикам мобильных приложений на самом деле нужны конечные точки, предоставляющие подходящую функциональность и не требующие беспокоиться о нижележащей инфраструктуре. Вынужденные тратить время на поддержку структурированного или частично структурированного хранилища, аутентификацию пользователей и отправку уведомлений, программисты отвлекаются от создания собственно мобильных приложений.

Учитывайте, что в этой статье мы весьма вольно пользуемся термином «мобильное приложение». Эта клиентская технология (мобильное приложение) может быть ориентирована почти на все устройства: смартфон или планшет под управлением Windows 8 или Android, а также iPhone или iPad с iOS. Это возможно благодаря тому, что WAMS основан на открытых стандартах и обычных HTTP-запросах.

Создание вашего первого приложения на базе WAMS

WAMS доступен в режиме ознакомления и запускается всего несколькими щелчками. Просто зарегистрируйтесь на бесплатный пробный вариант по ссылке bit.ly/azuretestdrive и войдите для доступа к порталу Windows Azure, а затем выберите CREATE A NEW APP.

Как вы увидите, на экране появится окно, позволяющее быстро сделать несколько вещей. Здесь вы определяете URL, который будет использоваться вашим мобильным приложением для взаимодействия с доступными сервисами, и создаете новую реляционную базу данных (хотя вы могли бы предпочесть существующую базу данных Windows Azure SQL). В то же время будет создан набор конечных точек и сервисов на основе REST, которые будут предоставляться мобильным клиентам.

Далее вы указываете имя базы данных, сервер, имя для входа (логин), пароль и регион, как показано на рис. 2.

*
Рис. 2. Задание параметров базы данных

Буквально за пару секунд вы создаете новый мобильный сервис в одном из надежных, защищенных и глобально распределенных информационных центров Microsoft, как показано на рис. 3.

*
Рис. 3. Учетная запись мобильного сервиса

Теперь щелкните имя сервиса («brunoterkaly» на рис. 3) для доступа к управляющей панели (management dashboard).

Использование управляющей панели для создания приложения Windows 8

Получив доступ к управляющей панели, вы можете сгенерировать простое приложение Windows 8, демонстрирующее, как все его части стыкуются друг с другом. Обратите внимание на ссылку «Create a new Windows 8 application» на рис. 4.

*
Рис. 4. Основной портал для вашего проекта мобильного сервиса

Щелкните эту ссылку для запуска мастера WAMS. Чтобы создать базовое решение для устройств с Windows 8, вы должны выполнить следующие три основные операции.

Получить инструментарий Если вы еще не установили Visual Studio Express 2012 for Windows 8, сделайте это сейчас, щелкнув соответствующую ссылку. Кроме того, установите Windows Azure Mobile Services SDK, скачав его по ссылке bit.ly/TpWfxy. Учтите, что этот компонент требует, чтобы на компьютере с Windows 8 выполнялся Visual Studio 2012.

Создать реляционную таблицу для хранения своих данных Когда вы щелкнете кнопку Create TodoItem Table, мастер автоматически создаст таблицу на основе ранее созданной вами (или повторной используемой) базы данных Windows Azure SQL.

На случай, если вы не знакомы с базой данных Windows Azure SQL, поясню: это высокомасштабируемый сервис, предоставляющий функциональность SQL Server в облаке. Хотя вам не потребуется этого в данном проекте, вы можете подключить свою только что созданную базу данных с помощью таких инструментов, как SQL Server Management Studio (версии 2008 R2), или даже из других языков программирования.

Этот портал даже предоставляет простой интерфейс для управления вашими данными и структурами таблиц. Поскольку база данных Windows Azure SQL поддерживает традиционный протокол потока табличных данных (tabular data stream, TDS), вы можете использовать тот же инструментарий, что и при работе с типичной локальной базой данных SQL Server (рис. 5).

*
Рис. 5. Управляющая панель базы данных

Все серверы базы данных Windows Azure SQL автоматически защищаются внешним брандмауэром, правилами которого тоже можно управлять с этого портала. Важно помнить, что мастер WAMS делает все это за вас.

Сгенерировать и загрузить необходимый код для вашего приложения   Теперь, когда у нас есть необходимые данные и конечные точки для этого проекта, пора рассмотреть некоторый код. Заключительная операция на этом портале позволяет сгенерировать проект Visual Studio, который автоматически использует преимущества платформы WAMS. Вот как это делается.

  1. Выберите свой язык программирования (C# или JavaScript).
  2. Щелкнув Download, вы увидите диалоговое окно с запросом: открыть или сохранить сгенерированный код. Сохраните zip-файл.
  3. После разархивирования кода откройте проект в Visual Studio 2012.
  4. Теперь запустите код, чтобы увидеть, как он работает. Из меню DEBUG выберите START DEBUGGING. Введите TodoItem, щелкните Save, а затем Refresh, как показано на рис. 6.
  5. Вы можете открыть сгенерированную базу данных с помощью такого инструмента, как SQL Server Management Studio (или средства управления на портале), и просмотреть ее данные. Вы заметите, что в соответствующую таблицу добавлен новый элемент todo.

*
Рис. 6. Запуск приложения

Исследование кода

Давайте заглянем «за кулисы», чтобы узнать, что же там происходит. Основное место для всего этого кода — файл MainPage.xaml.cs. Переключитесь в Solution Explorer и дважды щелкните MainPage.xaml.cs — вы увидите код, показанный на рис. 7.

Рис. 7. Класс TodoItem

19  public class TodoItem
20  {
21    public int Id { get; set; }
22
23    [DataMember(Name = "text")]
24    public string Text { get; set; }
25
26    [DataMember(Name = "complete")]
27    public bool Complete { get; set; }
28  }
29
30  public sealed partial class MainPage : Page
31  {
32    // MobileServiceCollectionView реализует ICollectionView
33    // (полезен для связывания списков с данными)
34    // и интегрируется с вашим MobileService, упрощая
      // связывание ваших данных с ListView
35    private MobileServiceCollectionView<TodoItem> items;
36
37    private IMobileServiceTable<TodoItem> todoTable =
38      App.MobileService.GetTable<TodoItem>();
42
43    public MainPage()...
50
51    private async void InsertTodoItem(TodoItem todoItem)…
60
61    private void RefreshTodoItems()…
68
69    private async void UpdateCheckedTodoItem(TodoItem item)…
73
74    private void ButtonRefresh_Click(object sender, RoutedEventArgs e)…
79
80    private void ButtonSave_Click(object sender, RoutedEventArgs e)…
86
87    private void CheckBoxComplete_Checked(object sender, RoutedEventArgs e)…
88
89    protected override void OnNavigatedTo(NavigationEventArgs e)...
91  }

Вот что происходит в коде.

  • В строках 19–28 создается TodoItem — объект, представляющий данные, которые мы хотим сохранить в базе данных Windows Azure SQL. Он представляет ту же структуру данных, что и нижележащая таблица в базе данных, но они не обязательно должны быть одинаковы. Атрибуты DataMember влияют на то, как сериализуется элемент, а также на названия реальных полей в базе данных Windows Azure SQL. Это позволяет присваивать полю базы данных имя, отличное от содержимого соответствующего свойства в Microsoft .NET Framework.
  • В строке 35 создается набор элементов, отображаемых в списке на главной странице приложения. Этот набор связывается с нижележащим элементом управления «список». Он заполняется из объекта в строке 37.
  • В строке 37 создается IMobileServiceTable набора TodoItems с именем todoTable. Объект todoTable действует как оболочка RESTful HTTP API, предоставляемого WAMS, и позволяет вам использовать LINQ-запросы на клиентской стороне вместо ручных HTTP-вызовов REST API для получения данных из таблицы TodoItem базы данных Windows Azure SQL. Результаты LINQ-запросов сохраняются в наборе элементов, созданном ранее, а затем связываются с ListView для отображения. Тот же объект todoTable поддерживает асинхронные операции вставки, обновления и удаления в таблице TodoItem базы данных Windows Azure SQL. Это весь код, который вы обычно пишете самостоятельно. Короче говоря, разработчик избавляется от необходимости написания массы инфраструктурного кода для выполнения типичных операций CRUD (создания, чтения, обновления и удаления).
  • В строке 51 элементы todo асинхронно вставляются в таблицу и происходит обновление набора элементов.
  • В строке 61 набор элементов (items) обновляется последними данными из таблицы todo и связывается со списком.
  • В строке 69 выдаются запросы на асинхронное обновление нижележащей таблицы в базе данных SQL, и этот элемент удаляется из набора items.
  • В строке 74 список обновляется данными из базы.
  • В строке 80 в таблицу todo вставляется новая запись.
  • В строке 87 нижележащая таблица обновляется, чтобы отразить тот факт, что был установлен флажок.

Файл App.xaml.cs также стоит изучить, потому что в нем хранится стартовый код. Клиентский объект типа MobileServiceClient абстрагирует сложности вызова RESTful-сервиса, требующего передачи ключа приложения (он генерируется при создании Windows Azure Mobile Service). Вы можете получить этот ключ либо на портале Windows Azure Mobile Services, либо из файла App.xaml.cs:

sealed partial class App : Application
  {
    // Этот MobileServiceClient сконфигурирован
    // на URL вашего мобильного сервиса и ключ приложения;
    // вы уже готовы начать работу со своим мобильным сервисом!
    public static MobileServiceClient MobileService =
      new MobileServiceClient(
      "https://brunoterkaly.azure-mobile.net/",
      "rsECynSsGJmPiHmydyTGEYOSlrbCgr27"
);

Как выполняются запросы

Здесь все становится интереснее. Анализировать HTTP-запросы, генерируемые клиентом Windows 8, можно с помощью прокси-средства веб-отладки, например Fiddler (его можно бесплатно скачать с fiddler2.com). Но перед использованием Fiddler для этой цели вы должны разрешить Fiddler захватывать и расшифровывать HTTP-трафик. Для этого в Fiddler выберите Tools | Fiddler Options, откройте вкладку HTTPS и установите флажки Capture HTTPS CONNECTs и Decrypt HTTPS traffic.

После запуска этого средства перейдите на вкладку Composer и действуйте следующим образом, как показано на рис. 8 и 9.

  1. Выберите команду, такую как GET, а затем введите URL (для нашего проекта это https://brunoterkaly.azuremobile.net/tables/TodoItem) и соответствующий заголовок, например https://brunoterkaly.azuremobile.net/tables/TodoItem.
  2. Щелкните Execute.
  3. Щелкните правой кнопкой мыши сеанс в левой секции.
  4. Выберите Inspect в New Window.
  5. Появится секция веб-сеанса. Откройте вкладку Response.
  6. Выберите вкладку JSON. Теперь вы сможете видеть данные, которые поступают от ранее созданного мобильного сервиса Windows Azure. Это те самые данные, которые вы видели в базе данных SQL Server.

*
Рис. 8. Анализ сгенерированных HTTP-запросов с помощью Fiddler

*
Рис. 9. JSON-код, возвращаемый из WAMS

По сути, это означает, что к мобильному сервису Windows Azure можно обращаться практически из любой среды, так как HTTP-запросы и RESTful-вызовы широко поддерживаются множеством платформ и языков программирования. Заметьте, что Windows Azure Mobile Services SDK for Windows 8 упрощает их использование в приложениях Windows 8. Кроме того, вскоре появятся клиентские библиотеки для iOS и Android.

Заключение

Windows Azure Mobile Services облегчает жизнь разработчикам мобильного ПО, автоматизируя этапы создания серверной части на основе открытых стандартов, поддерживая устройства разных типов и различные операционные системы. Более того, WAMS предоставляет надежную и защищенную инфраструктуру в облаке, которую можно масштабировать в зависимости от трафика и потребностей, что позволяет программистам сосредоточиться на оптимизации своих приложений и данных.

Конечно, вам предстоит еще многому научиться, особенно в таких областях, как передача уведомлений и аутентификация. Механизм передачи уведомлений позволяет легко отправлять уведомления приложению Windows 8 без написания, тестирования или управления инфраструктурным кодом серверной части. Кроме того, WAMS исключает необходимость написания, конфигурирования и тестирования собственных решений в области аутентификации и управления пользователями для приложений Windows 8. Мы обязательно обсудим эти технологии в будущих статьях этой новой рубрики.

Автор: Бруно Теркали, Рикардо Виллалобос  •  Иcточник: MSDN Magazine  •  Опубликована: 11.04.2013
Нашли ошибку в тексте? Сообщите о ней автору: выделите мышкой и нажмите CTRL + ENTER
Теги:  


Оценить статью:
Вверх
Комментарии посетителей
Комментарии отключены. С вопросами по статьям обращайтесь в форум.