Краткое руководство по написанию кода: создание приложения, хранящего файл в хранилище Windows Azure

Платформа Windows Azure

Дата обновления: 23 марта 2011 г.

Ниже приводятся этапы создания консольного приложения, которое использует API служб хранилища Windows Azure. В частности, с помощью данного образца файл будет отправляться в службу больших двоичных объектов Windows Azure.

Этот образец не развертывается в Windows Azure: он демонстрирует вызов библиотеки клиента хранилища Windows Azure с помощью автономного консольного приложения.

Перед продолжением убедитесь, что соблюдены предварительные условия, перечисленные в документе Windows Azure: краткое руководство по написанию кода. Если у вас нет подписки на Windows Azure, вы можете дойти до этапа 10 данного раздела, чтобы загрузить файл в локальную службу больших двоичных объектов, выполняемую в эмуляторе хранилища Windows Azure.

Создание приложения, хранящего файл в большом двоичном объекте Azure

Чтобы создать приложение, отправляющее файл в большой двоичный объект, выполните следующие действия.

  • Запустите Microsoft Visual Studio 2010.
  • Выберите в меню File («Файл») команду New («Создать»), а затем — пункт Project(«Проект»).
  • В диалоговом окне New Project(«Создать проект») выберите Installed Templates(«Установленные шаблоны»), Visual C#, а затем щелкните Windows.
  • Щелкните Console Application(«Консольное приложение»). В раскрывающемся списке выберите .NET Framework 4. При необходимости измените поле Location:(«Расположение:»), которое указывает место хранения решения. Для работы с данным образцом используйте имя проекта StorageSample. Нажмите кнопку OK («ОК»), чтобы закрыть диалоговое окно New Project(«Создать проект»).
  • В меню Project («Проект») щелкните Add Reference… («Добавить ссылку...»). На вкладке Browse («Обзор») диалогового окна Add Reference(«Добавить ссылку») перейдите к месту установки справочных библиотек Windows Azure SDK (используйте самую новую версию). Например, C:\Program Files\Windows Azure SDK\v1.4\ref\. Выберите библиотеку Microsoft.WindowsAzure.StorageClient.dllи нажмите кнопку OK(«ОК»).
  • Замените содержимое файла Program.cs на следующий код.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Microsoft.WindowsAzure;
using Microsoft.WindowsAzure.StorageClient;

namespace StorageSample
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                // Variables for the cloud storage objects.
                CloudStorageAccount cloudStorageAccount;
                CloudBlobClient blobClient;
                CloudBlobContainer blobContainer;
                BlobContainerPermissions containerPermissions;
                CloudBlob blob;

                // Use the local storage account.
                cloudStorageAccount = CloudStorageAccount.DevelopmentStorageAccount;

                // If you want to use Windows Azure cloud storage account, use the following
                // code (after uncommenting) instead of the code above.
                // cloudStorageAccount = CloudStorageAccount.Parse("DefaultEndpointsProtocol=http;AccountName=your_storage_account_name;AccountKey=your_storage_account_key");

                // Create the blob client, which provides
                // authenticated access to the Blob service.
                blobClient = cloudStorageAccount.CreateCloudBlobClient();

                // Get the container reference.
                blobContainer = blobClient.GetContainerReference("mycontainer");
                // Create the container if it does not exist.
                blobContainer.CreateIfNotExist();

                // Set permissions on the container.
                containerPermissions = new BlobContainerPermissions();
                // This sample sets the container to have public blobs. Your application
                // needs may be different. See the documentation for BlobContainerPermissions
                // for more information about blob container permissions.
                containerPermissions.PublicAccess = BlobContainerPublicAccessType.Blob;
                blobContainer.SetPermissions(containerPermissions);

                // Get a reference to the blob.
                blob = blobContainer.GetBlobReference("myfile.txt");

                // Upload a file from the local system to the blob.
                Console.WriteLine("Starting file upload");
                blob.UploadFile(@"c:\myfiles\myfile.txt");  // File from local storage.
                Console.WriteLine("File upload complete to blob " + blob.Uri);
            }
            catch (StorageClientException e)
            {
                Console.WriteLine("Storage client error encountered: " + e.Message);

                // Exit the application with exit code 1.
                System.Environment.Exit(1);
            }
            catch (Exception e)
            {
                Console.WriteLine("Error encountered: " + e.Message);

                // Exit the application with exit code 1.
                System.Environment.Exit(1);
            }
            finally
            {
                // Exit the application.
                System.Environment.Exit(0);
            }
        }
    }
}
  • Создайте на локальном компьютере файл c:\myfiles\myfile.txt. Можно также использовать существующий файл, изменив следующий код, чтобы он ссылался на существующий файл вместо файла c:\myfiles\myfile.txt:
  • blob.UploadFile(@"c:\myfiles\myfile.txt"); // File from local storage.
  • Сохраните файл Program.cs.
  • Поскольку в коде используется локальная служба больших двоичных объектов, запустите эмулятор хранилища Windows Azure. В Windows нажмите кнопку «Пуск», выберите Все программы, щелкните Windows Azure SDK v1.4, а затем Storage Emulator. Либо, если значок Windows Azure Emulatorнаходится в панели задач, можно запустить эмулятор хранилища, щелкнув правой кнопкой мыши значок Windows Azure Emulator и выбрав Start Storage Emulator(«Запустить эмулятор хранилища»).
  • В меню Debug («Отладка») выберите пункт Start Without Debugging(«Запуск без отладки»). Если нет ошибок компилирования и ошибок клиентского компьютера, программа должна успешно запуститься. Скопируйте в браузер отображаемый приложением URI-адрес: теперь файл, загруженный в локальную службу больших двоичных объектов, должен быть доступен для просмотра (поскольку используется локальная учетная запись хранилища). Для задания локальной учетной записи использовался следующий код:
  • cloudStorageAccount = CloudStorageAccount.DevelopmentStorageAccount;

Дополнительные сведения об эмуляторе хранилища см. в статье Настройка и использование эмулятора хранилища в Visual Studio.

  1. Теперь создадим код для загрузки файла в учетную запись хранилища Windows Azure, а не в локальную учетную запись хранилища. Создайте учетную запись хранилища Windows Azure (если у вас ее еще нет), следуя инструкциям в статье Создание учетной записи хранилища.
  2. В файле Program.cs закомментируйте следующую строку кода (поскольку используется учетная запись хранилища Windows Azure, а не та, что применялась для разработки).
  3. // cloudStorageAccount = CloudStorageAccount.DevelopmentStorageAccount;
  4. Измените файл Program.cs, добавив в него сведения о своей учетной записи хранилища. Значения используются в следующем разделе кода, задающем строку подключения для хранилища Windows Azure:
  5. cloudStorageAccount = CloudStorageAccount.Parse("DefaultEndpointsProtocol=http;AccountName=your_storage_account_name;AccountKey=your_storage_account_key");

Убедитесь, что эта строка кода больше не закомментирована. Измените значения, назначенные параметрам your_storage_account_name и your_storage_account_key, на ваше имя учетной записи хранилища и ключ доступа к учетной записи хранилища соответственно. Оба этих значения можно узнать на портале управления Windows Azure — https://windows.azure.com. В частности, на сайте https://windows.azure.com перейдите на страницу Hosted Services, Storage Accounts, and CDN («Размещенные службы, учетные записи хранилищ и сеть доставки содержимого»), а затем щелкните Storage Accounts («Учетные записи хранилища»): здесь вы сможете просмотреть список имен учетных записей хранилища для ваших подписок. Щелкните учетную запись хранилища для просмотра страницы ее свойств. Ниже показана страница свойств учетной записи хранилища (имя учетной записи хранилища и основной ключ доступа отмечены):

В вышеприведенном коде замените текст your_storage_account_name на имя вашей учетной записи хранилища. Замените текст your_storage_account_key на значение основного или вспомогательного ключа доступа к хранилищу. Дополнительные сведения о строках подключения см. в статье Настройка строк подключения.

Примечание по безопасности

Сохраняйте секретность ключей доступа к учетной записи хранилища. Защитите свое приложение и исходный код, включая файл Program.cs, поскольку теперь они содержат учетные данные учетной записи хранилища.

  1. Сохраните файл Program.cs.
  2. В меню Debug («Отладка») выберите пункт Start Without Debugging(«Запуск без отладки»). Если нет ошибок компилирования и ошибок клиентского компьютера, программа должна успешно запуститься. Скопируйте в браузер отображаемый приложением универсальный код ресурса (URI): теперь файл, загруженный в учетную запись хранилища Windows Azure, должен быть доступен для просмотра.

Образец кода получает экземпляр класса CloudStorageAccount, инкапсулирующий учетные данные, необходимые для проверки подлинности запроса в службах хранилища. Затем этот объект используется для создания экземпляра класса CloudBlobClient, предоставляющего доступ к службе больших двоичных объектов. С помощью экземпляра CloudBlobClient образец получает ссылку на контейнер больших двоичных объектов с именем mycontainer, создавая его, если он не существует. В контейнере разрешен анонимный доступ на уровне больших двоичных объектов. Сведения о различных типах доступных разрешений для контейнера см. в статье BlobContainerPermissions. Наконец, с помощью образца выполняется отправка локального файла в двоичный объект с именем myfile.txt путем вызова метода UploadFile. Обратите внимание, что имя большого двоичного объекта не обязательно должно совпадать с именем локального файла.

Теперь большой двоичный объект будет доступен для просмотра не только через его универсальный код ресурса (URI), но и в Visual Studio. Дополнительные сведения о просмотре большого двоичного объекта в Visual Studio см. в статье Просмотр ресурсов хранилища с помощью обозревателя хранилищ Windows Azure. Кроме того, выпускается множество программ сторонних разработчиков для просмотра хранилища Windows Azure: их можно найти в Интернете.

Поскольку большой двоичный объект является объектом хранилища, для него доступно множество методов и свойств. Например, в него можно загрузить текст, используя метод UploadText, или выгрузить его в файл с помощью метода DownloadToFile. Чтобы удалить отправленный в хранилище большой двоичный объект, вызовите метод Delete. Дополнительные сведения о методах и свойствах большого двоичного объекта см. в статье CloudBlob.

Множество методов и свойств существует и для контейнеров. Например, можно перечислить большие двоичные объекты в контейнере с помощью метода ListBlobs или удалить контейнер с помощью метода Delete. Дополнительные сведения о методах и свойствах контейнера см. в статье CloudBlobContainer.

Другие типы клиентов, получаемые через экземпляр класса CloudStorageAccount (помимо CloudBlobClient), — это CloudTableClient и CloudQueueClient, которые применяются для операций с таблицами и очередями Windows Azure соответственно. Дополнительные сведения об управляемой с помощью .NET библиотеки для служб хранилища Windows Azure см. в статье Microsoft.WindowsAzure.StorageClient.

Помимо .NET-управляемой библиотеки, предоставляемой API служб хранилища Windows Azure, также предоставляется интерфейс REST API для функций хранилища. Дополнительные сведения см. в Справочном руководстве по REST API служб хранилища Windows Azure.

См. также

Понятия и принципы

Сведения о двоичных объектах Block и Page
Использование клиентской библиотеки хранилища Windows Azure