Неактивна зіркаНеактивна зіркаНеактивна зіркаНеактивна зіркаНеактивна зірка
 

Лекція 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 сервісу таблиці, Помилка! Неприпустимий об'єкт гіперпосилання .. 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

(Для ознайомлення з повним текстом статті необхідно залогінитись)