適用於 .NET Core 的 Backblaze Agent(客戶端)是 Backblaze B2 雲端儲存 API 的實作。 Backblaze B2 雲端儲存提供網路上最便宜的雲端儲存。 Backblaze B2 雲端儲存的價格是其他儲存供應商的 1/4。請嘗試一下,前 10 GB 儲存空間是免費的。
完全支援 Backblaze B2 雲端儲存 API v2,包括檔案、帳戶、金鑰和儲存桶。
針對 .NET Standard 2.0 構建,這意味著 Backblaze Agent 可在 Windows、Mac 和 Linux 系統上運行。
與 .NET Core 依賴注入和 HttpClientFactory 無縫整合以實現彈性請求。
使用 MemoryCache 的簡單記憶體中回應快取。
大檔案支援低記憶體分配和 IProgress 狀態。
基於任務的程式設計模型(非同步/等待)的本機支援。
對於功能請求和錯誤報告,請在 GitHub 上開啟問題。
若要安裝 Backblaze.Agent,請執行以下命令:
> dotnet 新增包 Backblaze.Agent
工作正在進行中!雖然我們鼓勵用戶使用範例和測試程序,但該項目尚未達到穩定狀態。
您將需要key_id和application_key來設定 Backblaze Agent。您可以從 Backblaze B2 雲端儲存入口網站取得這些內容。有關如何使用此套件的範例,請參閱範例項目。
公用無效ConfigureServices(IServiceCollection服務){services.AddBackblazeAgent(選項=> {options.KeyId =“[key_id]”;options.ApplicationKey =“[application_key]”;});}
要取得 backblaze 儲存桶的列表,只需將IStorageClient
注入您的類別並呼叫非同步客戶端即可。
公共類別 IndexModel :PageModel{ 私有唯讀 IStorageClient _storage; 公共IndexModel(IStorageClient儲存) { _儲存=儲存; } [綁定屬性] public IEnumerable<BucketItem> 儲存桶 { 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 客戶端; 靜態非同步任務 Main(string[] args) {嘗試{ 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(選項, loggerFactory, 快取); 等待 Client.ConnectAsync("[key_id]", "[application_key]"); varbuckets=awaitClient.Buckets.GetAsync(); foreach (var Bucket in Bucket)Console.WriteLine($"儲存桶名稱:{bucket.BucketName} - 類型:{bucket.BucketType}"); }catch (異常){ Console.Error.WriteLine(ex.Message);} }}
安裝以下軟體包:
> dotnet 新增套件 Backblaze.Client
範例程式碼:
課程計劃{ 私有靜態 IStorageClient 客戶端; 靜態無效主(字串[]參數) {嘗試{ 客戶端 = new BackblazeClient(); Client.Connect("[key_id]", "[application_key]"); var Buckets = Client.Buckets.GetAsync().GetAwaiter().GetResult(); foreach (var Bucket in Bucket)Console.WriteLine($"儲存桶名稱:{bucket.BucketName} - 類型:{bucket.BucketType}");}catch (Exception ex){ Console.Error.WriteLine(ex.Message) ; } }}
上傳檔案流
foreach (Directory.GetFiles(@"c:mydirectory")) 中的 var filePath 使用 (var Stream = File.OpenRead(filePath)) {var results = wait Client.UploadAsync("[BucketId]", new FileInfo(filePath).Name, stream); }}
下載檔案流
var files = new string[] { @"c:mydirectoryfile1.txt", "file2.bat" };foreach (var fileName in files){ 使用 (var Stream = File.Create(檔名)) { var results = wait Client.DownloadAsync("[BucketName]", 檔案名稱, 串流); }}
安裝 Microsoft.Extensions.Logging 套件:
> dotnet 新增套件 Microsoft.Extensions.Logging.Debug
可以使用以下程式碼啟用對調試視窗的追蹤:
services.AddLogging(builder =>{builder.AddDebug();builder.AddFilter("Bytewizer.Backblaze", LogLevel.Trace);});
services.AddBackblazeAgent(選項=>{ options.KeyId = "[key_id]"; options.ApplicationKey = "[application_key]";});
下表描述了可用的代理選項:
選項名稱 | 預設 | 描述 |
---|---|---|
金鑰ID | --- | 必需- 用於身份驗證的密鑰標識符。 |
應用程式密鑰 | --- | 必需- 用於身份驗證的密鑰的秘密部分。 |
處理程序生命週期 | 600 | 訊息處理程序實例可以重複使用的時間(以秒為單位)。 |
暫停 | 600 | 客戶端請求超時之前等待的時間(以秒為單位)。 |
重試次數 | 5 | 客戶端在逾時之前重試失敗請求的次數。 |
請求最大並行數 | 10 | 建立的並行請求連線的最大數量。 |
下載最大並行數 | 5 | 建立的並行下載連線的最大數量。 |
下載截止尺寸 | 100MB | 用於切換到分塊部分的下載截止大小(以位元組為單位)。 |
下載零件尺寸 | 100MB | 下載分塊部分的部分大小(以位元組為單位)。 |
上傳最大並行數 | 3 | 建立的最大並行上傳連線數。 |
上傳截止大小 | 100MB | 上傳切換到分塊部分的截止大小(以位元組為單位)。 |
上傳部分大小 | 100MB | 上傳分塊部分的大小(以位元組為單位)。 |
自動設定零件尺寸 | 錯誤的 | 使用 Backblaze 服務傳回的建議零件尺寸。 |
校驗和停用 | 錯誤的 | 這僅供測試使用,不建議用於生產環境。 |
測試模式 | --- | 這僅供測試使用,不建議用於生產環境。 |
services.AddBackblazeAgent(選項=>{ // 這僅供測試使用,不建議用於生產環境。 options.TestMode = "fail_some_uploads"; });
以下測試模式選項可用於驗證您的程式碼是否正確處理錯誤狀況。
選項字串 | 描述 |
---|---|
上傳失敗 | 隨機上傳失敗或被服務拒絕。 |
expire_some_account_authorization_tokens | 隨機帳戶授權令牌過期。 |
超出強制上限 | 強制超出上限條件。 |
您將需要key_id和application_key來設定 Backblaze Test Agent settings.json 檔案。
該專案的所有原始程式碼、文件、說明和產品均按原樣提供,不提供任何保證。對於因使用而產生的任何損壞、資料遺失或費用,我們不承擔任何責任。
master - 這是包含最新版本的分支 - 不應該直接對此分支做出貢獻。
開發- 這是開發分支,貢獻者應將貢獻作為拉取請求提出。此開發分支將定期合併到主分支,並發佈到NuGet Gallery。
我們始終歡迎對該項目做出貢獻。請考慮在 GitHub 上分叉此專案並發送拉取請求,以將您的改進添加到原始專案中。