Тема: Windows Azure table - программирование.
цель: Изучить Windows Azure table - программирование.
План:
1. Базовые операции таблиц и сущностей
2. Контроль версий
3. Класс сущностей
4. Создание таблицы
Базовые операции таблиц и сущностей:
-создание;
-извлечение с применением фильтров;
-обновление (только сущности);
-удаление;
-транзакции над группами сущностей, находящимися в одной таблице и секции;
Таблица интерфейсов программирования приложений, поддерживаемых таблицами и сущностями (источник http://msdn.microsoft.com/ru-ru/library/ee872426.aspx)
Операция |
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, начиная от создания приложения, будет рассмотрен в рамках соответствующего практического занятия.
Контрольные вопросы:
1. Перечислите базовые операции таблиц и сущностей
2. Что такое контроль версий и Класс сущностей
Как создают таблицы
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.