Megosztás a következőn keresztül:


Adaterőforrásokkal interakcióba lépő ügyfélobjektumok létrehozása és kezelése

Az Azure SDK-k kódtárak gyűjteményei, amelyek megkönnyítik a különböző nyelvekről származó Azure-szolgáltatások használatát. Az SDK-k célja az alkalmazás és az Azure-erőforrások közötti interakció egyszerűsítése. Az Azure-erőforrások SDK-val való használata egy ügyfélpéldány létrehozásával kezdődik. Ez a cikk bemutatja, hogyan hozhat létre ügyfélobjektumokat az Azure Blob Storage-beli adaterőforrásokkal való interakcióhoz, és ajánlott eljárásokat kínál az ügyfelek alkalmazásbeli kezelésével kapcsolatban.

Tudnivalók az ügyfélobjektumokról

Az Azure Blob Storage-ügyfélkódtárak három típusú erőforrás használatát teszik lehetővé a tárolási szolgáltatásban:

  • Storage fiókok
  • Blobtárolók
  • Blobok

Az alkalmazás igényeitől függően ezen három szint bármelyikében létrehozhat ügyfélobjektumokat.

A blobok esetében létezik egy általános blobügyfél, amely minden típusra kiterjedő gyakori blobműveleteket fed le, és mindegyik típushoz (blokkblob, hozzáfűző blob és lapblob) speciális blobügyfelek tartoznak.

Az alábbi táblázat felsorolja az egyes nyelvekhez tartozó különböző ügyfélosztályokat:

Language Csomagok Szolgáltatásügyfél-osztály Tárolóügyfél-osztály Blob ügyfélosztályok
.NET Azure.Storage.Blobs
Azure.Storage.Blobs.Models
Azure.Storage.Blobs.Special
BlobServiceClient BlobContainerClient BlobClient
BlockBlobClient
AppendBlobClient
PageBlobClient
Java com.azure.storage.blob
com.azure.storage.blob.models
com.azure.storage.blob.specializált
BlobServiceClient
BlobServiceAsyncClient
BlobServiceClientBuilder
BlobContainerClient
BlobContainerAsyncClient
BlobContainerClientBuilder
BlobClient
BlobAsyncClient
BlobClientBuilder
BlockBlobClient
AppendBlobClient
PageBlobClient
JavaScript @azure/storage-blob BlobServiceClient ContainerClient BlobClient
BlockBlobClient
AppendBlobClient
PageBlobClient
Python azure.storage.blob BlobServiceClient ContainerClient BlobClient1

1 Python BlobClient esetén a speciális blobtípusok módszereit tartalmazza.

Minden ügyféltípus példányosítható egy egyszerű konstruktor meghívásával, vagy egy olyan túlterheléssel, amely különböző konfigurációs beállításokat vesz igénybe. Java esetén minden ügyféltípus külön osztálysal rendelkezik, amely egy builder API-t biztosít a konfigurációhoz és a példányosításhoz. A nyelvi SDK-tól függően ezeket az ügyfélkonfigurációs beállításokat a rendszer különböző módokon továbbítja a konstruktornak. Részletekért tekintse meg a táblázat osztályhivatkozását.

Ügyfélobjektum engedélyezése

Ahhoz, hogy egy alkalmazás hozzáférhessen a bloberőforrásokhoz és kommunikáljon velük, engedélyezni kell egy ügyfélobjektumot. A cikkben szereplő kódminták a DefaultAzureCredential használatával hitelesíthetők az Azure-ban egy Microsoft Entra biztonsági tagon keresztül. A hitelesítési folyamat magában foglalja egy hozzáférési jogkivonat beszerzését az engedélyezéshez. Ez a hozzáférési jogkivonat hitelesítő adatként lesz átadva az ügyfél példányosításakor, és a hitelesítő adatok az ügyfél teljes élettartama alatt megmaradnak. A jogkivonatot kérő Microsoft Entra biztonsági taghoz hozzá kell rendelni egy megfelelő Azure RBAC-szerepkört, amely hozzáférést biztosít a blobadatokhoz. További információ: Azure-szerepkör hozzárendelése blobadatokhoz való hozzáféréshez.

Az alábbi engedélyezési mechanizmusokkal biztosíthatja az ügyfélobjektumok megfelelő szintű hozzáférését:

Az engedélyezéssel kapcsolatos további információkért lásd : Adatokhoz való hozzáférés engedélyezése az Azure Storage-ban.

Ügyfélobjektum létrehozása

Bármely Azure-erőforrás SDK-val való használata egy ügyfélobjektum létrehozásával kezdődik. Ebben a szakaszban megtudhatja, hogyan hozhat létre ügyfélobjektumokat a tárolási szolgáltatás három erőforrástípusával való interakcióhoz: tárfiókok, tárolók és blobok.

Amikor az alkalmazás létrehoz egy ügyfélobjektumot, átad egy URI-t, amely a végpontra hivatkozik az ügyfélkonstruktornak. A végponti sztringet manuálisan is létrehozhatja, ahogyan az ebben a cikkben látható példákban látható, vagy lekérdezheti a végpontot futtatókörnyezetben az Azure Storage felügyeleti kódtárával. A végpontok lekérdezéséről a Blob Storage-végpont lekérdezése című témakörben olvashat.

BlobServiceClient-objektum létrehozása

Egy engedélyezett BlobServiceClient objektum lehetővé teszi, hogy az alkalmazás a tárfiók szintjén kommunikáljon az erőforrásokkal. BlobServiceClient metódusokat biztosít a fióktulajdonságok lekéréséhez és konfigurálásához, valamint tárolók listázásához, létrehozásához és törléséhez a tárfiókban. Ez az ügyfélobjektum a tárfiók erőforrásaival való interakció kiindulópontja.

Gyakori forgatókönyv egyetlen szolgáltatásügyfél példányosítása, majd szükség szerint tárolóügyfelek és blobügyfelek létrehozása a szolgáltatásügyfélből. Ha egy adott tárolóval vagy blobgal szeretne dolgozni, az BlobServiceClient objektummal létrehozhat egy tárolóügyfélt vagy blobügyfélt. Az egyből BlobServiceClient létrehozott ügyfelek öröklik az ügyfélkonfigurációt, beleértve az ügyfélbeállításokat és a hitelesítő adatokat.

Az alábbi példák azt mutatják be, hogyan hozhat létre objektumot BlobServiceClient :

Adja hozzá a következő using irányelveket:

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

Adja hozzá a következő kódot az ügyfélobjektum létrehozásához:

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

    return client;
}

BlobContainerClient-objektum létrehozása

Egy objektum használatával BlobServiceClient új BlobContainerClient objektumot hozhat létre (ContainerClient JavaScripthez és Pythonhoz). Az BlobContainerClient objektumok lehetővé teszik egy adott tárolóerőforrás használatát. Ennek az erőforrásnak nem kell léteznie a tárfiókban az ügyfélobjektum létrehozásához. BlobContainerClient metódusokat biztosít a tárolók létrehozásához, törléséhez vagy konfigurálásához, valamint a benne lévő blobok listázására, feltöltésére és törlésére szolgáló metódusokat tartalmaz. Ha egy adott blobon szeretne műveleteket végrehajtani a tárolón belül, létrehozhat egy blobügyfélt.

Az alábbi példák azt mutatják be, hogyan hozhat létre tárolóügyfélt egy BlobServiceClient objektumból egy adott tárolóerőforrás használatához:

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

Ha a munka hatóköre szűken egyetlen tárolóra van korlátozva, akkor dönthet úgy, hogy közvetlenül a használata BlobServiceClientnélkül hoz létre objektumotBlobContainerClient. A tárolóügyfél ügyfélbeállításai továbbra is ugyanúgy beállíthatók, mint egy szolgáltatásügyfélben.

Az alábbi példák bemutatják, hogyan hozhat létre közvetlenül tárolóügyfélt anélkül, hogy a következőt használtákBlobServiceClient:

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

BlobClient-objektum létrehozása

Ha egy adott bloberőforrást szeretne használni, hozzon létre egy BlobClient objektumot egy szolgáltatásügyfélből vagy egy tárolóügyfélből. Az BlobClient objektumok lehetővé teszik egy adott bloberőforrás használatát. Ennek az erőforrásnak nem kell léteznie a tárfiókban az ügyfélobjektum létrehozásához. BlobClient metódusokat biztosít a blobok feltöltéséhez, letöltéséhez, törléséhez és pillanatképek létrehozásához.

Az alábbi példák bemutatják, hogyan hozhat létre blobügyfélt egy adott bloberőforrással való interakcióhoz:

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

Ügyfélobjektumok kezelése

Az Azure SDK-ügyfélkezelés ajánlott eljárása az ügyfél egyszeri kezelése, ami azt jelenti, hogy egy osztálynak egyszerre csak egy objektuma lesz. Egy adott konstruktorparaméterhez vagy ügyfélbeállításokhoz nem kell egynél több ügyfélpéldányt tartania. Ez a koncepció számos módon implementálható, többek között:

  • Egyetlen ügyfélobjektum létrehozása és paraméterként való átadása az egész alkalmazásban. Ez a megközelítés a jelen cikkben szereplő kód példákban látható.
  • Ügyfélpéldány tárolása egy mezőben. A C# mezőkkel kapcsolatos további információkért lásd a Mezők (C# programozási útmutató) című témakört.
  • Az ügyfélobjektum egyszeri regisztrálása egy tetszőleges függőséginjektálási tárolóban. Az ASP.NET Core-alkalmazások függőséginjektálásával kapcsolatos további információkért lásd : Függőséginjektálás az Azure SDK for .NET-hez.

Ez a megközelítés sokkal hatékonyabb, mint konstruktort hívni minden szükséges ügyfélhez.

Ügyfél nem módosítható és menetbiztonság

Az Azure SDK-ügyfelek a létrehozásuk után nem módosíthatók, ami azt jelenti, hogy nem módosítható a végpont, amelyhez csatlakozik, az engedélyezéshez használt hitelesítő adatokat vagy az ügyfélbeállításokként átadott egyéb értékeket. Az ügyfél nem módosíthatósága azt is jelenti, hogy az ügyfelek biztonságosan megoszthatják és újra felhasználhatják az alkalmazást.

Ha az alkalmazásnak különböző konfigurációkat vagy hitelesítő adatokat kell használnia az azonos típusú ügyfelekhez, minden konfigurációs beállításhoz létrehozhat egy ügyfelet.

Az Azure SDK garantálja, hogy minden ügyfélpéldány-metódus szálbiztos és független egymástól. Ez a kialakítás biztosítja, hogy az ügyfélpéldányok megosztása és újrafelhasználása mindig biztonságos legyen, akár több szálon is.

Következő lépések

Az Azure Storage-ügyfélkódtárak adaterőforrásokkal való használatáról az alábbi cikkekben olvashat bővebben: