Agen Backblaze (klien) untuk .NET Core adalah implementasi dari Backblaze B2 Cloud Storage API. Backblaze B2 Cloud Storage menyediakan penyimpanan cloud termurah yang tersedia di internet. Backblaze B2 Cloud Storage harganya ¼ dari harga penyedia penyimpanan lainnya. Cobalah karena penyimpanan 10 GB pertama gratis.
Dukungan penuh untuk Backblaze B2 Cloud Storage API v2 termasuk file, akun, kunci, dan bucket.
Dibangun menargetkan .NET Standard 2.0 yang berarti Backblaze Agent akan bekerja pada sistem Windows, Mac dan Linux.
Terintegrasi secara mulus dengan .NET Core Dependency Injection dan HttpClientFactory untuk mengimplementasikan permintaan yang tangguh.
Cache respons dalam memori sederhana menggunakan MemoryCache.
Dukungan file besar dengan alokasi memori rendah dan status IProgress.
Dukungan asli model pemrograman berbasis tugas (async/menunggu).
Untuk permintaan fitur dan laporan bug, silakan buka masalah di GitHub.
Untuk menginstal Backblaze.Agent jalankan perintah berikut:
> dotnet tambahkan paket Backblaze.Agent
Pekerjaan Sedang Berlangsung! Meskipun kami mendorong pengguna untuk bermain-main dengan sampel dan program pengujian, proyek ini belum mencapai kondisi stabil.
Anda memerlukan key_id dan application_key untuk mengonfigurasi Agen Backblaze. Anda dapat memperolehnya dari portal Penyimpanan Cloud Backblaze B2. Lihat Contoh Proyek untuk contoh cara menggunakan paket ini.
public void ConfigureServices(layanan IServiceCollection){services.AddBackblazeAgent(options =>{options.KeyId = "[key_id]";options.ApplicationKey = "[application_key]";});} Untuk mendapatkan daftar bucket backblaze cukup masukkan IStorageClient ke kelas Anda dan panggil klien async.
kelas publik IndexModel : PageModel{
IStorageClient _storage hanya baca pribadi;
IndexModel publik (penyimpanan IStorageClient)
{ _penyimpanan = penyimpanan;
}
[BindProperti]
public IEnumerable<BucketItem> Bucket { dapatkan; set pribadi; }
Tugas async publik<IActionResult> OnGetAsync()
{Bucket = menunggu _storage.Buckets.GetAsync();if (Bucket == null){ return NotFound();}return Page();
}}Instal paket berikut:
> dotnet tambahkan paket Backblaze.Client> dotnet tambahkan paket Microsoft.Extensions.Caching.Memory> dotnet tambahkan paket Microsoft.Extensions.Logging.Debug
Contoh Kode:
program kelas{
Klien IStorageClient statis pribadi;
Tugas Utama async statis (string[] args)
{coba{ var options = ClientOptions baru(); var loggerFactory = LoggerFactory.Create(builder => {builder .AddFilter("Bytewizer.Backblaze", LogLevel.Trace) .AddDebug(); }); var cache = MemoryCache baru(MemoryCacheOptions()); Klien = BackblazeClient baru (opsi, loggerFactory, cache);
menunggu Klien.ConnectAsync("[key_id]", "[application_key]"); var bucket = menunggu Client.Buckets.GetAsync(); foreach (var bucket dalam bucket)Console.WriteLine($"Nama Bucket: {bucket.BucketName} - Tipe: {bucket.BucketType}"); }tangkap (Pengecualian ex){ Console.Error.WriteLine(ex.Message);}
}}Instal paket berikut:
> dotnet tambahkan paket Backblaze.Client
Contoh Kode:
program kelas{
Klien IStorageClient statis pribadi;
kekosongan statis Utama (string[] args)
{coba{ Klien = BackblazeClient baru(); Client.Connect("[key_id]", "[application_key]"); var bucket = Klien.Buckets.GetAsync().GetAwaiter().GetResult(); foreach (var bucket dalam bucket)Console.WriteLine($"Nama Bucket: {bucket.BucketName} - Tipe: {bucket.BucketType}");}catch (Exception ex){ Console.Error.WriteLine(ex.Message); }
}}Unggah Aliran File
foreach (var filePath di Directory.GetFiles(@"c:mydirectory")){
menggunakan (var stream = File.OpenRead(filePath))
{var hasil = menunggu Klien.UploadAsync("[BucketId]", FileInfo baru(filePath).Nama, aliran);
}}Unduh Aliran File
var files = string baru[] { @"c:mydirectoryfile1.txt", "file2.bat" };foreach (var fileName dalam file){
menggunakan (var stream = File.Create(namafile))
{ var hasil = menunggu Client.DownloadAsync("[BucketName]", namafile, aliran);
}}Instal paket Microsoft.Extensions.Logging:
> dotnet tambahkan paket Microsoft.Extensions.Logging.Debug
Penelusuran ke jendela Debug dapat diaktifkan dengan kode berikut:
services.AddLogging(builder =>{builder.AddDebug();builder.AddFilter("Bytewizer.Backblaze", LogLevel.Trace);}); layanan.AddBackblazeAgent(pilihan =>{
pilihan.KeyId = "[key_id]";
pilihan.ApplicationKey = "[application_key]";});Tabel berikut menjelaskan Opsi Agen yang tersedia:
| Nama Opsi | Bawaan | Keterangan |
|---|---|---|
| Id Kunci | --- | Diperlukan - Pengidentifikasi kunci yang digunakan untuk mengautentikasi. |
| Kunci Aplikasi | --- | Wajib - Bagian rahasia dari kunci yang digunakan untuk mengautentikasi. |
| Penangan Seumur Hidup | 600 | Waktu dalam hitungan detik saat instance pengendali pesan dapat digunakan kembali. |
| Batas waktu | 600 | Waktu dalam hitungan detik untuk menunggu sebelum permintaan klien habis. |
| Coba lagi Hitung | 5 | Berapa kali klien akan mencoba kembali permintaan yang gagal sebelum waktu habis. |
| PermintaanMaxParallel | 10 | Jumlah maksimum koneksi permintaan paralel yang dibuat. |
| UnduhMaxParallel | 5 | Jumlah maksimum koneksi unduhan paralel yang dibuat. |
| UnduhCutoffSize | 100MB | Unduh ukuran batas untuk beralih ke bagian yang dipotong dalam byte. |
| UnduhPartSize | 100MB | Unduh ukuran bagian dari bagian yang dipotong dalam byte. |
| UnggahMaxParallel | 3 | Jumlah maksimum koneksi unggahan paralel yang dibuat. |
| UnggahCutoffSize | 100MB | Unggah ukuran batas untuk beralih ke bagian yang dipotong dalam byte. |
| UnggahPartSize | 100MB | Unggah ukuran bagian dari bagian yang dipotong dalam byte. |
| AutoSetPartSize | PALSU | Gunakan ukuran komponen yang direkomendasikan yang dikembalikan oleh layanan Backblaze. |
| ChecksumDinonaktifkan | PALSU | Ini hanya untuk penggunaan pengujian dan tidak direkomendasikan untuk lingkungan produksi. |
| Mode Tes | --- | Ini hanya untuk penggunaan pengujian dan tidak direkomendasikan untuk lingkungan produksi. |
layanan.AddBackblazeAgent(pilihan =>{
// Ini hanya untuk penggunaan pengujian dan tidak direkomendasikan untuk lingkungan produksi.
pilihan.TestMode = "fail_some_uploads"; });Opsi mode pengujian berikut tersedia untuk memverifikasi bahwa kode Anda menangani kondisi kesalahan dengan benar.
| Rangkaian Opsi | Keterangan |
|---|---|
| fail_some_uploads | Unggahan acak gagal atau ditolak oleh layanan. |
| expired_some_account_authorization_tokens | Token otorisasi akun acak kedaluwarsa. |
| force_cap_exceeded | Batas melebihi kondisi terpaksa. |
Anda memerlukan key_id dan application_key untuk mengonfigurasi file settings.json Agen Uji Backblaze.
Semua sumber, dokumentasi, instruksi dan produk proyek ini disediakan apa adanya tanpa jaminan. Tidak ada tanggung jawab yang diterima atas segala kerusakan, kehilangan data, atau biaya yang timbul akibat penggunaannya.
master - Ini adalah cabang yang berisi rilis terbaru - tidak ada kontribusi yang boleh diberikan langsung ke cabang ini.
mengembangkan - Ini adalah cabang pengembangan dimana kontribusi harus diusulkan oleh kontributor sebagai permintaan tarik. Cabang pengembangan ini secara berkala akan digabungkan ke cabang master, dan dirilis ke Galeri NuGet.
Kontribusi untuk proyek ini selalu diterima. Harap pertimbangkan untuk melakukan forking proyek ini di GitHub dan mengirimkan permintaan penarikan agar peningkatan Anda ditambahkan ke proyek asli.