適用於 .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 上分叉此專案並發送拉取請求,以將您的改進添加到原始專案中。