إنشاء لقطة كائن ثنائي كبير الحجم وإدارتها باستخدام .NET

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

لمزيد من المعلومات حول لقطات كائن ثنائي كبير الحجم في تخزين Azure، راجع لقطات كائن ثنائي كبير الحجم.

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

إعداد بيئتك

إذا لم يكن لديك مشروع موجود، يوضح لك هذا القسم كيفية إعداد مشروع للعمل مع مكتبة عميل 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 Contributor أو أعلى. لمعرفة المزيد، راجع إرشادات التخويل ل Snapshot Blob.

إنشاء لقطة

لإنشاء لقطة لكتلة كائن ثنائي كبير الحجم، استخدم إحدى الطرق التالية:

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

private static async Task CreateBlockBlobSnapshot(
    string accountName,
    string containerName, 
    string blobName,
    Stream data)
{
    const string blobServiceEndpointSuffix = ".blob.core.windows.net";
    Uri containerUri = 
        new Uri("https://" + accountName + blobServiceEndpointSuffix + "/" + containerName);

    // Get a container client object and create the container.
    BlobContainerClient containerClient = new BlobContainerClient(containerUri,
        new DefaultAzureCredential());
    await containerClient.CreateIfNotExistsAsync();

    // Get a blob client object.
    BlobClient blobClient = containerClient.GetBlobClient(blobName);

    try
    {
        // Upload text to create a block blob.
        await blobClient.UploadAsync(data);

        // Add blob metadata.
        IDictionary<string, string> metadata = new Dictionary<string, string>
        {
            { "ApproxBlobCreatedDate", DateTime.UtcNow.ToString() },
            { "FileType", "text" }
        };
        await blobClient.SetMetadataAsync(metadata);

        // Sleep 5 seconds.
        System.Threading.Thread.Sleep(5000);

        // Create a snapshot of the base blob.
        // You can specify metadata at the time that the snapshot is created.
        // If no metadata is specified, then the blob's metadata is copied to the snapshot.
        await blobClient.CreateSnapshotAsync();
    }
    catch (RequestFailedException e)
    {
        Console.WriteLine(e.Message);
        Console.ReadLine();
        throw;
    }
}

حذف اللقطات

لحذف كائن ثنائي كبير الحجم، يجب عليك أولا حذف أي لقطات من ذلك الكائن الثنائي كبير الحجم. يمكنك حذف لقطة بشكل فردي، أو تحديد حذف جميع اللقطات عند حذف الكائن الثنائي كبير الحجم المصدر. إذا حاولت حذف كائن ثنائي كبير الحجم لا يزال يحتوي على لقطات، ينتج عن ذلك خطأ.

لحذف كائن ثنائي كبير الحجم ولقطاته، استخدم إحدى الطرق التالية، وقم بتضمين قائمة تعداد DeleteSnapshotsOption :

يوضح مثال التعليمات البرمجية التالي كيفية حذف كائن ثنائي كبير الحجم ولقطاته في .NET، حيث blobClient هو كائن من نوع BlobClient:

await blobClient.DeleteIfExistsAsync(DeleteSnapshotsOption.IncludeSnapshots, null, default);

نسخ لقطة كائن ثنائي كبير الحجم عبر الكائن الثنائي كبير الحجم الأساسي

يمكنك تنفيذ عملية نسخ لتعزيز لقطة عبر الكائن الثنائي كبير الحجم الأساسي الخاص به، طالما أن الكائن الثنائي كبير الحجم الأساسي في طبقة عبر الإنترنت (ساخن أو بارد). تبقى اللقطة، ولكن تتم الكتابة فوق وجهتها بنسخة يمكن قراءتها وكتابتها إليها.

يوضح مثال التعليمات البرمجية التالي كيفية نسخ لقطة كائن ثنائي كبير الحجم عبر الكائن الثنائي كبير الحجم الأساسي:

public static async Task<BlockBlobClient> CopySnapshotOverBaseBlobAsync(
    BlockBlobClient client,
    string snapshotTimestamp)
{
    // Instantiate BlockBlobClient with identical URI and add snapshot timestamp
    BlockBlobClient snapshotClient = client.WithSnapshot(snapshotTimestamp);

    // Restore the specified snapshot by copying it over the base blob
    await client.SyncUploadFromUriAsync(snapshotClient.Uri, overwrite: true);

    // Return the client object after the copy operation
    return client;
}

الموارد

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

للحصول على نماذج التعليمات البرمجية ذات الصلة باستخدام حزم SDK للإصدار 11.x من .NET المهملة، راجع نماذج التعليمات البرمجية باستخدام .NET الإصدار 11.x.

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

(راجع أيضًا )