Integration von .NET Aspire- undAzure-Datentabellen
umfasst:Hosting-Integration und Client-Integration
Azure Table Storage ist ein Dienst zum Speichern strukturierter NoSQL-Daten. Mit der Integration von .NET AspireAzure Datentabellen können Sie eine Verbindung mit vorhandenen Azure Table Storage Instanzen herstellen oder neue Instanzen aus .NET Anwendungen erstellen.
Hosting-Integration
Die .NET.NET AspireAzure-Storage--Hosting-Integrationsmodelle stellen die verschiedenen Speicherressourcen als die folgenden Typen dar:
- AzureStorageResource: Stellt eine Azure Speicherressource dar.
- AzureStorageEmulatorResource: Stellt eine Azure Speicher-Emulator-Ressource (Azurite) dar.
- AzureBlobStorageResource: Stellt eine Azure Blob-Speicherressource dar.
- AzureQueueStorageResource: Stellt eine Azure Warteschlangenspeicherressource dar.
- AzureTableStorageResource: Stellt eine Azure Tabellenspeicherressource dar.
Um auf diese Typen und die entsprechenden APIs zuzugreifen, fügen Sie das 📦Aspire.Hosting.Azure.Storage NuGet-Paket im App-Host Projekt hinzu.
dotnet add package Aspire.Hosting.Azure.Storage
Weitere Informationen finden Sie in dotnet add package oder Verwalten von Paketabhängigkeiten in .NET-Anwendungen.
Hinzufügen der Speicherressource Azure.
Rufen Sie in Ihrem App-Hostprojekt AddAzureStorage auf, um einen Azure Speicherressourcen-Generator hinzuzufügen und zurückzugeben.
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...
Wenn Sie AzureStorageResource
dem App-Host hinzufügen, stellt es andere nützliche APIs zur Verfügung, um Azure Blob-, Warteschlangen- und Tabellenspeicherressourcen hinzuzufügen. Mit anderen Worten, Sie müssen zuerst eine AzureStorageResource
hinzufügen, bevor Sie eine der anderen Speicherressourcen hinzufügen.
Wichtig
Wenn Sie AddAzureStorageaufrufen, wird dabei implizit AddAzureProvisioningaufgerufen, wodurch die Unterstützung zur dynamischen Generierung von Azure-Ressourcen während des Anwendungsstarts hinzugefügt wird. Die App muss das entsprechende Abonnement und den entsprechenden Standort konfigurieren. Weitere Informationen finden Sie unter lokale Bereitstellung: Konfiguration.
Generierte Bereitstellung mit Bicep
Wenn Sie neu bei Bicepsind, handelt es sich um eine domänenspezifische Sprache zum Definieren der Azure Ressourcen. Mit .NET.NET Aspiremüssen Sie Bicep nicht manuell schreiben, sondern die Bereitstellungs-APIs generieren Bicep für Sie. Wenn Sie Ihre App veröffentlichen, wird Bicep zusammen mit der Manifestdatei generiert und ausgegeben. Wenn Sie eine Speicherressource Azure hinzufügen, wird die folgende Bicep generiert:
Azure Storage Bicep umschalten.
@description('The location for the resource(s) to be deployed.')
param location string = resourceGroup().location
param principalId string
param principalType string
resource storage 'Microsoft.Storage/storageAccounts@2024-01-01' = {
name: take('storage${uniqueString(resourceGroup().id)}', 24)
kind: 'StorageV2'
location: location
sku: {
name: 'Standard_GRS'
}
properties: {
accessTier: 'Hot'
allowSharedKeyAccess: false
minimumTlsVersion: 'TLS1_2'
networkAcls: {
defaultAction: 'Allow'
}
}
tags: {
'aspire-resource-name': 'storage'
}
}
resource blobs 'Microsoft.Storage/storageAccounts/blobServices@2024-01-01' = {
name: 'default'
parent: storage
}
resource storage_StorageBlobDataContributor 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
name: guid(storage.id, principalId, subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'ba92f5b4-2d11-453d-a403-e96b0029c9fe'))
properties: {
principalId: principalId
roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'ba92f5b4-2d11-453d-a403-e96b0029c9fe')
principalType: principalType
}
scope: storage
}
resource storage_StorageTableDataContributor 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
name: guid(storage.id, principalId, subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '0a9a7e1f-b9d0-4cc4-a60d-0319b160aaa3'))
properties: {
principalId: principalId
roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '0a9a7e1f-b9d0-4cc4-a60d-0319b160aaa3')
principalType: principalType
}
scope: storage
}
resource storage_StorageQueueDataContributor 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
name: guid(storage.id, principalId, subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '974c5e8b-45b9-4653-ba55-5f855dd0fb88'))
properties: {
principalId: principalId
roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '974c5e8b-45b9-4653-ba55-5f855dd0fb88')
principalType: principalType
}
scope: storage
}
output blobEndpoint string = storage.properties.primaryEndpoints.blob
output queueEndpoint string = storage.properties.primaryEndpoints.queue
output tableEndpoint string = storage.properties.primaryEndpoints.table
Das vorangegangene Bicep ist ein Modul, das ein Azure-Speicherkonto mit den folgenden Standardeinstellungen bereitstellt.
-
kind
: Die Art des Speicherkontos. Der Standardwert istStorageV2
. -
sku
: Die SKU des Speicherkontos. Der Standardwert istStandard_GRS
. -
properties
: Die Eigenschaften des Speicherkontos:-
accessTier
: Die Zugriffsebene des Speicherkontos. Der Standardwert istHot
. -
allowSharedKeyAccess
: Ein boolescher Wert, der angibt, ob das Speicherkonto die Autorisierung von Anforderungen mit dem Kontozugriffsschlüssel zulässt. Der Standardwert istfalse
. -
minimumTlsVersion
: Die mindest unterstützte TLS-Version für das Speicherkonto. Der Standardwert istTLS1_2
. -
networkAcls
: Die Netzwerk-ACLs für das Speicherkonto. Der Standardwert ist{ defaultAction: 'Allow' }
.
-
Zusätzlich zum Speicherkonto stellt es auch einen Blob-Container bereit.
Die folgenden Rollenzuweisungen werden dem Speicherkonto hinzugefügt, um Ihrer Anwendung Zugriff zu gewähren. Für weitere Informationen sehen Sie sich die integrierten Azure rollenbasierten Zugriffssteuerungsrollen (Azure RBAC) an:
Rolle/ID | Beschreibung |
---|---|
Speicher-BLOB-Daten-Beitragenderba92f5b4-2d11-453d-a403-e96b0029c9fe |
Lesen, Schreiben und Löschen von Azure-Speichercontainern und -Blobs. |
Beitragender für Speichertabellendaten0a9a7e1f-b9d0-4cc4-a60d-0319b160aaa3 |
Lesen, Schreiben und Löschen von Azure-Speichertabellen und -entitäten. |
Speicherwarteschlangen-Datenmitwirkender974c5e8b-45b9-4653-ba55-5f855dd0fb88 |
Lesen, Schreiben und Löschen Azure Speicherwarteschlangen und Warteschlangenmeldungen. |
Das erzeugte Bicep ist ein Ausgangspunkt und kann an Ihre individuellen Anforderungen angepasst werden.
Anpassen der Bereitstellungsinfrastruktur
Alle .NET AspireAzure Ressourcen sind Unterklassen des AzureProvisioningResource Typs. Dieser Typ ermöglicht die Anpassung der generierten Bicep durch Bereitstellen einer Fluent-API zum Konfigurieren der Azure-Ressourcen mithilfe der ConfigureInfrastructure<T>(IResourceBuilder<T>, Action<AzureResourceInfrastructure>)-API. Sie können zum Beispiel die kind
, sku
, properties
und vieles mehr konfigurieren. Im folgenden Beispiel wird veranschaulicht, wie die Azure Speicherressource angepasst wird:
builder.AddAzureStorage("storage")
.ConfigureInfrastructure(infra =>
{
var storageAccount = infra.GetProvisionableResources()
.OfType<StorageAccount>()
.Single();
storageAccount.AccessTier = StorageAccountAccessTier.Cool;
storageAccount.Sku = new StorageSku { Name = StorageSkuName.PremiumZrs };
storageAccount.Tags.Add("ExampleKey", "Example value");
});
Der vorangehende Code:
- Verkettet einen Aufruf der ConfigureInfrastructure-API:
- Der
infra
-Parameter ist eine Instanz des typs AzureResourceInfrastructure. - Die bereitstellbaren Ressourcen werden durch Aufrufen der GetProvisionableResources()-Methode abgerufen.
- Die einzelne StorageAccount wird abgerufen.
- StorageAccount.AccessTier wird StorageAccountAccessTier.Coolzugeordnet.
- Die StorageAccount.Sku wird einem neuen StorageSku mit einem
Name
von PremiumZrszugewiesen. - Dem Speicherkonto wird ein Tag mit einem Schlüssel von
ExampleKey
und einem Wert vonExample value
hinzugefügt.
- Der
Es stehen viele weitere Konfigurationsoptionen zum Anpassen der Azure Speicherressource zur Verfügung. Weitere Informationen finden Sie unter Azure.Provisioning.Storage.
Verbinden mit einem vorhandenen Azure-Speicherkonto
Möglicherweise verfügen Sie über ein vorhandenes Azure Speicherkonto, mit dem Sie eine Verbindung herstellen möchten. Anstatt eine neue Azure Speicherressource darzustellen, können Sie dem App-Host eine Verbindungszeichenfolge hinzufügen. Um eine Verbindung zu einem vorhandenen Azure Speicherkonto hinzuzufügen, rufen Sie die AddConnectionString-Methode auf:
var builder = DistributedApplication.CreateBuilder(args);
var blobs = builder.AddConnectionString("blobs");
builder.AddProject<Projects.WebApplication>("web")
.WithReference(blobs);
// After adding all resources, run the app...
Anmerkung
Verbindungszeichenfolgen werden verwendet, um eine Vielzahl von Verbindungsinformationen darzustellen, einschließlich Datenbankverbindungen, Nachrichtenbroker, Endpunkt-URIs und andere Dienste. In .NET.NET Aspire Nomenklatur wird der Begriff "Verbindungszeichenfolge" verwendet, um jede Art von Verbindungsinformationen darzustellen.
Die Verbindungszeichenfolge wird in der Konfiguration des App-Hosts festgelegt, in der Regel unter Benutzergeheimnisse, im Abschnitt ConnectionStrings
. Der App-Host fügt diese Verbindungszeichenfolge als Umgebungsvariable in alle abhängigen Ressourcen ein, z. B.:
{
"ConnectionStrings": {
"blobs": "https://{account_name}.blob.core.windows.net/"
}
}
Die abhängige Ressource kann auf die eingefügte Verbindungszeichenfolge zugreifen, indem sie die GetConnectionString Methode aufruft und den Verbindungsnamen als Parameter übergibt, in diesem Fall "blobs"
. Die GetConnectionString
-API ist kurz für IConfiguration.GetSection("ConnectionStrings")[name]
.
Hinzufügen Azure Speicher-Emulator-Ressource
Um eine Azure Speicheremulatorressource hinzuzufügen, verketten Sie einen Aufruf eines IResourceBuilder<AzureStorageResource>
an die RunAsEmulator-API:
var builder = DistributedApplication.CreateBuilder(args);
var storage = builder.AddAzureStorage("storage")
.RunAsEmulator();
// After adding all resources, run the app...
Wenn Sie RunAsEmulator
aufrufen, werden Ihre Speicherressourcen konfiguriert, um lokal mithilfe eines Emulators betrieben zu werden. Der Emulator in diesem Fall ist Azurite. Der Azurite Open-Source-Emulator bietet eine kostenlose lokale Umgebung zum Testen Ihrer Azure Blob-, Warteschlangenspeicher- und Tabellenspeicher-Apps und ist ein perfekter Begleiter für die .NET AspireAzure Hosting-Integration. Azurite ist nicht installiert, sondern ist für .NET.NET Aspire als Container zugänglich. Wenn Sie dem App-Host einen Container hinzufügen, wie im vorherigen Beispiel mit dem mcr.microsoft.com/azure-storage/azurite
Image gezeigt, wird der Container erstellt und gestartet, wenn der App-Host gestartet wird. Weitere Informationen finden Sie unter Lebenszyklus von Containerressourcen.
Konfigurieren des Azurite-Containers
Es stehen verschiedene Konfigurationen für Containerressourcen zur Verfügung, z. B. können Sie die Ports und Umgebungsvariablen des Containers, seine Lebensdauerund vieles mehr konfigurieren.
Konfigurieren Sie Azurite-Containerports
Standardmäßig macht der Azurite-Container, wenn er von .NET.NET Aspirekonfiguriert wird, die folgenden Endpunkte verfügbar:
Endpunkt | Containerhafen | Hostport |
---|---|---|
blob |
10.000 | dynamisch |
queue |
10001 | dynamisch |
table |
10002 | dynamisch |
Der Port, auf den sie lauschen, ist standardmäßig dynamisch. Wenn der Container gestartet wird, werden die Ports einem zufälligen Port auf dem Hostcomputer zugeordnet. Um die Endpunktports zu konfigurieren, führen Sie Kettenaufrufe für den Containerressourcen-Generator aus, der von der RunAsEmulator
-Methode bereitgestellt wird, wie im folgenden Beispiel gezeigt:
var builder = DistributedApplication.CreateBuilder(args);
var storage = builder.AddAzureStorage("storage").RunAsEmulator(
azurite =>
{
azurite.WithBlobPort("blob", 27000)
.WithQueuePort("queue", 27001)
.WithTablePort("table", 27002);
});
// After adding all resources, run the app...
Der vorstehende Code konfiguriert die vorhandenen blob
, queue
und table
Endpunkte des Azurite-Containers, um die Ports 27000
, 27001
und 27002
zu überwachen. Die Ports des Azurite-Containers sind den Hostports zugeordnet, wie in der folgenden Tabelle dargestellt:
Endpunktname | Portzuordnung (container:host ) |
---|---|
blob |
10000:27000 |
queue |
10001:27001 |
table |
10002:27002 |
Konfigurieren des Azurite-Containers mit dauerhafter Lebensdauer
Um den Azurite-Container mit einer dauerhaften Lebensdauer zu konfigurieren, rufen Sie die Methode WithLifetime an der Azurite-Container-Ressource auf und übergeben Sie ContainerLifetime.Persistent:
var builder = DistributedApplication.CreateBuilder(args);
var storage = builder.AddAzureStorage("storage").RunAsEmulator(
azurite =>
{
azurite.WithLifetime(ContainerLifetime.Persistent);
});
// After adding all resources, run the app...
Weitere Informationen finden Sie unter Lebensdauer von Containerressourcen.
Konfigurieren des Azurite-Containers mit Datenvolumen
Um ein Datenvolumen zur Ressource des Azure Speicheremulators hinzuzufügen, rufen Sie die WithDataVolume Methode auf der Azure Speicheremulator-Ressource auf.
var builder = DistributedApplication.CreateBuilder(args);
var storage = builder.AddAzureStorage("storage").RunAsEmulator(
azurite =>
{
azurite.WithDataVolume();
});
// After adding all resources, run the app...
Das Datenvolumen wird verwendet, um die Azurit-Daten außerhalb des Lebenszyklus seines Containers zu speichern. Das Datenvolumen wird im Azurite-Container am Pfad /data
bereitgestellt, und wenn kein name
-Parameter angegeben wird, wird der Name als .azurite/{resource name}
formatiert. Weitere Informationen zu Datenträgern und Details dazu, warum sie gegenüber Bind Mountsbevorzugt werden, finden Sie unter der Docker Dokumentation: Volumes.
Konfigurieren des Azurite-Containers mit Datenbindungs-Mount
Rufen Sie die Azure-Methode auf, um eine Datenbindungs-Bereitstellung zur Ressource des WithDataBindMount Speicheremulators hinzuzufügen:
var builder = DistributedApplication.CreateBuilder(args);
var storage = builder.AddAzureStorage("storage").RunAsEmulator(
azurite =>
{
azurite.WithDataBindMount("../Azurite/Data");
});
// After adding all resources, run the app...
Wichtig
Bind-Einhängepunkte von Daten haben eingeschränkte Funktionalität im Vergleich zu Volumes, die eine bessere Leistung, Portabilität und Sicherheit bieten, wodurch sie besser für Produktionsumgebungen geeignet sind. Bind-Mounts ermöglichen jedoch direkten Zugriff und Modifikation von Dateien auf dem Hostsystem – ideal für Entwicklung und Tests, die Echtzeitänderungen erfordern.
Datenbindungs-Bereitstellungen basieren auf dem Dateisystem des Hostcomputers, um die Azurite-Daten über Containerneustarts hinweg zu speichern. Die Datenbindungs-Bereitstellung wird auf dem ../Azurite/Data
Pfad auf dem Hostcomputer relativ zum App-Hostverzeichnis (IDistributedApplicationBuilder.AppHostDirectory) im Azurite-Container bereitgestellt. Weitere Informationen zu Datenbind-Mounts finden Sie unter Docker Docs: Bind-Mounts.
Verbindung mit Speicherressourcen herstellen
Wenn der .NET-.NET Aspire App-Host ausgeführt wird, kann auf die Speicherressourcen über externe Tools wie den Azure Storage Explorerzugegriffen werden. Wenn Ihre Speicherressource lokal mit Azurite ausgeführt wird, wird sie automatisch vom Azure Storage Explorer abgeholt.
Anmerkung
Der Azure Storage Explorer ermittelt Azurite-Speicherressourcen, vorausgesetzt, die Standardports werden verwendet. Wenn Sie den Azurite-Container für die Verwendung verschiedener Ports
Führen Sie die folgenden Schritte aus, um über Azure Speicher-Explorer eine Verbindung mit der Speicherressource herzustellen:
Führen Sie den .NET.NET Aspire App-Host aus.
Öffnen Sie den Azure Speicher-Explorer.
Zeigen Sie den Explorer Bereich an.
Wählen Sie den Link "Alle aktualisieren" aus, um die Liste der Speicherkonten zu aktualisieren.
Erweitern Sie den Emulator & angefügten Knoten.
Erweitern Sie den Knoten Speicherkonten.
Es sollte ein Speicherkonto mit dem Namen Ihrer Ressource als Präfix angezeigt werden:
Sie können das Speicherkonto und dessen Inhalte mit dem Azure Speicher-Explorer erkunden. Weitere Informationen zur Verwendung des Azure-Speicher-Explorers finden Sie unter Erste Schritte mit dem Speicher-Explorer.
Füge die Ressource Azure Table Storage hinzu
Registrieren Sie die Azure Table Storage-Integration in Ihrem App-Hostprojekt, indem Sie einen Aufruf an AddTables an die von IResourceBuilder<IAzureStorageResource>
zurückgegebene AddAzureStorage-Instanz verketten. Im folgenden Beispiel wird veranschaulicht, wie Sie eine Azure Table Storage Ressource namens storage
und eine Tabellenressource mit dem Namen tables
hinzufügen:
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...
Der vorangehende Code:
- Fügt eine Azure Speicherressource namens
storage
hinzu. - Fügt der Speicherressource eine Tabellenspeicherressource namens
tables
hinzu. - Fügt Ressource
storage
zuExampleProject
hinzu und wartet, bis sie bereit ist, bevor das Projekt gestartet wird.
Durchführung von Integrations-Gesundheitschecks
Die Azure Speicherhostingintegration fügt automatisch eine Integritätsprüfung für die Speicherressource hinzu. Dies wird nur hinzugefügt, wenn es als Emulator ausgeführt wird, und überprüft, ob der Azurite-Container ausgeführt wird und dass eine Verbindung hergestellt werden kann. Die Hostingintegration basiert auf den 📦 AspNetCore.HealthChecks.Azure. Storage.Blobs NuGet-Paket.
Client Integration
Um mit der Integration von .NET AspireAzure Datentabellen client zu beginnen, installieren Sie das NuGet-Paket 📦Aspire.Azure.Data.Tables im client-verbrauchenden Projekt, das heißt, das Projekt für die Anwendung, die die Azure Datentabellen clientverwendet. Die Azure Datentabellen client Integration registriert eine TableServiceClient Instanz, mit der Sie mit Azure Table Storageinteragieren können.
dotnet add package Aspire.Azure.Data.Tables
Hinzufügen von Azure Table Storageclient
Rufen Sie in der Datei Program.cs Ihres client-verbrauchenden Projekts die AddAzureTableClient-Erweiterungsmethode auf einem beliebigen IHostApplicationBuilder auf, um eine TableServiceClient
für die Verwendung über den Dependency Injection-Container zu registrieren. Die Methode verwendet einen Verbindungsnamenparameter.
builder.AddAzureTableClient("tables");
Anschließend können Sie die TableServiceClient
Instanz mithilfe der Abhängigkeitseinfügung abrufen. Um beispielsweise die client von einem Service abzurufen:
public class ExampleService(TableServiceClient client)
{
// Use client...
}
Konfiguration
Die .NET AspireAzure Table Storage-Integration bietet mehrere Optionen zum Konfigurieren der TableServiceClient
basierend auf den Anforderungen und Konventionen Ihres Projekts.
Konfigurationsanbieter verwenden
Die .NET AspireAzure Table Storage Integration unterstützt Microsoft.Extensions.Configuration. Sie lädt die AzureDataTablesSettings und TableClientOptions mithilfe des Aspire:Azure:Data:Tables
Schlüssels aus der Konfiguration. Der folgende Codeausschnitt ist ein Beispiel für eine appsettings.json Datei, die einige der Optionen konfiguriert:
{
"Aspire": {
"Azure": {
"Data": {
"Tables": {
"ServiceUri": "YOUR_URI",
"DisableHealthChecks": true,
"DisableTracing": false,
"ClientOptions": {
"EnableTenantDiscovery": true
}
}
}
}
}
}
Die vollständigen Azure-Datentabellen-client-Integrations-JSON-Schemata finden Sie unter Aspire.Azure. Data.Tables/ConfigurationSchema.json.
Verwenden von Inlinedelegatn
Sie können auch den Action<AzureDataTablesSettings> configureSettings
Delegat übergeben, um einige oder alle Optionen inline einzurichten, z. B. zum Konfigurieren des ServiceUri
:
builder.AddAzureTableClient(
"tables",
settings => settings.DisableHealthChecks = true);
Sie können die TableClientOptions auch mit dem Action<IAzureClientBuilder<TableServiceClient, TableClientOptions>> configureClientBuilder
-Delegaten, dem zweiten Parameter der AddAzureTableClient
-Methode, einrichten. Um beispielsweise die TableServiceClient
-ID festzulegen, um die clientzu identifizieren:
builder.AddAzureTableClient(
"tables",
configureClientBuilder: clientBuilder =>
clientBuilder.ConfigureOptions(
options => options.EnableTenantDiscovery = true));
Client Gesundheitsprüfungen der Integration
Standardmäßig aktivieren .NET.NET Aspire Integrationen Integritätsprüfungen für alle Dienste. Weitere Informationen finden Sie unter .NET.NET Aspire Integrationsübersicht.
Integration der .NET AspireAzure Datentabellen:
- Fügt die Integritätsprüfung hinzu, wenn AzureDataTablesSettings.DisableHealthChecks
false
ist, wodurch versucht wird, eine Verbindung mit der Azure Table Storageherzustellen. - Integriert sich mit dem
/health
HTTP-Endpunkt, der spezifiziert, dass alle registrierten Integritätsprüfungen erfolgreich sein müssen, damit die App als bereit zur Aufnahme von Datenverkehr gilt.
Observability und Telemetrie
.NET .NET Aspire Integrationen richten automatisch Protokollierungs-, Ablaufverfolgungs- und Metrikkonfigurationen ein, die manchmal als den Säulen der Observabilitybezeichnet werden. Weitere Informationen zur Integrationsbeobachtbarkeit und Telemetrie finden Sie unter .NET.NET Aspire Integrationsübersicht. Abhängig vom unterstützenden Dienst unterstützen einige Integrationen möglicherweise nur einige dieser Funktionen. Beispielsweise unterstützen einige Integrationen Protokollierung und Ablaufverfolgung, aber keine Metriken. Telemetrie-Features können auch mithilfe der Techniken deaktiviert werden, die im Abschnitt Konfiguration dargestellt werden.
Protokollierung
Die Integration von .NET AspireAzure Datentabellen verwendet die folgenden Protokollkategorien:
Azure.Core
Azure.Identity
Nachverfolgung
Die Integration der .NET AspireAzure-Datentabellen gibt die folgenden Protokollierungsaktivitäten mithilfe von OpenTelemetryaus.
Azure.Data.Tables.TableServiceClient
Kennzahlen
Die Integration von .NET AspireAzure-Datentabellen unterstützt derzeit Metriken nicht standardmäßig aufgrund von Einschränkungen mit dem Azure SDK.