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

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

Имя аккаунта: devstoreaccount1
Ключ аккаунта: Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==

Также локальный эмулятор хранилища не поддерживает большое количество конкуррентных подключений и клиентов и не умеет масштабироваться, и имеет отличную схему URI от схемы URI реальных сервисов хранилища Windows Azure. URI локального эмулятора определяет имя аккаунта как часть пути в URI, а не как часть доменного имени. Причина этого проста – в локальном эмуляторе нет резольвинга имён.

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

Блобы Реальное хранилище Windows Azure Локальный эмулятор хранилища
Размер блоба До 1 Тб Максимум 2 Гб.
Ошибки одновременного аплоада блока к несуществующему блобу Первый запрос создаст блоб, второй возвратит ошибку 409 (Конфликт) с текстом BlobAlreadyExists
REST PutBlob без указания ID лизинга может возвратить блоб, существующий в локальном эмуляторе и имеющий активный лизинг
Указание свойств блобов (Microsoft.WindowsAzure.StorageClient.

CloudBlobClient.SetServiceProperties(Microsoft.WindowsAzure.StorageClient.

Protocol.ServiceProperties)

.

Поддержка присутствует Поддержка отсутствует

Таблицы Реальное хранилище Windows Azure Локальный эмулятор хранилища
Insert-Or-Replace Entity, Insert-Or-Merge Entity, upsert-фичи Поддерживается Не поддерживается
Проекция сущностей Поддерживает Не поддерживается
Диапазоны данных Свойства типа Date в сервисе таблиц в локальном эмуляторе поддерживают максимальный размер, поддерживаемый SQL Server 2005 (начиная с 1 января 1753 года), все даты же перед этой датой будут сдвинуты на эту дату. Точность данных ограничена точностью, поддерживаемой SQL Server 2005.
Ключевые свойства Размер ключевых свойств таблицы partition key и row key должен быть менее 900 байт, общий же размер имени аккаунта, имени таблицы и имен свойств не должен превышать 900 байт (в связи с правилами формирования URI)
Размер записи Ограничен до 1 Мб
Размер пакета транзакций 4 Мб, ограничение проверяется Локальный

эмулятор не проверяет размер пакета транзакций, который должен быть меньше 4 Мб
Задание свойств сервиса, Microsoft.WindowsAzure.StorageClient.

CloudTableClient.SetServiceProperties(Microsoft.WindowsAzure.StorageClient.

Protocol.ServiceProperties)

.

Поддерживается Не поддерживается

Очереди Реальное хранилище Windows Azure Локальный эмулятор хранилища
Указание свойств (Microsoft.WindowsAzure.StorageClient.

CloudQueueClient.SetServiceProperties(Microsoft.WindowsAzure.StorageClient.

Protocol.ServiceProperties)

.

Поддержка присутствует Поддержка отсутствует

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