Local File Storage در مقابل Blob Storage
Local File Storage فایلها را مستقیماً روی دیسک همان سرور اپلیکیشن ذخیره میکند که ساده و بدون وابستگی خارجی است اما در مقیاسپذیری و محیطهای چندسروری با مشکل مواجه میشود؛ Blob Storage (مثل Azure Blob یا Amazon S3) یک سرویس ذخیرهسازی شیء ابری مجزا از سرور اپلیکیشن است که مقیاسپذیری تقریباً نامحدود و CDN یکپارچه ارائه میدهد.
| ویژگی | Local File Storage | Blob Storage |
|---|---|---|
| مقیاسپذیری افقی | مشکلدار (وابسته به سرور) | عالی (مستقل از سرور اپلیکیشن) |
| هزینه | صفر (فضای دیسک موجود) | پرداخت بر اساس مصرف |
| دسترسی جهانی/CDN | نیاز به پیادهسازی جداگانه | معمولاً یکپارچه |
| مناسب برای | پروژههای کوچک تکسروری | برنامههای production مقیاسپذیر |
کِی از Local File Storage استفاده کنیم؟
برای پروژههای کوچک، محیط توسعه محلی یا سیستمهایی که همیشه روی یک سرور واحد اجرا میشوند و نیازی به مقیاس افقی ندارند، ذخیرهسازی محلی فایل میتواند کافی باشد.
کِی از Blob Storage استفاده کنیم؟
برای هر اپلیکیشن production با احتمال چند instance (Load Balancer، Auto Scaling)، حجم بالای فایل یا نیاز به تحویل سریع جهانی (CDN)، از Blob Storage استفاده کنید — چون فایل نباید به یک سرور خاص وابسته باشد.
مثال Local File Storage
var path = Path.Combine("wwwroot/uploads", fileName);
await using var stream = File.Create(path);
await file.CopyToAsync(stream);
مثال Blob Storage
var blobClient = containerClient.GetBlobClient(fileName);
await blobClient.UploadAsync(file.OpenReadStream(), overwrite: true);
var url = blobClient.Uri;
اشتباه رایج
استقرار یک اپلیکیشن با چند instance پشت Load Balancer در حالی که فایلها روی دیسک محلی هر سرور ذخیره میشوند — کاربری که فایل را در یک سرور آپلود کرده، اگر درخواست بعدی به سرور دیگری برود، فایل را "گمشده" میبیند. این مشکل کلاسیک مقیاسپذیری با Local Storage است.
جمعبندی
پروژه تکسروری کوچک → Local Storage قابل قبول است؛ هر چیزی که قرار است مقیاس یابد یا چند instance داشته باشد → همیشه Blob Storage.
