Erstellen und Verwalten von Clientobjekten, die mit Datenressourcen interagieren
Die Azure SDKs sind Sammlungen von Bibliotheken, die die Verwendung von Azure-Diensten mithilfe verschiedener Sprachen vereinfachen. Die SDKs wurden entwickelt, um Interaktionen zwischen Ihrer Anwendung und Azure-Ressourcen einfacher zu machen. Das Arbeiten mit Azure-Ressourcen mithilfe des SDK beginnt mit dem Erstellen einer Clientinstanz. In diesem Artikel erfahren Sie, wie Sie Clientobjekte erstellen, um mit Datenressourcen in Azure Blob Storage zu interagieren. Außerdem stellen wir Ihnen bewährte Methoden zum Verwalten von Clients in Ihrer Anwendung vor.
Informationen zu Clientobjekten
Mit den Azure Blob Storage-Clientbibliotheken können Sie mit drei Ressourcentypen im Speicherdienst interagieren:
- Speicherkonten
- Blobcontainer
- BLOBs
Abhängig von den Anforderungen Ihrer Anwendung können Sie Clientobjekte auf einer dieser drei Ebenen erstellen.
Für Blobs gibt es einen allgemeinen Blobclient, der häufige Blobvorgänge für alle Typen abdeckt. Außerdem gibt es spezielle Blobclients für jeden Typ (Blockblob, Anfügeblob und Seitenblob).
In der folgenden Tabelle sind die verschiedenen Clientklassen für jede Sprache aufgeführt:
1 Für Python umfasst BlobClient
Methoden für spezialisierte Blobtypen.
Jeder Clienttyp kann durch Aufrufen eines einfachen Konstruktors oder durch ein Überladen instanziiert werden, das verschiedene Konfigurationsoptionen bietet. Für Java verfügt jeder Clienttyp über eine separate Klasse, die eine Builder-API bereitstellt, um bei der Konfiguration und Instanziierung zu unterstützen. Abhängig vom Sprach-SDK werden diese Clientkonfigurationsoptionen auf unterschiedliche Weise an den Konstruktor übergeben. Weitere Informationen finden Sie in der Klassenreferenz in der Tabelle.
Ein Clientobjekt autorisieren
Damit eine App auf Blobressourcen zugreifen und mit ihnen interagieren kann, muss ein Clientobjekt autorisiert werden. Die Codebeispiele in diesem Artikel verwenden DefaultAzureCredential, um sich über einen AMicrosoft Entra-Sicherheitsprinzipal bei Azure zu authentifizieren. Der Authentifizierungsprozess umfasst das Abrufen eines Zugriffstokens für die Autorisierung. Dieses Zugriffstoken wird als Anmeldeinformationen übergeben, wenn der Client instanziiert wird, und die Anmeldeinformationen bleiben während der gesamten Lebensdauer des Clients erhalten. Dem Microsoft Entra-Sicherheitsprinzipal, der das Token anfordert, muss eine geeignete Azure RBAC-Rolle zugewiesen werden, die Zugriff auf Blobdaten gewährt. Weitere Informationen finden Sie unter Zuweisen einer Azure-Rolle für den Zugriff auf Blobdaten.
Die folgenden Autorisierungsmechanismen können verwendet werden, um einem Clientobjekt die entsprechende Zugriffsstufe zu gewähren:
- Microsoft Entra ID: Empfohlen für optimale Sicherheit
- Shared Access Signature (SAS): Wird unterstützt, und ist am sichersten bei Verwendung eines SAS-Tokens für die Benutzerdelegierung
- Kontozugriffsschlüssel (Gemeinsam verwendeter Schlüssel): Wird unterstützt, ist aber nicht empfohlen, da er weniger sicher sein kann
Weitere Informationen zur Autorisierung finden Sie unter Autorisieren des Zugriffs auf Daten in Azure Storage.
Erstellen eines Clientobjekts
Das Arbeiten mit jeder Azure-Ressource mithilfe des SDK beginnt mit dem Erstellen eines Clientobjekts. In diesem Abschnitt erfahren Sie, wie Sie Clientobjekte für die Interaktion mit den drei Ressourcentypen im Speicherdienst erstellen: Speicherkonten, Container und Blobs.
Wenn Ihre Anwendung ein Clientobjekt erstellt, übergeben Sie einen URI, der auf den Endpunkt verweist, an den Clientkonstruktor. Sie können die Endpunktzeichenfolge manuell erstellen, wie in den Beispielen in diesem Artikel gezeigt. Sie können den Endpunkt auch zur Laufzeit mithilfe der Azure Storage-Verwaltungsbibliothek abfragen. Informationen zum Abfragen eines Endpunkts finden Sie unter Abfrage eines Blob Storage-Endpunkts.
Erstellen des Objekts BlobServiceClient
Ein autorisiertes BlobServiceClient
-Objekt ermöglicht Ihrer App die Interaktion mit Ressourcen auf Speicherkontoebene. BlobServiceClient
stellt Methoden zum Abrufen und Konfigurieren von Kontoeigenschaften sowie zum Auflisten, Erstellen und Löschen von Containern innerhalb des Speicherkontos zur Verfügung. Dieses Clientobjekt ist der Ausgangspunkt für die Interaktion mit Ressourcen im Speicherkonto.
Ein gängiges Szenario besteht darin, einen einzelnen Dienstclient zu instanziieren und dann nach Bedarf Containerclients und Blobclients aus dem Dienstclient zu erstellen. Um mit einem bestimmten Container oder Blob zu arbeiten, können Sie das BlobServiceClient
-Objekt verwenden, um einen Containerclient oder Blobclient zu erstellen. Clients, die aus einem BlobServiceClient
erstellt werden, erben die Clientkonfiguration, einschließlich der Clientoptionen und der Anmeldeinformationen.
Im folgenden Beispiel wird das Erstellen eines BlobServiceClient
-Objekts veranschaulicht:
Fügen Sie die folgenden using
-Anweisungen hinzu:
using Azure.Identity;
using Azure.Storage.Blobs;
Fügen Sie folgenden Code hinzu, um das Clientobjekt zu erstellen:
public BlobServiceClient GetBlobServiceClient(string accountName)
{
BlobServiceClient client = new(
new Uri($"https://{accountName}.blob.core.windows.net"),
new DefaultAzureCredential());
return client;
}
Erstellen eines BlobContainerClient-Objekts
Sie können ein BlobServiceClient
-Objekt verwenden, um ein neues BlobContainerClient
-Objekt (ein ContainerClient
-Objekt für JavaScript und Python) zu erstellen. Mit einem BlobContainerClient
-Objekt können Sie mit einer bestimmten Containerressource interagieren. Diese Ressource muss nicht im Speicherkonto vorhanden sein, damit Sie das Clientobjekt erstellen können. BlobContainerClient
stellt Methoden zum Erstellen, Löschen oder Konfigurieren eines Containers zur Verfügung und enthält Methoden zum Auflisten, Hochladen und Löschen der enthaltenen Blobs. Um Vorgänge für ein bestimmtes Blob innerhalb des Containers auszuführen, können Sie einen Blobclient erstellen.
Die folgenden Beispiele zeigen, wie Sie einen Containerclient aus einem BlobServiceClient
-Objekt erstellen, um mit einer bestimmten Containerressource zu interagieren:
public BlobContainerClient GetBlobContainerClient(
BlobServiceClient blobServiceClient,
string containerName)
{
// Create the container client using the service client object
BlobContainerClient client = blobServiceClient.GetBlobContainerClient(containerName);
return client;
}
Wenn Ihre Arbeit vor allem auf einen einzelnen Container beschränkt ist, können Sie ein BlobContainerClient
-Objekt auch direkt erstellen, ohne BlobServiceClient
zu verwenden. Sie können weiterhin Clientoptionen für einen Containerclient festlegen, wie Sie es für einen Dienstclient tun würden.
Die folgenden Beispiele zeigen, wie Sie einen Containerclient direkt erstellen, ohneBlobServiceClient
zu verwenden:
public BlobContainerClient GetBlobContainerClient(
string accountName,
string containerName,
BlobClientOptions clientOptions)
{
// Append the container name to the end of the URI
BlobContainerClient client = new(
new Uri($"https://{accountName}.blob.core.windows.net/{containerName}"),
new DefaultAzureCredential(),
clientOptions);
return client;
}
Erstellen des Objekts BlobClient
Um mit einer bestimmten Blobressource zu interagieren, erstellen Sie ein BlobClient
-Objekt aus einem Dienst- oder Containerclient. Mit einem BlobClient
-Objekt können Sie mit einer bestimmten Blobressource interagieren. Diese Ressource muss nicht im Speicherkonto vorhanden sein, damit Sie das Clientobjekt erstellen können. BlobClient
stellt Methoden zum Hochladen, Herunterladen, Löschen und Erstellen von Momentaufnahmen eines Blobs zur Verfügung.
Die folgenden Beispiele zeigen, wie Sie einen Blobclient für die Interaktion mit einer bestimmten Blobressource erstellen:
public BlobClient GetBlobClient(
BlobServiceClient blobServiceClient,
string containerName,
string blobName)
{
BlobClient client =
blobServiceClient.GetBlobContainerClient(containerName).GetBlobClient(blobName);
return client;
}
Verwalten von Clientobjekten
Eine bewährte Methode für die Azure SDK-Clientverwaltung besteht darin, einen Client als Singleton zu behandeln, was bedeutet, dass eine Klasse jeweils nur ein Objekt aufweist. Es ist nicht erforderlich, mehr als eine Instanz eines Clients für einen bestimmten Satz von Konstruktorparametern oder Clientoptionen beizubehalten. Dieses Konzept kann auf viele Arten implementiert werden, einschließlich:
- Erstellen eines einzelnen Clientobjekts und Übergeben als Parameter für die gesamte Anwendung. Dieser Ansatz wird in den Codebeispielen in diesem Artikel veranschaulicht.
- Speichern einer Clientinstanz in einem Feld. Weitere Informationen zu C#-Feldern finden Sie unter Felder (C#-Programmierhandbuch).
- Registrieren des Clientobjekts als Singleton in einem Abhängigkeitsinjektionscontainer Ihrer Wahl. Weitere Informationen zur Abhängigkeitsinjektion in ASP.NET Core-Apps finden Sie unter Abhängigkeitsinjektion mit dem Azure SDK für .NET.
Dieser Ansatz ist im großen Stil viel effizienter als das Aufrufen eines Konstruktors für jeden benötigten Client.
Unveränderlichkeit des Clients und Threadsicherheit
Azure SDK-Clients sind nach der Erstellung unveränderlich. Dies bedeutet, dass Sie den Endpunkt, mit dem sie eine Verbindung herstellen, die für die Autorisierung verwendeten Anmeldeinformationen oder andere Werte, die als Clientoptionen übergeben wurden, nicht mehr ändern können. Die Unveränderlichkeit des Clients bedeutet auch, dass Clients in der gesamten Anwendung sicher geteilt und wiederverwendet werden können.
Wenn Ihre App unterschiedliche Konfigurationen oder verschiedene Anmeldeinformationen für Clients desselben Typs verwenden muss, können Sie einen Client für jeden Satz von Konfigurationsoptionen instanziieren.
Das Azure SDK garantiert, dass alle Clientinstanzmethoden threadsicher und voneinander unabhängig sind. Dieses Design stellt sicher, dass die Wiederverwendung von Clientinstanzen auch threadübergreifend stets sicher ist.
Nächste Schritte
Weitere Informationen zur Verwendung der Azure Storage-Clientbibliotheken für die Arbeit mit Datenressourcen finden Sie in den folgenden Artikeln: