مشاركة عبر


إدارة خصائص الكائن ثنائي الحجم وبيانات التعريف باستخدام .NET

بالإضافة إلى البيانات التي تحتوي عليها، تدعم الكائنات ثنائية الحجم خصائص النظام وبيانات التعريف المعرفة من قبل المستخدم. توضح هذه المقالة كيفية إدارة خصائص النظام وبيانات التعريف المعرفة بواسطة المستخدم باستخدام مكتبة عميل Azure Storage لـ .NET .

المتطلبات الأساسية

إعداد بيئتك

إذا لم يكن لديك مشروع موجود، يوضح لك هذا القسم كيفية إعداد مشروع للعمل مع مكتبة عميل Azure Blob Storage ل .NET. تتضمن الخطوات تثبيت الحزمة وإضافة using التوجيهات وإنشاء كائن عميل معتمد. للحصول على التفاصيل، راجع بدء استخدام Azure Blob Storage و.NET.

تثبيت الحزم

من دليل المشروع الخاص بك، قم بتثبيت حزم Azure Blob Storage ومكتبات عميل Azure Identity باستخدام dotnet add package الأمر . حزمة Azure.Identity مطلوبة للاتصالات بدون كلمة مرور بخدمات Azure.

dotnet add package Azure.Storage.Blobs
dotnet add package Azure.Identity

أضف توجيهات using

أضف هذه using التوجيهات إلى أعلى ملف التعليمات البرمجية:

using Azure.Identity;
using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;
using Azure.Storage.Blobs.Specialized;

قد تتطلب بعض أمثلة التعليمات البرمجية في هذه المقالة توجيهات إضافية using .

إنشاء كائن عميل

لتوصيل تطبيق ب Blob Storage، قم بإنشاء مثيل BlobServiceClient. يوضح المثال التالي كيفية إنشاء كائن عميل باستخدام DefaultAzureCredential للتخويل:

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

    return client;
}

يمكنك تسجيل عميل خدمة لإدخال التبعية في تطبيق .NET.

يمكنك أيضا إنشاء كائنات العميل لحاويات أو كائنات ثنائية كبيرة الحجم معينة. لمعرفة المزيد حول إنشاء كائنات العميل وإدارتها، راجع إنشاء كائنات العميل التي تتفاعل مع موارد البيانات وإدارتها.

التصريح

يجب أن يكون لآلية التخويل الأذونات اللازمة للعمل مع خصائص الحاوية أو بيانات التعريف. للحصول على تخويل باستخدام معرف Microsoft Entra (موصى به)، تحتاج إلى دور Azure RBAC المضمن في Storage Blob Data Reader أو أعلى لعمليات الحصول ، وStorage Blob Data Contributor أو أعلى لعمليات المجموعة . لمعرفة المزيد، راجع إرشادات التخويل لتعيين خصائص Blob (REST API) أو Get Blob Properties (REST API) أو Set Blob Metadata (REST API) أو Get Blob Metadata (REST API).

نبذة عن الخصائص وبيانات التعريف

  • خصائص النظام: توجد خصائص النظام على كل مورد تخزين Blob. يمكن قراءة بعضها أو تعيينها، بينما البعض الآخر للقراءة فقط. تحت الأغلفة، تتوافق بعض خصائص النظام مع بعض عناوين HTTP القياسية المعينة. تحتفظ مكتبة عميل تخزين Azure Storage ل.NET بهذه الخصائص لك.

  • بيانات التعريف المحددة مسبقًا من المستخدم: تتكون بيانات التعريف المحددة مسبقًا من المستخدم من زوج واحد أو أكثر من أزواج قيمة الاسم التي تحددها لمورد تخزين Blob. يمكنك استخدام بيانات التعريف لتخزين قيم إضافية مع المورد. قيم بيانات التعريف هي لأغراضك فقط، ولا تؤثر على كيفية تصرف المورد.

    أزواج اسم/قيمة بيانات التعريف هي رؤوس HTTP صالحة ويجب أن تلتزم بجميع القيود التي تحكم رؤوس HTTP. لمزيد من المعلومات حول متطلبات تسمية بيانات التعريف، راجع أسماء بيانات التعريف.

إشعار

أيضاً توفر علامات فهرسة الكائنات الثنائية كبيرة الحجم القدرة على تخزين سمات المفاتيح/القيم المُعرّفة من قِبل المستخدم جنباً إلى جنب مع مورد مساحة تخزين Azure Blob. بينما تتشابه علامات فهرسة الكائنات الثنائية كبيرة الحجم مع بيانات التعريف، فهي تختلف في أنه تتم فهرستها تلقائياً وتصبح قابلة للبحث بواسطة الخدمة الأصلية للكائنات الثنائية كبيرة الحجم. لا يمكن فهرسة بيانات التعريف والاستعلام عنها إلا إذا كنت تستخدم خدمة منفصلة، مثل Azure Search.

لمعرفة المزيد حول هذه الميزة، راجع إدارة البيانات والعثور عليها على تخزين Azure Blob باستخدام فهرس blob.

تعيين الخصائص واستردادها

يعيّن مثال التعليمات البرمجية التالي خصائص النظام ContentType و ContentLanguage على كائن ثنائي كبير الحجم.

لتعيين خصائص كائن ثنائي كبير الحجم، اتصل بـ SetHttpHeaders أو SetHttpHeadersAsync . يتم مسح أي خصائص لم يتم تعيينها صراحة. يحصل مثال التعليمات البرمجية التالي أولا على الخصائص الموجودة على الكائن الثنائي كبير الحجم، ثم يستخدمها لتعبئة العناوين التي لا يتم تحديثها.

public static async Task SetBlobPropertiesAsync(BlobClient blob)
{
    Console.WriteLine("Setting blob properties...");

    try
    {
        // Get the existing properties
        BlobProperties properties = await blob.GetPropertiesAsync();

        BlobHttpHeaders headers = new BlobHttpHeaders
        {
            // Set the MIME ContentType every time the properties 
            // are updated or the field will be cleared
            ContentType = "text/plain",
            ContentLanguage = "en-us",

            // Populate remaining headers with 
            // the pre-existing properties
            CacheControl = properties.CacheControl,
            ContentDisposition = properties.ContentDisposition,
            ContentEncoding = properties.ContentEncoding,
            ContentHash = properties.ContentHash
        };

        // Set the blob's properties.
        await blob.SetHttpHeadersAsync(headers);
    }
    catch (RequestFailedException e)
    {
        Console.WriteLine($"HTTP error code {e.Status}: {e.ErrorCode}");
        Console.WriteLine(e.Message);
        Console.ReadLine();
    }
}

يحصل مثال التعليمة البرمجية التالية على خصائص نظام كائن ثنائي كبير الحجم ويعرض بعض القيم.

private static async Task GetBlobPropertiesAsync(BlobClient blob)
{
    try
    {
        // Get the blob properties
        BlobProperties properties = await blob.GetPropertiesAsync();

        // Display some of the blob's property values
        Console.WriteLine($" ContentLanguage: {properties.ContentLanguage}");
        Console.WriteLine($" ContentType: {properties.ContentType}");
        Console.WriteLine($" CreatedOn: {properties.CreatedOn}");
        Console.WriteLine($" LastModified: {properties.LastModified}");
    }
    catch (RequestFailedException e)
    {
        Console.WriteLine($"HTTP error code {e.Status}: {e.ErrorCode}");
        Console.WriteLine(e.Message);
        Console.ReadLine();
    }
}

تعيين بيانات التعريف واستردادها

يمكنك تحديد بيانات التعريف كزوج واحد أو أكثر من أزواج قيمة الاسم على مورد النقطة أو الحاوية. لتعيين البيانات التعريف، أضف أزواج الاسم والقيمة إلى المجموعة Metadata في المورد. بعد ذلك، اتصل بإحدى الطرق التالية لكتابة القيم:

في مثال التعليمة البرمجية التالي، يتم تعيين بيانات التعريف لكائن ثنائي كبير الحجم. يتم تعيين قيمة واحدة باستخدام طريقة المجموعةAdd. يتم تعيين القيمة الأخرى باستخدام صيغة ضمنية للمفتاح / القيمة.

public static async Task AddBlobMetadataAsync(BlobClient blob)
{
    Console.WriteLine("Adding blob metadata...");

    try
    {
        IDictionary<string, string> metadata =
           new Dictionary<string, string>();

        // Add metadata to the dictionary by calling the Add method
        metadata.Add("docType", "textDocuments");

        // Add metadata to the dictionary by using key/value syntax
        metadata["category"] = "guidance";

        // Set the blob's metadata.
        await blob.SetMetadataAsync(metadata);
    }
    catch (RequestFailedException e)
    {
        Console.WriteLine($"HTTP error code {e.Status}: {e.ErrorCode}");
        Console.WriteLine(e.Message);
        Console.ReadLine();
    }
}

يقرأ المثال التالي من التعليمات البرمجية بيانات التعريف الموجودة على كائن ثنائي كبير الحجم.

لاسترداد بيانات التعريف، اتصل بطريقة GetProperties أو GetPropertiesAsync على كائن ثنائي كبير الحجم أو الحاوية لملء مجموعة بيانات التعريف، ثم اقرأ القيم كما هو موضح في المثال أدناه. يسترد GetProperties الأسلوب خصائص الكائن الثنائي كبير الحجم وبيانات التعريف عن طريق استدعاء كل من عملية Get Blob Properties والعملية Get Blob Metadata .

public static async Task ReadBlobMetadataAsync(BlobClient blob)
{
    try
    {
        // Get the blob's properties and metadata.
        BlobProperties properties = await blob.GetPropertiesAsync();

        Console.WriteLine("Blob metadata:");

        // Enumerate the blob's metadata.
        foreach (var metadataItem in properties.Metadata)
        {
            Console.WriteLine($"\tKey: {metadataItem.Key}");
            Console.WriteLine($"\tValue: {metadataItem.Value}");
        }
    }
    catch (RequestFailedException e)
    {
        Console.WriteLine($"HTTP error code {e.Status}: {e.ErrorCode}");
        Console.WriteLine(e.Message);
        Console.ReadLine();
    }
}

الموارد

لمعرفة المزيد حول كيفية إدارة خصائص النظام وبيانات التعريف المعرفة من قبل المستخدم باستخدام مكتبة عميل Azure Blob Storage ل .NET، راجع الموارد التالية.

عمليات واجهة برمجة تطبيقات REST

يحتوي Azure SDK ل .NET على مكتبات تستند إلى واجهة برمجة تطبيقات AZURE REST، مما يسمح لك بالتفاعل مع عمليات REST API من خلال نماذج .NET المألوفة. تستخدم أساليب مكتبة العميل لإدارة خصائص النظام وبيانات التعريف المعرفة من قبل المستخدم عمليات REST API التالية:

موارد مكتبة العميل

  • هذه المقالة هي جزء من دليل مطور Blob Storage ل .NET. لمعرفة المزيد، راجع القائمة الكاملة لمقالات دليل المطور في إنشاء تطبيق .NET الخاص بك.