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