Опубликован: 28.01.2014 | Доступ: свободный | Студентов: 2033 / 171 | Длительность: 14:33:00
Самостоятельная работа 3:

Работа с блобами, таблицами и очередями Windows Azure Storage в локальном эмуляторе

< Лекция 6 || Самостоятельная работа 3: 123 || Лекция 7 >
Аннотация: Windows Azure Storage в локальном эмуляторе.

Создайте новый облачный проект (Cloud Service) в Visual Studio 2012.

Создание нового Cloud Service

увеличить изображение
Рис. 9.1. Создание нового Cloud Service

Добавьте в проект одну Web-роль.

Добавление Web-роли

увеличить изображение
Рис. 9.2. Добавление Web-роли

Добавьте функциональность работы с блобами. Добавьте в файл Default.aspx.cs в определение класса _Default следующий код:

    CloudStorageAccount _cloudStorageAccount;
        CloudBlobClient _blobClient;
        CloudBlobContainer _blobContainer;
        BlobContainerPermissions _permissions;
        CloudBlockBlob _blob;Добавьте в метод Page_Load код, приведенный ниже.
_cloudStorageAccount = CloudStorageAccount.DevelopmentStorageAccount;
            _blobClient = _cloudStorageAccount.CreateCloudBlobClient();
            _blobContainer = _blobClient.GetContainerReference("mycontainer");
            _blobContainer.CreateIfNotExists();
            _permissions = new BlobContainerPermissions();
            _permissions.PublicAccess = BlobContainerPublicAccessType.Blob;
            _blobContainer.SetPermissions(_permissions);
            _blob = _blobContainer.GetBlockBlobReference("image.jpg");
            using (var fileStream = System.IO.File.OpenRead(@"c:\temp\image.jpg"))
            {
                _blob.UploadFromStream(fileStream);
            }          
            Response.Write("<img style='width:20%;height:20%;' src='"+_blob.Uri+"'></img>");
            Response.Write("<br />");
            Response.Write("Файл загружен по адресу " + _blob.Uri);

Нажмите F5 для запуска приложения в локальном эмуляторе вычислений.

Интерфейс запущенного Cloud Service

увеличить изображение
Рис. 9.3. Интерфейс запущенного Cloud Service

Доступ к файлу может быть получен в браузере. Также доступ к хранилищу может быть произведен из Visual Studio Server Explorer.

Интерфейс редактирования Visual Studio 2012

увеличить изображение
Рис. 9.4. Интерфейс редактирования Visual Studio 2012

Добавьте в приложение поддержку таблиц Windows Azure Storage. Для этого добавьте в приложение класс с названием ImageEntity. Сущности данного класса будут работать как отображающие объектную модель в хранилище Windows Azure Storage.

Добавьте в класс ImageEntity код, приведенный ниже.

public ImageEntity(string name, long size)
        {
            this.PartitionKey = "1";
            this.RowKey = DateTime.Now.ToString();
            this.Name = name;
            this.Size = size;
        }

        public ImageEntity() { }

        public string Name { get; set; }

        public long Size { get; set; }

Добавьте в метод Page_Load файла Default.aspx.cs код, приведенный ниже.

CloudTableClient _tableClient = _cloudStorageAccount.CreateCloudTableClient();

            CloudTable _table = _tableClient.GetTableReference("images");
            _table.CreateIfNotExists();
          
            _blob.FetchAttributes();
            ImageEntity image = new ImageEntity(_blob.Name, _blob.Properties.Length);

            TableOperation insertOperation = TableOperation.Insert(image);

            _table.Execute(insertOperation);

            TableQuery<ImageEntity> query = new TableQuery<ImageEntity>().Where
(TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, "1"));

            Response.Write("<br />");
            foreach (ImageEntity entity in _table.ExecuteQuery(query))
            {
                Response.Write(String.Format("Сущность, добавленная {0}, имеет имя {1} и размер {2} <br />",
 entity.RowKey, entity.Name, entity.Size)
                    );
            }

Обратите внимание на выполняемый метод FetchAttributes. Он необходим для того, чтобы получить метаданные блоба, в которых, в том числе, находится информация о размере блоба.

Нажмите F5 для запуска приложения в локальном эмуляторе вычислений. Обновите несколько раз страницу.

Доступ к файлу может быть получен в браузере. Также доступ к таблице может быть произведен из Visual Studio Server Explorer.

Просмотр содержимого таблицы в Visual Studio 2012

увеличить изображение
Рис. 9.5. Просмотр содержимого таблицы в Visual Studio 2012

Добавьте в приложение поддержку очередей Windows Azure Storage. Для этого добавьте код, приведенный ниже, в метод Page_Load.

CloudQueueClient _queueClient = _cloudStorageAccount.CreateCloudQueueClient();
            CloudQueue _queue = _queueClient.GetQueueReference("myqueue");
            _queue.CreateIfNotExists();
            Response.Write("Сообщение добавляется в очередь "+_queue.Name +"<br />");
           CloudQueueMessage message = new CloudQueueMessage(_blob.Uri.ToString());
            _queue.AddMessage(message);
            Response.Write("Сообщение было добавлено<br />");
            CloudQueueMessage retrievedMessage = _queue.GetMessage();
            Response.Write("Получение первого сообщение из очереди<br />");
            _queue.DeleteMessage(retrievedMessage);
            Response.Write("Полученное сообщение:" +retrievedMessage.AsString + 
" с идентификатором:"+retrievedMessage.Id +" было добавлено в очередь:" +retrievedMessage.InsertionTime);

Нажмите F5 для запуска приложения в локальном эмуляторе вычислений.

Интерфейс развернутого Cloud Service

увеличить изображение
Рис. 9.6. Интерфейс развернутого Cloud Service

Доступ к файлу может быть получен в браузере. Также доступ к сущностям, хранящимся в очереди Windows Azure Storage, может быть произведен из Visual Studio Server Explorer.

Доступ к сущностям, хранящимся в очереди Windows Azure Storage из Visual Studio Server Explorer

увеличить изображение
Рис. 9.7. Доступ к сущностям, хранящимся в очереди Windows Azure Storage из Visual Studio Server Explorer
< Лекция 6 || Самостоятельная работа 3: 123 || Лекция 7 >
Руслан Муравьев
Руслан Муравьев

Сайт dreamspark пишет что код истек :(

Andriy Zymenko
Andriy Zymenko

Этот курс требует оновления https://portal.azure.com/#create/hub здесь нет пункта Web Site в разделе Compute. К тому же для создание трубуется подписка

Евгений Ермолов
Евгений Ермолов
Россия, Москва
Игорь Афанасьев
Игорь Афанасьев
Украина, Харьков, ХПИ, 2001