Как начать работать с данными в службах Mobile Services (службы для мобильных устройств)

Для знакомства с возможностями платформы  вы можетеактивировать Windows Azure бесплатно!

Тема практической работы — использование служб Windows Azure для мобильных устройств при работе с данными в приложении Android. Учимся загружать приложение, сохраняющее данные в памяти, создавать новую мобильную службу и интегрировать в нее приложение. Далее входим на портал управления Windows Azure и просматриваем данные, измененные во время выполнения этого приложения.

Примечание

Выполнив практическую работу, вы сможете использовать платформу Windows Azure с помощью служб Moblile Services для сохранения и извлечения данных из приложения Android. Фактически в этой работе мы повторим многое из того, что уже было сделано в проекте быстрого запуска Mobile Services. Если вы только начинаете с Mobile Services, рекомендуем вначале выполнить практическую работу Как начать работать со службами Mobile Services (службы для мобильных устройств).

При выполнении практической работы рассмотрим следующие основные этапы:

  1. Загрузка проекта приложения Android
  2. Создание мобильной службы
  3. Добавление таблицы данных в хранилище
  4. Обновление приложения и использование Mobile Services
  5. Проверка работы приложения с Mobile Services

Для выполнения практической работы вам потребуется пакет Mobile Services Android SDK, пакет Android SDK с интегрированной средой разработки (IDE) Eclipse и подключаемым модулем Android Developer Tools (ADT), а также Android версии 4.2 или выше.

Примечание

В работе имеются указания по установке Android SDK и Mobile Services Android SDK.

Загрузка проекта GetStartedWithData

Практическая работа построена на основе приложения GetStartedWithData, предназначенного для Android. Пользовательский интерфейс приложения аналогичен интерфейсу приложения, созданного при выполнении проекта быстрого запуска Mobile Services Android, за исключением того, что в нашем случае добавленные элементы сохраняются в локальной памяти.

1. Загрузите учебное приложение GetStartedWithData и разверните файлы на своем компьютере.

2. В Eclipse нажмите File (Файл), затем Import (Импорт), разверните пункт Android, выберите Existing Android Code into Workspace (Существующий код Android для рабочей области) и затем нажмите Next (Далее).

3. Нажмите Browse (Просмотреть), перейдите в папку с развернутыми файлами проекта и нажмите OK. Убедитесь, что установлен флажок проекта TodoActivity и нажмите Finish (Готово).

Файлы проекта импортируются в текущую рабочую область.

4. На вкладке Package Explorer (Обозреватель пакетов) разверните пункт GetStartedWithDatasrc и .com.example.GetStartedWithData, после чего изучите содержимое файла ToDoActivity.java.

Обратите внимание на комментарии, начинающиеся с //TODO. В них разъясняются действия, которые необходимо выполнить, чтобы приложение могло работать с вашей мобильной службой.

5. В меню Run (Выполнить) выберите Run As (Запуск от имени), нажмите 1 Android Application (1 приложение Android) и запустите проект.

Примечание

Проект можно выполнить как на телефоне под управлением Android, так и в эмуляторе Android. Для выполнения проекта на телефоне вам потребуется загрузить для него USB-драйвер.

Чтобы выполнить проект в эмуляторе Android, необходимо определить хотя бы одно виртуальное устройство Android (AVD). Для создания виртуальных устройств и управления ими требуется AVD Manager (Диспетчер AVD).

6. Напечатайте какой-нибудь значащий текст в приложении, например Complete the tutorial (Завершить практическую работу), и нажмите кнопку Add (Добавить).

Обратите внимание, что текст сохраняется в копии коллекции в памяти устройства и отображается в списке ниже.

Создание мобильной службы в портале управления

Теперь создадим мобильную службу для замены копии списка в памяти на хранилище данных. Чтобы создать мобильную службу, выполните следующие действия:

1. Войдите на портал управления Windows Azure.

2. Нажмите кнопку +NEW (Создать) в нижней части панели навигации.

3. Разверните список Compute (Вычисления) и Mobile Service (Мобильная служба) и нажмите кнопку Create (Создать).

Откроется диалоговое окно New Mobile Service (Новая мобильная служба).

4. На странице Create a mobile service (Создать мобильную службу) введите имя субдомена новой мобильной службы в текстовом поле URL и дождитесь окончания проверки имени. По окончании проверки нажмите стрелку вправо и перейдите на следующую страницу.

Откроется страница Specify database settings (Укажите параметры базы данных).

Примечание

Выполняя практическую работу, вы создадите экземпляр базы данных SQL и сервер. Эту базу данных можно будет повторно использовать и администрировать так же, как и любой другой экземпляр базы данных SQL. Если у вас уже есть база данных, которая находится в одном регионе с мобильной службой, вы можете выбрать пункт Use existing Database (Использовать существующую базу данных) и указать эту базу данных. Из-за дополнительных затрат на передачу данных и больших задержек не рекомендуется использовать базу данных, расположенную в другом регионе.

5. В поле Name (Имя) напечатайте имя новой базы данных, а в поле Login name — имя входа в систему. Это имя администратора нового сервера базы данных SQL. Напечатайте и подтвердите пароль. Чтобы завершить процесс, нажмите кнопку подтверждения (V).

Примечание

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

Новая мобильная служба создана, и вы можете использовать ее в своих мобильных приложениях. Теперь добавим новую таблицу, в которой будут храниться данные приложения. Эта таблица будет использоваться приложением вместо копии коллекции в памяти устройства.

Добавление новой таблицы в мобильную службу

Чтобы сохранять данные приложения в новой мобильной службе, необходимо сначала создать новую таблицу.

Примечание

Это таблица хранилища Windows Azure, а не таблица базы данных SQL, связанной с мобильной службой. Мы создали базу данных SQL, поскольку она необходима службам Windows Azure Mobile Service и использовалась бы ими для хранения данных в реальном режиме работы. Однако для простоты в данном примере нами используется таблица хранилища.

1. В портале управления нажмите Mobile Services (Мобильные службы), а затем — только что созданную мобильную службу.

2. Перейдите на вкладку Data (Данные) и нажмите +Create (Создать).

Откроется диалоговое окно Create new table (Создать новую таблицу).

3. В поле Table name (Имя таблицы) напечатайте текст ToDoItem и нажмите кнопку подтверждения (V).

Создается новая таблица хранилища TodoItem с заданными по умолчанию разрешениями, по которым любой пользователь приложения может получить доступ к данным таблицы и изменить их.

Примечание

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

4. Нажмите новую таблицу TodoItem и убедитесь, что в ней нет строк данных.

5. Нажмите вкладку Columns (Столбцы) и убедитесь, что в ней имеется только один столбец id, созданный автоматически.

Один столбец — это минимальное требование к таблице в службе Mobile Services.

Примечание

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

Теперь вы можете использовать новую мобильную службу в качестве хранилища данных приложения.

Обновление приложения для доступа к данным с помощью мобильной службы

Теперь, когда ваша мобильная служба готова к использованию, можно обновить приложение и сохранять элементы в Mobile Services вместо локальной коллекции.

1. Если вы еще не установили пакет Mobile Services Android SDK, загрузите его и разверните сжатые файлы.

2. Скопируйте файлы с расширением .jar из SDK в папку libs проекта GetStartedWithData.

3. На вкладке Package Explorer (Обозреватель пакетов) в Eclipse щелкните правой кнопкой мыши по папке libs и нажмите Refresh (Обновить). Появятся скопированные файлы .jar.

В результате в рабочую область добавляется ссылка Mobile Services SDK.

4. Откройте файл AndroidManifest.xml и добавьте следующую строку:

<uses-permission android:name="android.permission.INTERNET" />

Это позволит приложению получить доступ к мобильным службам в Windows Azure.

5. На вкладке Package Explorer (Обозреватель пакетов) откройте файл TodoActivity.java, содержащийся в пакете com.example.getstartedwithdata, и раскомментируйте следующие строки кода:

import com.microsoft.windowsazure.mobileservices.MobileServiceClient; import com.microsoft.windowsazure.mobileservices.MobileServiceTable; import com.microsoft.windowsazure.mobileservices.NextServiceFilterCallback; import com.microsoft.windowsazure.mobileservices.ServiceFilter; import com.microsoft.windowsazure.mobileservices.ServiceFilterRequest; import com.microsoft.windowsazure.mobileservices.ServiceFilterResponse; import com.microsoft.windowsazure.mobileservices.ServiceFilterResponseCallback; import com.microsoft.windowsazure.mobileservices.TableOperationCallback; import com.microsoft.windowsazure.mobileservices.TableQueryCallback; import java.net.MalformedURLException;

17.  Удалим в памяти копию списка, который в настоящее время используется приложением, и заменим его на мобильную службу. В классе ToDoActivity закомментируйте следующую строку кода, определяющую существующий список toDoItemList.

public List toDoItemList = new ArrayList();

1. После выполнения этого действия в проекте будут показаны ошибки построения. Найдите три оставшихся места, в которых используется переменная toDoItemList, и закомментируйте указанные разделы. Удалите строку import java.util.ArrayList. После этого копия списка будет полностью удалена из памяти.

2. Теперь добавим нашу мобильную службу. Раскомментируйте следующие строки кода:

3.  private MobileServiceClient mClient;

private private MobileServiceTable mToDoTable;

4. В портале управления нажмите Mobile Services (Мобильные службы), а затем — только что созданную мобильную службу.

5. Нажмите вкладку Dashboard (Панель мониторинга) и запишите значение Site URL (URL-адрес сайта). Затем нажмите Manage keys (Управление ключами) и запишите значение Application key (Ключ приложения).

Эти значения понадобятся вам для организации доступа к мобильной службе из кода приложения.

6. В методе onCreateраскомментируйте следующие строки кода, определяющие переменную MobileServiceClient:

 

try { // Создать экземпляр пользователя Mobile Service, используя полученные // URL-адрес службы Mobile Service и ключ mClient = new MobileServiceClient( "MobileServiceUrl", "AppKey", this).withFilter(new ProgressFilter()); // Получение экземпляра таблицы мобильной службы для использования mToDoTable = mClient.getTable(ToDoItem.class); } catch (MalformedURLException e) { createAndShowDialog(new Exception("There was an error creating the Mobile Service. Verify the URL"), "Error"); }

Данный код создает новый экземпляр MobileServiceClient, который используется для доступа к вашей мобильной службе. Кроме того, он создает экземпляр таблицы MobileServiceTable, который применяется для хранения данных прокси-сервера в мобильной службе.

  1. В приведенном выше коде замените значения MobileServiceUrl и AppKey на URL-адрес и ключ приложения, полученные из мобильной службы.
  2. Найдите класс ProgressFilter в конце файла и раскомментируйте его. Данный класс отображает индикатор загрузки, когда экземпляр MobileServiceClient выполняет сетевые операции.
  3. Раскомментируйте следующие строки в методе checkItem:
mToDoTable.update(item, new TableOperationCallback<ToDoItem>() { public void onCompleted(ToDoItem entity, Exception exception, ServiceFilterResponse response) { if(exception == null){ if (entity.isComplete()) { mAdapter.remove(entity); } } else { createAndShowDialog(exception, "Error"); } }

Этот код направляет обновленный элемент в мобильную службу и удаляет выбранные элементы из адаптера.

1. Раскомментируйте следующие строки в методе addItem:

mToDoTable.insert(item, new TableOperationCallback<ToDoItem>() { public void onCompleted(ToDoItem entity, Exception exception, ServiceFilterResponse response) { if(exception == null){ if (!entity.isComplete()) { mAdapter.add(entity); } } else { createAndShowDialog(exception, "Error"); } }

Этот код создает новый элемент и вставляет его в таблицу удаленной мобильной службы.

1. Раскомментируйте следующие строки в методе refreshItemsFromTable:

mToDoTable.where().field("complete").eq(false) .execute(new TableQueryCallback<ToDoItem>() { public void onCompleted(List<ToDoItem> result, int count, Exception exception, ServiceFilterResponse response) { if(exception == null){ mAdapter.clear(); for (ToDoItem item : result) { mAdapter.add(item); } } else { createAndShowDialog(exception, "Error"); } } });

При этом выполняется запрос мобильной службы и возвращаются все элементы, не отмеченные как завершенные. Элементы добавляются в адаптер для дальнейшей привязки.

Теперь, когда приложение обновлено для использования Mobile Services в качестве серверного хранилища, настало время проверить работу приложения с Mobile Services.

Проверка работы приложения с новой мобильной службой

  1. В меню Run (Выполнение) нажмите Run (Выполнить) и запустите проект в эмуляторе Android.
    После этого начнется выполнение приложения, созданного с помощью пакета Android SDK, который использует клиентскую библиотеку для отправки запроса на получение элементов из вашей мобильной службы.
  2. Как и раньше, напечатайте значащий текст и нажмите Add (Добавить).
  3. Новый элемент будет вставлен в мобильную службу.
    В портале управления нажмите Mobile Services (Мобильные службы), а затем — свою мобильную службу.
  4. Перейдите на вкладку Data (Данные) и нажмите Browse (Просмотреть).

Обратите внимание, что сейчас таблица TodoItem содержит данные с идентификаторами, сгенерированными службой Mobile Services. Кроме того, в нее автоматически добавлены столбцы в соответствии с классом TodoItem в приложении.

Завершим на этом практическую работу для Android Как начать работать с данными.