Поделиться через


Клиентская библиотека BLOB-объектов службы хранилища Azure для .NET версии 12.15.1

Версия сервера: 12.02.2021, 2020-12-06, 2020-10-02, 2020-08-04, 2020-06-12, 2020-04-08, 2020-02-10, 2019-12-12, 2019-07-07 и 2019-02-02-02

Хранилище BLOB-объектов Azure — это решение корпорации Майкрософт для хранения объектов в облаке. Хранилище BLOB-объектов оптимизировано для хранения огромных объемов неструктурированных данных. Неструктурированные данные — это данные, которые не соответствуют определенной модели данных или определению, например текстовых или двоичных данных.

Исходный код | Пакет (NuGet) | Справочная документация по | API Документация по | REST API Документация по продукту

Начало работы

Установка пакета

Установите клиентую библиотеку BLOB-объектов службы хранилища Azure для .NET с помощью NuGet:

dotnet add package Azure.Storage.Blobs

Предварительные требования

Для использования этого пакета вам потребуется подписка Azure и учетная запись хранения .

Чтобы создать учетную запись хранения, можно использовать портал Azure, Azure PowerShell или Azure CLI. Ниже приведен пример с использованием Azure CLI:

az storage account create --name MyStorageAccount --resource-group MyResourceGroup --location westus --sku Standard_LRS

Аутентификация клиента

Чтобы взаимодействовать со службой хранилища BLOB-объектов Azure, необходимо создать экземпляр класса BlobServiceClient. Библиотека удостоверений Azure позволяет легко добавить поддержку Azure Active Directory для проверки подлинности клиентов пакета SDK Azure с помощью соответствующих служб Azure.

// Create a BlobServiceClient that will authenticate through Active Directory
Uri accountUri = new Uri("https://MYSTORAGEACCOUNT.blob.core.windows.net/");
BlobServiceClient client = new BlobServiceClient(accountUri, new DefaultAzureCredential());

Дополнительные сведения о включении Azure Active Directory для проверки подлинности в службе хранилища Azure см. в нашей документации и в примерах.

Основные понятия

Хранилище BLOB-объектов предназначено для следующих задач:

  • Обслуживание изображений или документов непосредственно в браузере.
  • Хранение файлов для распределенного доступа.
  • Потоковая передача видео и звука.
  • Запись в файлы журнала.
  • Хранение резервных копий и восстановление данных, аварийное восстановление и архивация.
  • Хранение данных для анализа локальной службой или службой, размещенной в Azure.

В хранилище BLOB-объектов предлагается три типа ресурсов:

  • Учетная запись хранения, используемая черезBlobServiceClient
  • Контейнер в учетной записи хранения, используемой с помощьюBlobContainerClient
  • Большой двоичный объект в контейнере, используемый с помощьюBlobClient

Дополнительные сведения о вариантах проверки подлинности (включая строки подключения, общий ключ, подписанные url-адреса, Active Directory и анонимный общий доступ)см. в наших примерах.

Потокобезопасность

Мы гарантируем, что все методы экземпляра клиента являются потокобезопасны и независимы друг от друга (руководство). Это гарантирует, что рекомендация по повторному использованию экземпляров клиента всегда будет безопасной, даже в разных потоках.

Дополнительные понятия

Параметры | клиента Доступ к ответу | Длительные операции | Обработка сбоев | Диагностики | Насмешливый | Время существования клиента

Примеры

Отправка большого двоичного объекта

// Get a connection string to our Azure Storage account.  You can
// obtain your connection string from the Azure Portal (click
// Access Keys under Settings in the Portal Storage account blade)
// or using the Azure CLI with:
//
//     az storage account show-connection-string --name <account_name> --resource-group <resource_group>
//
// And you can provide the connection string to your application
// using an environment variable.

string connectionString = "<connection_string>";
string containerName = "sample-container";
string blobName = "sample-blob";
string filePath = "sample-file";

// Get a reference to a container named "sample-container" and then create it
BlobContainerClient container = new BlobContainerClient(connectionString, containerName);
container.Create();

// Get a reference to a blob named "sample-file" in a container named "sample-container"
BlobClient blob = container.GetBlobClient(blobName);

// Upload local file
blob.Upload(filePath);

Скачивание BLOB-объекта

// Get a temporary path on disk where we can download the file
string downloadPath = "hello.jpg";

// Download the public blob at https://aka.ms/bloburl
new BlobClient(new Uri("https://aka.ms/bloburl")).DownloadTo(downloadPath);

Перечисление больших двоичных объектов

// Get a connection string to our Azure Storage account.
string connectionString = "<connection_string>";
string containerName = "sample-container";
string filePath = "hello.jpg";

// Get a reference to a container named "sample-container" and then create it
BlobContainerClient container = new BlobContainerClient(connectionString, containerName);
container.Create();

// Upload a few blobs so we have something to list
container.UploadBlob("first", File.OpenRead(filePath));
container.UploadBlob("second", File.OpenRead(filePath));
container.UploadBlob("third", File.OpenRead(filePath));

// Print out all the blob names
foreach (BlobItem blob in container.GetBlobs())
{
    Console.WriteLine(blob.Name);
}

Асинхронные API

Мы полностью поддерживаем синхронные и асинхронные API.

// Get a temporary path on disk where we can download the file
string downloadPath = "hello.jpg";

// Download the public blob at https://aka.ms/bloburl
await new BlobClient(new Uri("https://aka.ms/bloburl")).DownloadToAsync(downloadPath);

Устранение неполадок

Все операции службы BLOB-объектов будут вызывать исключение RequestFailedException при сбое с полезнымиErrorCode s. Многие из этих ошибок можно исправить.

// Get a connection string to our Azure Storage account.
string connectionString = "<connection_string>";
string containerName = "sample-container";

// Try to delete a container named "sample-container" and avoid any potential race conditions
// that might arise by checking if the container is already deleted or is in the process
// of being deleted.
BlobContainerClient container = new BlobContainerClient(connectionString, containerName);

try
{
    container.Delete();
}
catch (RequestFailedException ex)
    when (ex.ErrorCode == BlobErrorCode.ContainerBeingDeleted ||
          ex.ErrorCode == BlobErrorCode.ContainerNotFound)
{
    // Ignore any errors if the container being deleted or if it has already been deleted
}

Дальнейшие действия

Начало работы с примерами blob-объектов:

  1. Hello World: отправка, скачивание и перечисление больших двоичных объектов (или асинхронно).
  2. Проверка подлинности. Проверка подлинности с помощью строк подключения, открытого доступа, общих ключей, подписанных URL-адресов и Azure Active Directory.

Участие

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

На этом проекте приветствуются публикации и предложения. Для участия в большинстве процессов по разработке документации необходимо принять лицензионное соглашение участника (CLA), в котором указывается, что вы предоставляете нам права на использование ваших публикаций. Дополнительные сведения см. на странице cla.microsoft.com.

В рамках этого проекта действуют правила поведения в отношении продуктов с открытым исходным кодом Майкрософт. Дополнительные сведения см. в разделе часто задаваемых вопросов о правилах поведения или обратитесь к opencode@microsoft.com с любыми дополнительными вопросами или комментариями.

Просмотры