включает в себя: интеграцию хостинга и Client интеграцию
Azure Table Storage — это служба для хранения структурированных данных NoSQL. Интеграция таблиц данных .NET AspireAzure позволяет подключаться к существующим экземплярам Azure Table Storage или создавать новые экземпляры из .NET приложений.
В проекте узла вашего приложения вызовите AddAzureStorage, чтобы добавить и вернуть конструктор ресурсов хранилища Azure.
C#
var builder = DistributedApplication.CreateBuilder(args);
var storage = builder.AddAzureStorage("storage");
// An Azure Storage resource is required to add any of the following://// - Azure Blob storage resource.// - Azure Queue storage resource.// - Azure Table storage resource.// After adding all resources, run the app...
При добавлении AzureStorageResource в среду хостинга приложения, она открывает доступ к другим полезным API для добавления ресурсов хранилища BLOB-объектов, очередей и таблиц. Другими словами, перед добавлением любого из других ресурсов хранилища необходимо добавить AzureStorageResource.
Важно!
При вызове AddAzureStorage, он неявно вызывает AddAzureProvisioning, что добавляет поддержку динамической генерации ресурсов Azure во время запуска приложения. Приложение должно настроить подходящую подписку и местоположение. Для получения дополнительной информации см. Локальная подготовка: конфигурация.
Созданное ресурсное обеспечение Bicep
Если вы не знакомы с , Bicep— это специализированный язык, предназначенный для определения ресурсов Azure. При использовании .NET.NET Aspire вам не нужно писать Bicep вручную, вместо этого провиженинговые API создают Bicep для вас. При публикации приложения сгенерированный файл Bicep выводится вместе с файлом манифеста. При добавлении ресурса хранилища Azure генерируется следующий код Bicep:
Предыдущий Bicep — это модуль, который подготавливает учетную запись хранения Azure со следующими значениями по умолчанию:
kind: тип учетной записи хранения. Значение по умолчанию — StorageV2.
sku: номер SKU учетной записи хранения. Значение по умолчанию — Standard_GRS.
properties: свойства учетной записи хранения:
accessTier: уровень доступа для учетной записи хранилища. Значение по умолчанию — Hot.
allowSharedKeyAccess: логическое значение, указывающее, разрешает ли учетная запись хранения авторизовать запросы с помощью ключа доступа к учетной записи. Значение по умолчанию — false.
minimumTlsVersion: минимальная поддерживаемая версия TLS для учетной записи хранения. Значение по умолчанию — TLS1_2.
networkAcls: Сетевые ACL для учетной записи хранения. Значение по умолчанию — { defaultAction: 'Allow' }.
Помимо учетной записи хранения, также создается контейнер блобов.
В учетную запись хранения добавляются следующие назначения ролей, чтобы предоставить вашему приложению доступ. Дополнительные сведения см. о встроенных ролях управления доступом на основе ролей Azure (Azure RBAC).
Роль или идентификатор
Описание
Вкладчик данных хранилища BLOB ba92f5b4-2d11-453d-a403-e96b0029c9fe
Чтение, запись и удаление контейнеров и BLOB-объектов хранилища Azure.
Участник работы с данными таблицы хранилища 0a9a7e1f-b9d0-4cc4-a60d-0319b160aaa3
Чтение, запись и удаление таблиц и сущностей хранилища Azure.
Соавтор данных в очереди хранилища 974c5e8b-45b9-4653-ba55-5f855dd0fb88
Чтение, запись и удаление очередей в хранилище Azure и сообщений в очереди.
Созданная Bicep является отправной точкой, и её можно настроить для соответствия вашим конкретным требованиям.
Тег добавляется в учетную запись хранения с ключом ExampleKey и значением Example value.
Существует множество дополнительных параметров конфигурации для настройки ресурса хранилища Azure. Дополнительные сведения см. в Azure.Provisioning.Storage.
Подключение к существующей учетной записи хранения Azure
Возможно, у вас есть существующая учетная запись хранения Azure, к которой требуется подключиться. Вместо представления нового ресурса хранилища Azure можно добавить строку подключения к узлу приложения. Чтобы добавить подключение к существующей учетной записи хранения Azure, вызовите метод AddConnectionString:
C#
var builder = DistributedApplication.CreateBuilder(args);
var blobs = builder.AddConnectionString("blobs");
builder.AddProject<Projects.WebApplication>("web")
.WithReference(blobs);
// After adding all resources, run the app...
Примечание
Строки подключения используются для представления широкого диапазона сведений о подключении, включая подключения к базе данных, брокеры сообщений, URI конечной точки и другие службы. В .NET.NET Aspire номенклатуре термин "строка подключения" используется для представления любой информации о подключении.
Строка подключения настраивается в конфигурации узла приложения, как правило, в разделе Секреты пользователейв разделе ConnectionStrings. Хост приложения внедряет эту строку подключения в качестве переменной среды во все зависимые ресурсы, например:
Зависимый ресурс может получить доступ к внедренной строке подключения, вызвав метод GetConnectionString и передав имя подключения в качестве параметра, в этом случае "blobs". API GetConnectionString — это шортхэнд для IConfiguration.GetSection("ConnectionStrings")[name].
Добавление ресурса эмулятора хранилища Azure
Чтобы добавить ресурс эмулятора хранилища Azure, свяжите вызов на IResourceBuilder<AzureStorageResource> с API RunAsEmulator.
C#
var builder = DistributedApplication.CreateBuilder(args);
var storage = builder.AddAzureStorage("storage")
.RunAsEmulator();
// After adding all resources, run the app...
При вызове RunAsEmulatorон настраивает ресурсы хранилища для локального запуска с помощью эмулятора. Эмулятор в этом случае Azurite. Эмулятор с открытым исходным кодом Azurite предоставляет бесплатную локальную среду для тестирования приложений Azure Blob, хранилища очередей и хранилища таблиц и является идеальным компаньоном для интеграции размещения .NET AspireAzure. Azurite не установлен, вместо этого он доступен для .NET.NET Aspire в качестве контейнера. При добавлении контейнера в хост приложения, как показано в предыдущем примере с изображением mcr.microsoft.com/azure-storage/azurite, хост приложения создает и запускает контейнер при запуске. Для получения дополнительной информации см. жизненный цикл ресурса контейнера.
Настройка контейнера Azurite
Существуют различные конфигурации, доступные для ресурсов контейнера, например, можно настроить порты контейнера, переменные среды, время существованияи многое другое.
Настройка портов контейнеров Azurite
По умолчанию при настройке .NET.NET Aspireконтейнер Azurite предоставляет следующие конечные точки:
Конечная точка
Порт контейнера
Порт хоста
blob
10 000
динамический
queue
10001
динамический
table
10002
динамический
По умолчанию прослушиваемый порт является динамическим. При запуске контейнера порты сопоставляются со случайным портом на хост-компьютере. Чтобы настроить порты конечной точки, следует выполнить последовательные вызовы на строителе ресурсов контейнера, предоставленном методом RunAsEmulator, как показано в следующем примере:
C#
var builder = DistributedApplication.CreateBuilder(args);
var storage = builder.AddAzureStorage("storage").RunAsEmulator(
azurite =>
{
azurite.WithBlobPort(27000)
.WithQueuePort(27001)
.WithTablePort(27002);
});
// After adding all resources, run the app...
Приведенный выше код настраивает существующие конечные точки blob, queueи table контейнера Azurite для прослушивания на портах 27000, 27001и 27002соответственно. Порты контейнера Azurite сопоставляются с портами узла, как показано в следующей таблице:
Имя конечной точки
Сопоставление портов (container:host)
blob
10000:27000
queue
10001:27001
table
10002:27002
Настройка контейнера Azurite с постоянным временем существования
Чтобы настроить контейнер Azurite с постоянным временем существования, вызовите метод WithLifetime в ресурсе контейнера Azurite и передайте ContainerLifetime.Persistent:
C#
var builder = DistributedApplication.CreateBuilder(args);
var storage = builder.AddAzureStorage("storage").RunAsEmulator(
azurite =>
{
azurite.WithLifetime(ContainerLifetime.Persistent);
});
// After adding all resources, run the app...
Чтобы добавить том данных в ресурс эмулятора хранилища Azure, вызовите метод WithDataVolume в ресурсе эмулятора хранилища Azure:
C#
var builder = DistributedApplication.CreateBuilder(args);
var storage = builder.AddAzureStorage("storage").RunAsEmulator(
azurite =>
{
azurite.WithDataVolume();
});
// After adding all resources, run the app...
Том данных используется для сохранения данных Azurite за пределами жизненного цикла контейнера. В контейнере Azurite том данных монтируется по пути /data, а если параметр name не указан, то имя форматируется как .azurite/{resource name}. Для получения дополнительной информации о томах данных и о том, почему их предпочитают по сравнению с привязками, см. Docker документацию по томам.
Настройка контейнера Azurite с подключением привязки данных
Чтобы добавить привязку данных к ресурсу эмулятора хранилища Azure, вызовите метод WithDataBindMount.
C#
var builder = DistributedApplication.CreateBuilder(args);
var storage = builder.AddAzureStorage("storage").RunAsEmulator(
azurite =>
{
azurite.WithDataBindMount("../Azurite/Data");
});
// After adding all resources, run the app...
Важно!
Подключения маунтов данных имеют ограниченные функциональные возможности по сравнению с томами, которые обеспечивают лучшую производительность, переносимость и безопасность, что делает их более подходящими для продуктивных окружений. Однако привязки томов позволяют напрямую получать доступ и изменять файлы в хост-системе, что идеально подходит для разработки и тестирования, когда необходимы изменения в режиме реального времени.
Маунты привязки данных зависят от файловой системы хост-компьютера для сохранения данных Azurite между перезапусками контейнера. Монтирование привязки данных происходит по пути ../Azurite/Data на хост-компьютере относительно каталога приложения-хоста (IDistributedApplicationBuilder.AppHostDirectory) в контейнере Azurite. Дополнительные сведения о маунтах привязки данных см. в документации по Docker: маунты привязки.
Подключение к ресурсам хранилища
При запуске узла приложения .NET.NET Aspire доступ к ресурсам хранилища можно получить внешними средствами, такими как обозреватель хранилища Azure. Если ваш ресурс хранилища запускается локально с помощью Azurite, он будет автоматически распознан Azure в Обозревателе хранилища.
Примечание
Обозреватель службы хранилища Azure обнаруживает ресурсы хранилища Azurite, если используются порты по умолчанию. Если вы настроили контейнер Azurite для использования различных портов, необходимо настроить Обозреватель хранилища Azure для подключения к правильным портам.
Чтобы подключиться к ресурсу хранилища из обозревателя хранилища Azure, выполните следующие действия.
Запустите хост приложения .NET.NET Aspire.
Откройте обозреватель хранилища Azure.
Просмотрите область обозревателя.
Выберите ссылку Обновить все, чтобы обновить список учетных записей хранения.
Разверните узел Эмулятор и Подключенные.
Разверните узел учетных записей хранения.
Вы должны увидеть учетную запись хранения с именем ресурса в качестве префикса:
Вы свободны изучить учетную запись хранения и ее содержимое с помощью обозревателя хранилища Azure Storage Explorer. Для получения дополнительной информации об использовании обозревателя службы хранилища Azure см. раздел Начало работы с обозревателем службы хранилища.
Добавьте ресурс Azure Table Storage
В проекте узла вашего приложения зарегистрируйте интеграцию Azure Table Storage, связав вызов с AddTables на экземпляре IResourceBuilder<IAzureStorageResource>, возвращенном AddAzureStorage. В следующем примере показано, как добавить ресурс Azure Table Storage с именем storage и ресурс таблицы с именем tables:
C#
var builder = DistributedApplication.CreateBuilder(args);
var tables = builder.AddAzureStorage("storage")
.AddTables("tables");
builder.AddProject<Projects.ExampleProject>()
.WithReference(tables)
.WaitFor(tables);
// After adding all resources, run the app...
Предыдущий код:
Добавляет ресурс хранилища Azure с именем storage.
Добавляет ресурс хранилища таблиц с именем tables в ресурс хранилища.
Добавляет ресурс storage в ExampleProject и ожидает его готовности перед запуском проекта.
Проверка работоспособности интеграции хостинга
Интеграция размещения хранилища Azure автоматически добавляет проверку работоспособности ресурса хранилища. Он добавляется только при запуске в качестве эмулятора и проверяет, запущен ли контейнер Azurite и что к нему можно установить подключение. Интеграция размещения зависит от 📦 AspNetCore.HealthChecks.Azure.Storage.Blobs пакета NuGet.
интеграция Client
Чтобы приступить к работе с интеграцией клиента таблицы данных .NET AspireAzure, установите пакет NuGet 📦Aspire.Azure.Data.Tables в проекте, использующем клиента, то есть в проекте приложения, использующего клиента таблицы данных Azure. Интеграция клиента таблиц данных Azure регистрирует экземпляр TableServiceClient, который можно использовать для взаимодействия с Azure Table Storage.
В файле Program.cs проекта, используемого клиентом, вызовите метод расширения AddAzureTableClient для любой IHostApplicationBuilder, чтобы зарегистрировать TableServiceClient для использования с помощью контейнера внедрения зависимостей. Метод принимает параметр имени подключения.
C#
builder.AddAzureTableClient("tables");
Затем можно получить экземпляр TableServiceClient, используя инъекцию зависимостей. Например, чтобы получить клиента из службы, выполните следующие шаги.
C#
publicclassExampleService(TableServiceClient client)
{
// Use client...
}
Конфигурация
Интеграция .NET AspireAzure Table Storage предоставляет несколько вариантов настройки TableServiceClient на основе требований и соглашений проекта.
Использование поставщиков конфигураций
Интеграция .NET AspireAzure Table Storage поддерживает Microsoft.Extensions.Configuration. Он загружает AzureDataTablesSettings и TableClientOptions из конфигурации с помощью ключа Aspire:Azure:Data:Tables. Следующий фрагмент кода является примером файла appsettings.json, который настраивает некоторые параметры:
Можно также передать делегат Action<AzureDataTablesSettings> configureSettings для настройки некоторых или всех встроенных параметров, например для настройки ServiceUri:
Вы также можете настроить TableClientOptions с помощью делегата Action<IAzureClientBuilder<TableServiceClient, TableClientOptions>> configureClientBuilder, второго параметра метода AddAzureTableClient. Например, чтобы задать идентификатор TableServiceClient для идентификации клиента:
Интегрируется с HTTP-узлом /health, который указывает, что все зарегистрированные проверки работоспособности должны быть пройдены, чтобы приложение считалось готовым к приему трафика.
Наблюдаемость и телеметрия
.NET
.NET Aspire интеграции автоматически выполняют настройку конфигураций логов, трассировки и метрик, которые иногда называются столпами наблюдаемости. Дополнительные сведения об наблюдаемости интеграции и телеметрии см. в .NET.NET Aspire обзоре интеграции. В зависимости от резервной службы некоторые интеграции могут поддерживать только некоторые из этих функций. Например, некоторые интеграции поддерживают ведение журнала и трассировку, но не метрики. Функции телеметрии также можно отключить с помощью методов, представленных в разделе конфигурации .
Лесозаготовка
Интеграция с таблицами данных .NET AspireAzure использует следующие категории журналов:
Azure.Core
Azure.Identity
Отслеживание
Интеграция таблиц данных .NET AspireAzure генерирует следующие действия трассировки, используя OpenTelemetry:
Azure.Data.Tables.TableServiceClient
Метрика
Интеграция таблиц данных .NET AspireAzure в настоящее время не поддерживает метрики по умолчанию из-за ограничений пакета SDK Azure.
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.
Отзыв о .NET Aspire
.NET Aspire — это проект с открытым исходным кодом. Выберите ссылку, чтобы оставить отзыв:
Создавайте эффективные запросы, создавайте политики индексирования, управляйте и подготавливайте ресурсы в API SQL и пакете SDK с помощью Microsoft Azure Cosmos DB.