يعد Backblaze Agent (العميل) لـ .NET Core تطبيقًا لـ Backblaze B2 Cloud Storage API. يوفر Backblaze B2 Cloud Storage أرخص مساحة تخزين سحابية متاحة على الإنترنت. يعد Backblaze B2 Cloud Storage ¼ سعر موفري التخزين الآخرين. جربه لأن أول 10 جيجابايت من التخزين مجاني.
الدعم الكامل لـ Backblaze B2 Cloud Storage API v2 بما في ذلك الملفات والحسابات والمفاتيح والمجموعات.
تم إنشاء استهداف .NET Standard 2.0 مما يعني أن Backblaze Agent سيعمل على أنظمة Windows وMac وLinux.
يتكامل بسلاسة مع .NET Core Dependency حقن وHttpClientFactory لتنفيذ الطلبات المرنة.
ذاكرة تخزين مؤقت بسيطة للاستجابة في الذاكرة باستخدام MemoryCache.
دعم الملفات الكبيرة مع تخصيص ذاكرة منخفض وحالة IProgress.
الدعم الأصلي لنموذج البرمجة القائمة على المهام (غير متزامن/انتظار).
بالنسبة لطلبات الميزات وتقارير الأخطاء، يرجى فتح مشكلة على GitHub.
لتثبيت Backblaze.Agent، قم بتشغيل الأمر التالي:
> الدوت نت إضافة حزمة Backblaze.Agent
العمل قيد التقدم! في حين أننا نشجع المستخدمين على اللعب بالعينات وبرامج الاختبار، إلا أن هذا المشروع لم يصل بعد إلى حالة مستقرة.
ستحتاج إلى key_id و application_key لتكوين Backblaze Agent. يمكنك الحصول عليها من بوابة Backblaze B2 Cloud Storage. راجع نموذج المشروع للحصول على مثال لكيفية استخدام هذه الحزم.
الفراغ العام ConfigureServices(IServiceCollection Services){services.AddBackblazeAgent(options =>{options.KeyId = "[key_id]";options.ApplicationKey = "[application_key]";});}
للحصول على قائمة بمجموعات التوهج العكسي، ما عليك سوى إدخال IStorageClient
في فصلك واستدعاء العميل غير المتزامن.
نموذج فهرس الفئة العامة: PageModel{ خاص للقراءة فقط IStorageClient _storage؛ نموذج الفهرس العام (تخزين IStorageClient) { _storage = تخزين؛ } [بيندبروبيرتي] public IEnumerable<BucketItem> Buckets { get; مجموعة خاصة؛ } مهمة عامة غير متزامنة<IActionResult> OnGetAsync() {Buckets = Wait _storage.Buckets.GetAsync();if (Buckets == null){ return NotFound();}return Page(); }}
قم بتثبيت الحزم التالية:
> dotnet إضافة حزمة Backblaze.Client> dotnet إضافة حزمة Microsoft.Extensions.Caching.Memory> dotnet إضافة حزمة Microsoft.Extensions.Logging.Debug
رمز العينة:
برنامج الصف{ عميل IStorageClient الخاص الثابت؛ المهمة الرئيسية غير المتزامنة الثابتة (سلسلة [] وسيطات) {try{ var options = new ClientOptions(); var loggerFactory = LoggerFactory.Create(builder => {builder .AddFilter("Bytewizer.Backblaze", LogLevel.Trace) .AddDebug(); }); var Cache = new MemoryCache(new MemoryCacheOptions()); Client = new BackblazeClient(options, loggerFactory, Cache); انتظار Client.ConnectAsync("[key_id]"، "[application_key]")؛ دلاء var = انتظار Client.Buckets.GetAsync(); foreach (مجموعة var في الدلاء)Console.WriteLine($"اسم الجرافة: {bucket.BucketName} - النوع: {bucket.BucketType}"); }catch (Exception ex){ Console.Error.WriteLine(ex.Message);} }}
قم بتثبيت الحزمة التالية:
> الدوت نت إضافة حزمة Backblaze.Client
رمز العينة:
برنامج الصف{ عميل IStorageClient الخاص الثابت؛ الفراغ الثابت الرئيسي (سلسلة [] الحجج) {try{ Client = new BackblazeClient(); Client.Connect("[key_id]"، "[application_key]")؛ var Buckets = Client.Buckets.GetAsync().GetAwaiter().GetResult(); foreach (مجموعة var في الدلاء)Console.WriteLine($"اسم الجرافة: {bucket.BucketName} - النوع: {bucket.BucketType}");}catch (Exception ex){ Console.Error.WriteLine(ex.Message); } }}
تحميل تيار الملف
foreach (var filePath in Directory.GetFiles(@"c:mydirectory")){ باستخدام (varstream = File.OpenRead(filePath)) {نتائج فار = انتظار Client.UploadAsync("[BucketId]"، new FileInfo(filePath).Name,stream); }}
تحميل ملف ستريم
ملفات var = سلسلة جديدة[] { @"c:mydirectoryfile1.txt", "file2.bat" };foreach (var fileName in files){ باستخدام (var تيار = File.Create(fileName)) { نتائج فار = انتظار Client.DownloadAsync("[BucketName]", fileName,stream); }}
قم بتثبيت حزم Microsoft.Extensions.Logging:
> الدوت نت إضافة حزمة Microsoft.Extensions.Logging.Debug
يمكن تمكين التتبع إلى نافذة التصحيح باستخدام التعليمة البرمجية التالية:
Services.AddLogging(builder =>{builder.AddDebug();builder.AddFilter("Bytewizer.Backblaze", LogLevel.Trace);});
Services.AddBackblazeAgent(options =>{ options.KeyId = "[key_id]"; options.ApplicationKey = "[application_key]";});
يصف الجدول التالي خيارات الوكيل المتاحة:
اسم الخيار | تقصير | وصف |
---|---|---|
معرف المفتاح | --- | مطلوب - معرف المفتاح المستخدم للمصادقة. |
مفتاح التطبيق | --- | مطلوب - الجزء السري من المفتاح المستخدم للمصادقة. |
HandlerLifetime | 600 | الوقت بالثواني الذي يمكن فيه إعادة استخدام مثيل معالج الرسالة. |
نفذ الوقت | 600 | الوقت بالثواني للانتظار قبل انتهاء مهلة طلب العميل. |
إعادة المحاولة | 5 | عدد المرات التي سيقوم فيها العميل بإعادة محاولة الطلبات الفاشلة قبل انتهاء المهلة. |
طلب ماكس باراليل | 10 | الحد الأقصى لعدد اتصالات الطلب المتوازية التي تم إنشاؤها. |
تحميل ماكس باراليل | 5 | تم إنشاء الحد الأقصى لعدد اتصالات التنزيل المتوازية. |
تنزيل حجم القطع | 100 ميجابايت | قم بتنزيل حجم القطع للتبديل إلى الأجزاء المقسمة بالبايت. |
تحميل حجم الجزء | 100 ميجابايت | قم بتنزيل حجم الجزء من الأجزاء المقسمة بالبايت. |
تحميل ماكس باراليل | 3 | الحد الأقصى لعدد اتصالات التحميل المتوازية التي تم إنشاؤها. |
UploadCutoffSize | 100 ميجابايت | تحميل حجم القطع للتبديل إلى الأجزاء المقسمة بالبايت. |
UploadPartSize | 100 ميجابايت | تحميل حجم الجزء من الأجزاء المقسمة بالبايت. |
AutoSetPartSize | خطأ شنيع | استخدم حجم الجزء الموصى به الذي تم إرجاعه بواسطة خدمة Backblaze. |
المجموع الاختباري معطل | خطأ شنيع | هذا للاستخدام التجريبي فقط ولا يوصى به لبيئات الإنتاج. |
وضع الاختبار | --- | هذا للاستخدام التجريبي فقط ولا يوصى به لبيئات الإنتاج. |
Services.AddBackblazeAgent(options =>{ // هذا للاستخدام التجريبي فقط ولا يوصى به لبيئات الإنتاج. options.TestMode = "fail_some_uploads"; });
تتوفر خيارات وضع الاختبار التالية للتحقق من أن التعليمات البرمجية الخاصة بك تعالج حالات الخطأ بشكل صحيح.
سلسلة الخيار | وصف |
---|---|
Fail_some_uploads | تفشل التحميلات العشوائية أو يتم رفضها بواسطة الخدمة. |
Exquisite_some_account_authorization_tokens | تنتهي صلاحية الرموز المميزة لتفويض الحساب العشوائي. |
force_cap_exceeded | يتم فرض الشروط التي تم تجاوزها. |
ستحتاج إلى key_id و application_key لتكوين ملف Backblaze Test Agent settings.json.
يتم توفير جميع المصادر والوثائق والتعليمات والمنتجات الخاصة بهذا المشروع كما هي دون ضمان. لا يتم قبول أي مسؤولية عن أي أضرار أو فقدان البيانات أو التكاليف المتكبدة بسبب استخدامه.
الرئيسي - هذا هو الفرع الذي يحتوي على أحدث إصدار - ولا ينبغي تقديم أي مساهمات مباشرة إلى هذا الفرع.
تطوير - هذا هو فرع التطوير الذي يجب على المساهمين اقتراح المساهمات فيه كطلبات سحب. سيتم دمج فرع التطوير هذا بشكل دوري في الفرع الرئيسي، وسيتم إصداره في معرض NuGet.
المساهمات في هذا المشروع هي موضع ترحيب دائما. يرجى النظر في تفرع هذا المشروع على GitHub وإرسال طلب سحب لإضافة تحسيناتك إلى المشروع الأصلي.