إلحاق البيانات بكائن ثنائي كبير الحجم للإلحاق باستخدام .NET

يمكنك إلحاق البيانات بكائن ثنائي كبير الحجم عن طريق إنشاء كائن ثنائي كبير الحجم للإلحاق. تتكون "Append blobs" من كتل مثل الكتل النقطية الكبيرة، ولكنها محسّنة لعمليات الإلحاق. الكائنات الثنائية كبيرة الحجم الملحقة مثالية لسيناريوهات، مثل تسجيل البيانات من الأجهزة الظاهرية.

ملاحظة

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

إنشاء كائن ثنائي كبير الحجم خاص بالإلحاق وبيانات الإلحاق

استخدم هذه الأساليب لإنشاء كائن ثنائي كبير الحجم خاص بالإلحاق.

استخدم أحد الأسلوبين التاليين لإلحاق البيانات بالكائن الثنائي كبير الحجم الخاص بالإلحاق هذا:

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

static async Task AppendToBlob(
    BlobContainerClient containerClient,
    MemoryStream logEntryStream,
    string logBlobName)
{
    AppendBlobClient appendBlobClient = containerClient.GetAppendBlobClient(logBlobName);

    await appendBlobClient.CreateIfNotExistsAsync();

    int maxBlockSize = appendBlobClient.AppendBlobMaxAppendBlockBytes;
    long bytesLeft = logEntryStream.Length;
    byte[] buffer = new byte[maxBlockSize];
    while (bytesLeft > 0)
    {
        int blockSize = (int)Math.Min(bytesLeft, maxBlockSize);
        int bytesRead = await logEntryStream.ReadAsync(buffer.AsMemory(0, blockSize));
        await using (MemoryStream memoryStream = new MemoryStream(buffer, 0, bytesRead))
        {
            await appendBlobClient.AppendBlockAsync(memoryStream);
        }
        bytesLeft -= bytesRead;
    }
}

راجع أيضًا