суббота, 30 марта 2013 г.

Создание мобильной службы в Windows Azure

В продолжение знакомства с Windows Azure я расскажу как можно легко создать мобильную службу в облаке. Чтобы выполнить данный пример потребуется:

  1. Наличие подписки на Windows Azure (можно бесплатное пробное использование);
  2. Установленный пакет Mobile Services SDK.
Процесс создания службы достаточно прост. Для этого, в панели управления Windows Azure , следует зайти в раздел "Мобильные службы" и выбрать пункт "Создать".






Указываем имя мобильной службы (в конечном варианте оно будет следующим: https://{You Name}.azure-mobile.net), экземпляр базы данных, в которой будут хранится данные (если база данных не создана, то ее потребуется создать) и регион, где будет располагаться служба. Важно отметить, что регион сервера базы данных и регион мобильной службы должны совпадать, иначе вы будете платить за лишний трафик.


На следующем этапе мастера потребуется указать имя базы данных, имя пользователя и пароль для подключения. Если ввели все верно, нажимаем OK и ожидаем завершения процесса создания.
После того, как мобильная служба создана - добавим таблицу, с которой служба будет взаимодействовать. Для этого в разделе "Данные" выберем пункт "Добавить таблицу":


Обратите внимание, что существует возможность установить уровень разрешений для каждой операции. Возможны следующие варианты:
  • Все (Это означает выполнение любых запросов на операции с таблицей. Этот вариант предоставляет всем свободный доступ к вашим данным);
  • Все с ключом приложения (Для выполнения операции требуется ключ приложения. Ключ приложения распространяется вместе с приложением. Поскольку распространяемый ключ не защищен, его нельзя считать токеном безопасности. Чтобы обеспечить безопасный доступ к данным ваших мобильных служб, вместо этого проверяйте подлинность пользователей до предоставления им доступа);
  • Только прошедшие проверку пользователи (К выполнению операции допускаются только пользователи, прошедшие проверку подлинности. Для ограничения доступа к таблицам на основе проверки подлинности пользователей также можно использовать скрипты):
  • Только скрипты и администраторы (Для выполнения этой операции требуется главный ключ службы, который дает права на ее выполнение только зарегистрированным скриптам или учетным записям администраторов).
Посмотреть ключ приложения или повторно создать новый можно в окне "Управление ключами доступа":


Для того, чтобы включить проверку подлинности, сначала потребуется зарегистрировать приложение в одном из поставщиков удостоверений:
Затем настройть мобильную службу указав код и секрет клиента (в зависимости от поставщика).



Один из примеров того, как подключить учетную запись Microsoft можно найти на странице Authenticate your Windows Store app with Live Connect single sign-on.

Базовая настройка мобильной службы завершена. Можно приступить к коду приложения. На главной странице службы можно загрузить предварительно настроенный проект для одной из платформ:
  • Windows Store (C# || JavaScript);
  • Windows Phone 8;
  • IOS;
  • Android;
  • HTML.
Я рассмотрю пример на C#. Для создания клиента мобильной службы используется класс MobileServiceClient, которому нужно передать адрес службы и ключ приложения:

App.xaml.cs:
    // This MobileServiceClient has been configured to communicate with your Mobile Service's url
    // and application key. You're all set to start working with your Mobile Service!
    public static MobileServiceClient MobileService = new MobileServiceClient(
            "https://wpfcsharp.azure-mobile.net/",
            "CwTqLFNZSSfFPefSkAakXMKqvmvvlq89"
        );

Доступ к записям таблицы также выглядит не сложно - вся работа происходит через интерфейс IMobileServiceTable, который определяет стандартные асинхронные CRUD операции:

MainPage.xaml.cs:
    public class TodoItem
    {
        public int Id { get; set; }

        [DataMember(Name = "text")]
        public string Text { get; set; }

        [DataMember(Name = "complete")]
        public bool Complete { get; set; }
    }

    // MobileServiceCollectionView implements ICollectionView (useful for databinding to lists) and 
    // is integrated with your Mobile Service to make it easy to bind your data to the ListView
    private MobileServiceCollectionView<TodoItem> items;

    private IMobileServiceTable<TodoItem> todoTable = App.MobileService.GetTable<TodoItem>();

    private async void InsertTodoItem(TodoItem todoItem)
    {
        // This code inserts a new TodoItem into the database. When the operation completes
        // and Mobile Services has assigned an Id, the item is added to the CollectionView
        await todoTable.InsertAsync(todoItem);
        items.Add(todoItem);                        
    }

    private void RefreshTodoItems()
    {
        // This code refreshes the entries in the list view be querying the TodoItems table.
        // The query excludes completed TodoItems
        items = todoTable
            .Where(todoItem => todoItem.Complete == false)
            .ToCollectionView();
        ListItems.ItemsSource = items;
    }

    private async void UpdateCheckedTodoItem(TodoItem item)
    {
        // This code takes a freshly completed TodoItem and updates the database. When the MobileService 
        // responds, the item is removed from the list 
        await todoTable.UpdateAsync(item);
        items.Remove(item);
    }

В коде видно, что класс TodoItem является контрактом, который определяется с помощью DataContractAttribute (т.к. имя класса совпадает с именем таблицы - этот атрибут в примере не указан) и DataMemberAttribute. В качестве источника данных для элементов пользовательского интерфейса выступает коллекция MobileServiceCollectionView, которая поддерживает как нотификацию изменений (IObservableVectorINotifyPropertyChangedINotifyCollectionChanged) так и дополнительную загрузку (ISupportIncrementalLoading).
В этом простом приложении мы можем получать и добавлять новые записи в таблицу TodoItem:




(Окно приложения и таблица в Windows Azure)

Как вы могли убедиться, создание мобильной службы в Windows Azure - это не такая сложная задача. Конечно, я привел вам только самый простой пример, но чем глубже - тем сложней и интересней. Успехов!

Комментариев нет:

Отправить комментарий