مشاركة عبر


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

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

تستخدم أساليب مكتبة العميل المغطاة في هذه المقالة عمليات Put Blob From URL و Put Block From URL REST API. يفضل استخدام هذه الأساليب لسيناريوهات النسخ حيث تريد نقل البيانات إلى حساب تخزين ولديك عنوان URL للكائن المصدر. لعمليات النسخ حيث تريد جدولة غير متزامنة، راجع نسخ كائن ثنائي كبير الحجم بجدولة غير متزامنة باستخدام .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 Contributor أو أعلى. لمعرفة المزيد، راجع إرشادات التخويل ل Put Blob From URL (REST API) أو Put Block From URL (REST API).

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

Put Blob From URL تنشئ العملية كائنا ثنائيا جديدا للكتلة حيث تتم قراءة محتويات الكائن الثنائي كبير الحجم من عنوان URL معين. تكتمل العملية بشكل متزامن.

يمكن أن يكون المصدر أي كائن قابل للاسترداد عبر طلب HTTP GET قياسي على عنوان URL المحدد. يتضمن ذلك الكائنات الثنائية كبيرة الحجم للكتلة أو الكائنات الثنائية كبيرة الحجم للإلحاق أو الكائنات الثنائية كبيرة الحجم للصفحة أو لقطات الكائنات الثنائية كبيرة الحجم أو إصدارات الكائن الثنائي كبير الحجم أو أي عنصر يمكن الوصول إليه داخل Azure أو خارجه.

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

الوجهة هي دائما كائن ثنائي كبير الحجم للكتلة، إما كائن ثنائي كبير الحجم للكتلة موجود، أو كائن ثنائي كبير الحجم جديد للكتلة تم إنشاؤه بواسطة العملية. تتم الكتابة فوق محتويات كائن ثنائي كبير الحجم موجود بمحتويات الكائن الثنائي كبير الحجم الجديد.

تنسخ Put Blob From URL العملية دائما الكائن الثنائي كبير الحجم المصدر بأكمله. نسخ نطاق من وحدات البايت أو مجموعة من الكتل غير مدعوم. لإجراء تحديثات جزئية لمحتويات كائن ثنائي كبير الحجم للكتلة باستخدام عنوان URL المصدر، استخدم واجهة برمجة تطبيقات Put Block From URL مع Put Block List.

لمعرفة المزيد حول العملية، بما في Put Blob From URL ذلك قيود حجم الكائن الثنائي كبير الحجم واعتبارات الفوترة، راجع وضع ملاحظات Blob From URL.

نسخ كائن ثنائي كبير الحجم من عنوان URL لكائن مصدر

يقدم هذا القسم نظرة عامة على الأساليب التي توفرها مكتبة عميل Azure Storage ل .NET لتنفيذ عملية نسخ من عنوان URL للكائن المصدر.

تقوم الطرق التالية بتضمين عملية Put Blob From URL REST API، وإنشاء كتلة blob جديدة حيث تتم قراءة محتويات الكائن الثنائي كبير الحجم من عنوان URL معين:

يفضل استخدام هذه الأساليب للسيناريوهات التي تريد فيها نقل البيانات إلى حساب تخزين ولديك عنوان URL للكائن المصدر.

بالنسبة للكائنات الكبيرة، يمكنك اختيار العمل مع كتل فردية. تقوم الأساليب التالية بتضمين عملية Put Block From URL REST API. تنشئ هذه الطرق كتلة جديدة ليتم الالتزام بها كجزء من كائن ثنائي كبير الحجم حيث تتم قراءة المحتويات من عنوان URL المصدر:

نسخ كائن ثنائي كبير الحجم من مصدر داخل Azure

إذا كنت تقوم بنسخ كائن ثنائي كبير الحجم من مصدر داخل Azure، يمكن التصريح بالوصول إلى الكائن الثنائي كبير الحجم المصدر عبر معرف Microsoft Entra أو توقيع وصول مشترك (SAS) أو مفتاح حساب.

يوضح المثال التالي سيناريو للنسخ من كائن ثنائي كبير الحجم المصدر داخل Azure. يمكن لأسلوب SyncUploadFromUriAsync قبول معلمة منطقية اختياريا للإشارة إلى ما إذا كان يجب الكتابة فوق كائن ثنائي كبير الحجم موجود، كما هو موضح في المثال. المعلمة overwrite افتراضيا إلى false.

//-------------------------------------------------
// Copy a blob from the same storage account
//-------------------------------------------------
public static async Task CopyWithinStorageAccountAsync(
    BlobClient sourceBlob,
    BlockBlobClient destinationBlob)
{
    // Get the source blob URI and create the destination blob
    // overwrite param defaults to false
    await destinationBlob.SyncUploadFromUriAsync(sourceBlob.Uri/*, overwrite: false*/);
}

يمكن لأسلوب SyncUploadFromUriAsync أيضا قبول معلمة BlobSyncUploadFromUriOptions لتحديد خيارات إضافية للعملية.

نسخ كائن ثنائي كبير الحجم من مصدر خارج Azure

يمكنك تنفيذ عملية نسخ على أي كائن مصدر يمكن استرداده عبر طلب HTTP GET على عنوان URL معين، بما في ذلك الكائنات التي يمكن الوصول إليها خارج Azure. يوضح المثال التالي سيناريو لنسخ كائن ثنائي كبير الحجم من عنوان URL لكائن مصدر يمكن الوصول إليه.

//-------------------------------------------------
// Copy a blob from an external source
//-------------------------------------------------
public static async Task CopyFromExternalSourceAsync(
    string sourceLocation,
    BlockBlobClient destinationBlob)
{
    Uri sourceUri = new(sourceLocation);

    // Create the destination blob from the source URL
    // overwrite param defaults to false
    await destinationBlob.SyncUploadFromUriAsync(sourceUri/*, overwrite: false*/);
}

الموارد

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

نماذج التعليمات البرمجية

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

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

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

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