Опубликован: 30.05.2011 | Доступ: свободный | Студентов: 2275 / 157 | Оценка: 4.12 / 4.41 | Длительность: 12:00:00
Лекция 12:

Windows Azure Table - программирование

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

Базовые операции таблиц и сущностей

  • создание;
  • извлечение с применением фильтров;
  • обновление (только сущности);
  • удаление;
  • транзакции над группами сущностей, находящимися в одной таблице и секции;

Таблица интерфейсов программирования приложений, поддерживаемых таблицами и сущностями (источник http://msdn.microsoft.com/ru-ru/library/ee872426.aspx)

Таблица 12.1.
Операция ADO.NET Data Services HTTP-команда Ресурс Описание
Запрос LINQ Query GET Таблица Возвращает список всех таблиц данной учетной записи хранилища. В случае наличия фильтра таблицы возвращаются соответственно фильтру.
Сущность Возвращает все сущности заданной таблицы или подмножество сущностей, если задан фильтр.
Обновление всей сущности UpdateObject & SaveChanges(SaveChangesOptions.ReplaceOnUpdate) PUT Сущность Обновляет значения свойств сущности. Операция PUT замещает всю сущность и может использоваться для удаления свойств.
Частичное обновление сущности UpdateObject & SaveChanges() MERGE Сущность Обновляет значения свойств сущности.
Создание новой сущности AddObject & SaveChanges() POST Таблица Создает новую таблицу в это учетной записи хранилища.
Сущность Вставляет новую сущность в названную таблицу.
Удаление сущности DeleteObject & SaveChanges() DELETE Таблица Удаляет таблицу в данной учетной записи хранилища.
Сущность Удаляет сущность из названной таблицы.
Транзакция над группой сущностей SaveChanges(SaveChangesOptions.Batch) POST $batch Поддержка транзакции над группой сущностей обеспечивается посредством пакетной операции над сущностями одной таблицы с одинаковым ключом секции. В ADO.NET Data Services опция SaveChanges требует, чтобы запрос выполнялся как одна транзакция.

Расширенные операции над таблицами и сущностями:

  • разбиение на страницы;
  • обработка конфликтов параллельных обновлений.

Контроль версий

Для обеспечения контроля версия для всех решений Windows Azure Storage был введен HTTP-заголовок "x-ms-version". Все изменения API хранилища регистрируются как версии с помощью этого заголовка. Это обеспечивает возможность выполнять предыдущие версии команд и при этом расширять возможности существующих команд и вводить новые.

Заголовок "x-ms-version" должен задаваться для всех запросов к Windows Azure Storage . При поступлении анонимного запросе без указания версии система хранения выполнит самую старую из поддерживаемых версию этой команды.

Класс сущностей

Схема таблицы описывается как C#-класс. Такую модель использует ADO.NET Data Services . Схема известна только клиентскому приложению и упрощает доступ к данным. Сервер схему не применяет.

Для примера рассмотрим работу с таблицей контактов - Contact .

Рассмотрим описание сущностей Contact , хранящихся в таблице Contacts . Каждая сущность содержит следующие данные:

  1. Группа контактов - Group ;
  2. Имя контакта - NameOf ;
  3. Дату создания контакта - DateOf ;
  4. Адрес электронной почты - Email ;
  5. Комментарии - Comment.

Для данной таблицы "Contacts" в качестве ключа секции используется Group, а в качестве ключа строки - NameOf. PartitionKey и RowKey – ключи таблицы Contacts, они объявляются посредством атрибута класса DataServiceKey (Ключ сервиса данных). Кроме ключей, в качестве свойств объявлены характерные для данного вида сущностей атрибуты. Все свойства имеют открытые ( public ) методы считывания и присвоения значения и хранятся в таблице Windows Azure Table . Итак, в примере ниже:

public class Contacts
{
    public string PartitionKey { get; set; } 
    public string RowKey { get; set; } 

    public datetime DateOf { get; set; }
    public String Email { get; set; }
    public String Comments { get; set; }
}

Создание таблиц

Далее рассмотрим, как создать таблицу Contacts для учетной записи хранилища. Создание таблицы аналогично созданию сущности в основной таблице "Tables" . Эта основная таблица определена для каждой учетной записи хранилища, и имя каждой таблицы, используемой учетной записью хранения, должно быть зарегистрировано в основной таблице. Описание класса основной таблицы приведено ниже, где свойство TableName (Имя таблицы) представляет имя создаваемой таблицы.

public class TableStorageTable
{    public string TableName { get; set; }
}

Фактическое создание таблицы происходит следующим образом:

// Uri сервиса: "http://<Account>.table.core.windows.net/"
DataServiceContext context = new DataServiceContext(serviceUri);
TableStorageTable table = new TableStorageTable("Contacts ");
// Создаем новую таблицу, добавляя новую сущность
// в основную таблицу "Tables"
context.AddObject("Tables", table);
// результатом вызова SaveChanges является отклик сервера
DataServiceResponse response = context.SaveChanges();

serviceUri – это uri сервиса таблицы, http://<Здесь указывается имя учетной записи>.table.core.windows.net/. DataServiceContext (Контекст сервиса данных) – один из основных классов сервиса данных ADO.NET , представляющий контекст времени выполнения для сервиса. Он обеспечивает API для вставки, обновления, удаления и запроса сущностей с помощью либо LINQ , либо RESTful URI и сохраняет состояние на стороне клиента. Более подробный пример работы с Windows Azure Table , начиная от создания приложения, будет рассмотрен в рамках соответствующего практического занятия.

СПИСОК МАТЕРИАЛОВ ДЛЯ САМОСТОЯТЕЛЬНОГО ИЗУЧЕНИЯ

Программирование Windows Azure Table

  1. http://windowsclient.net/blogs/anshulee/archive/2010/05/27/best-practices-for-ado-net-dataservices-when-using-azure-table-storage.aspx
  2. http://mscerts.net/programming/programming%20windows%20azure%20%20%20table%20operations%20-%20understanding%20pagination.aspx
  3. http://mscerts.net/programming/programming%20windows%20azure%20%20%20table%20operations%20-%20querying%20data.aspx
Роза Мальцева
Роза Мальцева
Игнат Гринько
Игнат Гринько

Примерно месяц назад получил на сайте код Дримспарк, сегодня вводил его на сайте Дримспарк, пишет: Недействительный код проверки. Проверьте правильность введенного кода. Код вводил методом: скопировать-вставить.