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

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

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

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

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

إنشاء لقطة

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

يوضح مثال التعليمات البرمجية التالي كيفية إنشاء لقطة. قم بتضمين مرجع إلى مكتبة 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.

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

(راجع أيضًا )