Udostępnij za pośrednictwem


Tworzenie obiektów klienta korzystających z zasobów danych i zarządzanie nimi

Zestawy SDK platformy Azure to kolekcje bibliotek utworzonych w celu ułatwienia korzystania z usług platformy Azure z różnych języków. Zestawy SDK zostały zaprojektowane w celu uproszczenia interakcji między aplikacją a zasobami platformy Azure. Praca z zasobami platformy Azure przy użyciu zestawu SDK rozpoczyna się od utworzenia wystąpienia klienta. W tym artykule przedstawiono sposób tworzenia obiektów klienta w celu interakcji z zasobami danych w usłudze Azure Blob Storage i oferuje najlepsze rozwiązania dotyczące zarządzania klientami w aplikacji.

Informacje o obiektach klienta

Biblioteki klienta usługi Azure Blob Storage umożliwiają interakcję z trzema typami zasobów w usłudze magazynu:

  • Konta magazynu
  • Kontenery obiektów blob
  • Obiekty blob

W zależności od potrzeb aplikacji można tworzyć obiekty klienta na dowolnym z tych trzech poziomów.

W przypadku obiektów blob istnieje ogólny klient obiektów blob, który obejmuje typowe operacje obiektów blob we wszystkich typach i istnieją wyspecjalizowani klienci obiektów blob dla każdego typu (blokowy obiekt blob, uzupełnialne obiekty blob i stronicowy obiekt blob).

W poniższej tabeli wymieniono różne klasy klientów dla każdego języka:

Język Pakiety Klasa klienta usługi Kontener client class (Klasa klienta kontenera) Klasy klientów obiektów blob
.NET Azure.Storage.Blobs
Azure.Storage.Blobs.Models
Azure.Storage.Blobs.Specialized
BlobServiceClient BlobContainerClient Obiekt blobClient
BlockBlobClient
AppendBlobClient
PageBlobClient
Java com.azure.storage.blob
com.azure.storage.blob.models
com.azure.storage.blob.specialized
BlobServiceClient
BlobServiceAsyncClient
BlobServiceClientBuilder
BlobContainerClient
BlobContainerAsyncClient
BlobContainerClientBuilder
Obiekt blobClient
BlobAsyncClient
BlobClientBuilder
BlockBlobClient
AppendBlobClient
PageBlobClient
JavaScript @azure/storage-blob BlobServiceClient ContainerClient Obiekt blobClient
BlockBlobClient
AppendBlobClient
PageBlobClient
Python azure.storage.blob BlobServiceClient ContainerClient BlobClient1

1 W przypadku języka Python zawiera BlobClient metody wyspecjalizowanych typów obiektów blob.

Każdy typ klienta można utworzyć wystąpienie przez wywołanie prostego konstruktora lub przeciążenie, które przyjmuje różne opcje konfiguracji. W przypadku języka Java każdy typ klienta ma oddzielną klasę, która udostępnia interfejs API konstruktora, który ułatwia konfigurację i tworzenie wystąpień. W zależności od zestawu SDK języka te opcje konfiguracji klienta są przekazywane do konstruktora na różne sposoby. Aby uzyskać szczegółowe informacje, zobacz odwołanie do klasy z tabeli.

Autoryzowanie obiektu klienta

Aby aplikacja uzyskiwała dostęp do zasobów obiektów blob i wchodziła z nimi w interakcje, należy autoryzować obiekt klienta. Przykłady kodu w tym artykule używają elementu DefaultAzureCredential do uwierzytelniania na platformie Azure za pośrednictwem podmiotu zabezpieczeń firmy Microsoft Entra. Proces uwierzytelniania obejmuje uzyskanie tokenu dostępu do autoryzacji. Ten token dostępu jest przekazywany jako poświadczenie po utworzeniu wystąpienia klienta, a poświadczenie jest utrwalane przez cały okres istnienia klienta. Podmiot zabezpieczeń firmy Microsoft żądający tokenu musi mieć przypisaną odpowiednią rolę RBAC platformy Azure, która udziela dostępu do danych obiektów blob. Aby dowiedzieć się więcej, zobacz Przypisywanie roli platformy Azure w celu uzyskania dostępu do danych obiektów blob.

Następujące mechanizmy autoryzacji mogą służyć do udzielania odpowiedniego poziomu dostępu do obiektu klienta:

Aby dowiedzieć się więcej na temat autoryzacji, zobacz Autoryzowanie dostępu do danych w usłudze Azure Storage.

Tworzenie obiektu klienta

Praca z dowolnym zasobem platformy Azure przy użyciu zestawu SDK rozpoczyna się od utworzenia obiektu klienta. W tej sekcji dowiesz się, jak tworzyć obiekty klienta do interakcji z trzema typami zasobów w usłudze magazynu: kontami magazynu, kontenerami i obiektami blob.

Gdy aplikacja tworzy obiekt klienta, przekazujesz identyfikator URI odwołujący się do punktu końcowego do konstruktora klienta. Możesz utworzyć ciąg punktu końcowego ręcznie, jak pokazano w przykładach w tym artykule, lub wykonać zapytanie dotyczące punktu końcowego w czasie wykonywania przy użyciu biblioteki zarządzania usługi Azure Storage. Aby dowiedzieć się, jak wykonywać zapytania dotyczące punktu końcowego, zobacz Zapytanie dotyczące punktu końcowego usługi Blob Storage.

Tworzenie obiektu BlobServiceClient

Autoryzowany BlobServiceClient obiekt umożliwia aplikacji interakcję z zasobami na poziomie konta magazynu. BlobServiceClient Udostępnia metody pobierania i konfigurowania właściwości konta, a także listy, tworzenia i usuwania kontenerów na koncie magazynu. Ten obiekt klienta jest punktem wyjścia do interakcji z zasobami na koncie magazynu.

Typowym scenariuszem jest utworzenie wystąpienia pojedynczego klienta usługi, a następnie utworzenie klientów kontenera i klientów obiektów blob z poziomu klienta usługi zgodnie z potrzebami. Aby pracować z określonym kontenerem lub obiektem blob, możesz użyć BlobServiceClient obiektu do utworzenia klienta kontenera lub klienta obiektów blob. Klienci utworzeni na podstawie BlobServiceClient klasy dziedziczą konfigurację klienta, w tym opcje klienta i poświadczenia.

W poniższych przykładach pokazano, jak utworzyć BlobServiceClient obiekt:

Dodaj następujące using dyrektywy:

using Azure.Identity;
using Azure.Storage.Blobs;

Dodaj następujący kod, aby utworzyć obiekt klienta:

public BlobServiceClient GetBlobServiceClient(string accountName)
{
    BlobServiceClient client = new(
        new Uri($"https://{accountName}.blob.core.windows.net"),
        new DefaultAzureCredential());

    return client;
}

Tworzenie obiektu BlobContainerClient

Możesz użyć obiektu do utworzenia BlobServiceClient nowego BlobContainerClient obiektu (ContainerClient dla języków JavaScript i Python). Obiekt BlobContainerClient umożliwia interakcję z określonym zasobem kontenera. Ten zasób nie musi istnieć na koncie magazynu, aby utworzyć obiekt klienta. BlobContainerClient Udostępnia metody tworzenia, usuwania lub konfigurowania kontenera oraz zawiera metody wyświetlania, przekazywania i usuwania w nim obiektów blob. Aby wykonać operacje na określonym obiekcie blob w kontenerze, możesz utworzyć klienta obiektu blob.

W poniższych przykładach pokazano, jak utworzyć klienta kontenera na podstawie BlobServiceClient obiektu w celu interakcji z określonym zasobem kontenera:

public BlobContainerClient GetBlobContainerClient(
    BlobServiceClient blobServiceClient,
    string containerName)
{
    // Create the container client using the service client object
    BlobContainerClient client = blobServiceClient.GetBlobContainerClient(containerName);
    return client;
}

Jeśli praca jest ograniczona do pojedynczego kontenera, możesz utworzyć BlobContainerClient obiekt bezpośrednio bez użycia polecenia BlobServiceClient. Nadal można ustawić opcje klienta na kliencie kontenera, tak jak w przypadku klienta usługi.

W poniższych przykładach pokazano, jak utworzyć klienta kontenera bezpośrednio bez użycia polecenia BlobServiceClient:

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;
}

Tworzenie obiektu BlobClient

Aby wchodzić w interakcje z określonym zasobem obiektów blob, utwórz BlobClient obiekt na podstawie klienta usługi lub klienta kontenera. Obiekt BlobClient umożliwia interakcję z określonym zasobem obiektu blob. Ten zasób nie musi istnieć na koncie magazynu, aby utworzyć obiekt klienta. BlobClient Udostępnia metody przekazywania, pobierania, usuwania i tworzenia migawek obiektu blob.

W poniższych przykładach pokazano, jak utworzyć klienta obiektów blob w celu interakcji z określonym zasobem obiektu blob:

public BlobClient GetBlobClient(
    BlobServiceClient blobServiceClient,
    string containerName,
    string blobName)
{
    BlobClient client =
        blobServiceClient.GetBlobContainerClient(containerName).GetBlobClient(blobName);
    return client;
}

Zarządzanie obiektami klienta

Najlepszym rozwiązaniem do zarządzania klientami zestawu Azure SDK jest traktowanie klienta jako pojedynczego, co oznacza, że klasa będzie mieć tylko jeden obiekt naraz. Nie ma potrzeby przechowywania więcej niż jednego wystąpienia klienta dla danego zestawu parametrów konstruktora lub opcji klienta. Tę koncepcję można zaimplementować na wiele sposobów, w tym:

Takie podejście jest znacznie bardziej wydajne na dużą skalę niż wywoływanie konstruktora dla każdego potrzebnego klienta.

Niezmienność klienta i bezpieczeństwo wątków

Klienci zestawu Azure SDK są niezmienni po ich utworzeniu, co oznacza, że nie można zmienić punktu końcowego, z którym nawiązuje połączenie, poświadczeń używanych do autoryzacji lub innych wartości przekazywanych jako opcje klienta. Niezmienność klienta oznacza również, że klienci są bezpieczni do udostępniania i ponownego używania w całej aplikacji.

Jeśli aplikacja musi używać różnych konfiguracji lub poświadczeń dla klientów tego samego typu, możesz utworzyć wystąpienie klienta dla każdego zestawu opcji konfiguracji.

Zestaw Azure SDK gwarantuje, że wszystkie metody wystąpienia klienta są bezpieczne wątkowo i niezależne od siebie. Dzięki temu udostępnianie i ponowne korzystanie z wystąpień klientów jest zawsze bezpieczne, nawet w wątkach.

Następne kroki

Aby dowiedzieć się więcej o korzystaniu z bibliotek klienckich usługi Azure Storage do pracy z zasobami danych, zobacz następujące artykuły: