Введение в облачные решения Microsoft

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

Показывать лекцию целиком

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

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

    ОперацияADO.NET Data ServicesHTTP-командаРесурсОписание
    Запрос 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 . Каждая сущность содержит следующие данные:

  • Группа контактов - Group ;
  • Имя контакта - NameOf ;
  • Дату создания контакта - DateOf ;
  • Адрес электронной почты - Email ;
  • Комментарии - 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();

    . DataServiceContext (Контекст сервиса данных) – один из основных классов сервиса данных ADO.NET , представляющий контекст времени выполнения для сервиса. Он обеспечивает API для вставки, обновления, удаления и запроса сущностей с помощью либо LINQ , либо RESTful URI и сохраняет состояние на стороне клиента. Более подробный пример работы с Windows Azure Table , начиная от создания приложения, будет рассмотрен в рамках соответствующего практического занятия.

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

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

  • http://windowsclient.net/blogs/anshulee/archive/2010/05/27/best-practices-for-ado-net-dataservices-when-using-azure-table-storage.aspx
  • http://mscerts.net/programming/programming%20windows%20azure%20%20%20table%20operations%20-%20understanding%20pagination.aspx
  • http://mscerts.net/programming/programming%20windows%20azure%20%20%20table%20operations%20-%20querying%20data.aspx
  • Вернуться к учебному плану