.NET Core の Backblaze エージェント (クライアント) は、Backblaze B2 Cloud Storage API の実装です。 Backblaze B2 Cloud Storage は、インターネット上で利用できる最も安価なクラウド ストレージを提供します。 Backblaze B2 Cloud Storage の価格は、他のストレージ プロバイダーの 4 分の 1 です。最初の 10 GB のストレージは無料なので、ぜひお試しください。
ファイル、アカウント、キー、バケットを含む Backblaze B2 Cloud Storage API v2 を完全にサポートします。
.NET Standard 2.0 をターゲットとして構築されているため、Backblaze Agent は Windows、Mac、Linux システムで動作します。
.NET Core の依存関係インジェクションおよび HttpClientFactory とシームレスに統合して、回復力のあるリクエストを実装します。
MemoryCache を使用したシンプルなインメモリ応答キャッシュ。
少ないメモリ割り当てと IProgress ステータスによる大きなファイルのサポート。
タスクベースのプログラミング モデル (async/await) のネイティブ サポート。
機能リクエストやバグレポートについては、GitHub で問題を開いてください。
Backblaze.Agent をインストールするには、次のコマンドを実行します。
> dotnet パッケージ Backblaze.Agent を追加
作業中です!ユーザーにはサンプルやテスト プログラムを試してみることをお勧めしますが、このプロジェクトはまだ安定した状態には達していません。
Backblaze Agent を設定するには、 key_idとapplication_key が必要です。これらは Backblaze B2 Cloud Storage ポータルから入手できます。このパッケージの使用方法の例については、サンプル プロジェクトを参照してください。
public void ConfigureServices(IServiceCollection services){services.AddBackblazeAgent(options =>{options.KeyId = "[key_id]";options.ApplicationKey = "[application_key]";});} Backblaze バケットのリストを取得するには、クラスにIStorageClientを挿入し、非同期クライアントを呼び出すだけです。
パブリック クラス IndexModel : PageModel{
プライベート読み取り専用 IStorageClient _storage;
public IndexModel(IStorageClientストレージ)
{ _storage = ストレージ;
}
[バインドプロパティ]
public IEnumerable<BucketItem> バケット { get;プライベートセット。 }
public async Task<IActionResult> OnGetAsync()
{Buckets = await _storage.Buckets.GetAsync();if (Buckets == null){ return NotFound();}return Page();
}}次のパッケージをインストールします。
> dotnet パッケージ Backblaze.Client> dotnet add パッケージ Microsoft.Extensions.Caching.Memory> dotnet add パッケージ Microsoft.Extensions.Logging.Debug
サンプルコード:
クラスプログラム{
プライベート静的 IStorageClient クライアント。
静的非同期タスク Main(string[] args)
{try{ var options = new ClientOptions(); var loggerFactory = LoggerFactory.Create(builder => {builder .AddFilter("Bytewizer.Backblaze", LogLevel.Trace) .AddDebug(); }); var キャッシュ = 新しい MemoryCache(new MemoryCacheOptions()); クライアント = 新しい BackblazeClient(オプション、loggerFactory、キャッシュ);
await Client.ConnectAsync("[key_id]", "[application_key]"); varbuckets = await Client.Buckets.GetAsync(); foreach (バケット内の変数バケット)Console.WriteLine($"バケット名: {bucket.BucketName} - 種類: {bucket.BucketType}"); }catch (例外 ex){ Console.Error.WriteLine(ex.Message);}
}}次のパッケージをインストールします。
> dotnet パッケージ Backblaze.Client を追加
サンプルコード:
クラスプログラム{
プライベート静的 IStorageClient クライアント。
static void Main(string[] args)
{try{ Client = new BackblazeClient(); Client.Connect("[key_id]", "[application_key]"); var バケット = Client.Buckets.GetAsync().GetAwaiter().GetResult(); foreach (バケット内の変数バケット)Console.WriteLine($"バケット名: {bucket.BucketName} - タイプ: {bucket.BucketType}");}catch (Exception ex){ Console.Error.WriteLine(ex.Message); }
}}ファイルストリームのアップロード
foreach (var filePath in Directory.GetFiles(@"c:mydirectory")){
using (var stream = File.OpenRead(filePath))
{var results = await Client.UploadAsync("[BucketId]", new FileInfo(filePath).Name, stream);
}}ファイルストリームのダウンロード
var files = new string[] { @"c:mydirectoryfile1.txt", "file2.bat" };foreach (fileName 内の var fileName){
using (var stream = File.Create(fileName))
{ var results = await Client.DownloadAsync("[バケット名]", ファイル名, ストリーム);
}}Microsoft.Extensions.Logging パッケージをインストールします。
> dotnet パッケージ Microsoft.Extensions.Logging.Debug を追加
デバッグ ウィンドウへのトレースは、次のコードで有効にできます。
services.AddLogging(builder =>{builder.AddDebug();builder.AddFilter("Bytewizer.Backblaze", LogLevel.Trace);});services.AddBackblazeAgent(options =>{
options.KeyId = "[key_id]";
options.ApplicationKey = "[アプリケーションキー]";});次の表に、使用可能なエージェント オプションを示します。
| オプション名 | デフォルト | 説明 |
|---|---|---|
| キーID | --- | 必須- 認証に使用されるキー識別子。 |
| アプリケーションキー | --- | 必須- 認証に使用されるキーの秘密部分。 |
| ハンドラーの有効期間 | 600 | メッセージ ハンドラー インスタンスを再利用できる時間 (秒単位)。 |
| タイムアウト | 600 | クライアント要求がタイムアウトになるまでの待機時間 (秒単位)。 |
| 再試行回数 | 5 | クライアントがタイムアウトになるまでに、失敗したリクエストを再試行する回数。 |
| RequestMaxParallel | 10 | 確立される並列リクエスト接続の最大数。 |
| ダウンロード最大並列 | 5 | 確立される並列ダウンロード接続の最大数。 |
| ダウンロードカットオフサイズ | 100MB | チャンク化された部分に切り替えるためのダウンロード カットオフ サイズ (バイト単位)。 |
| ダウンロードパーツサイズ | 100MB | チャンク化された部分のダウンロード部分のサイズ (バイト単位)。 |
| UploadMaxParallel | 3 | 確立される並列アップロード接続の最大数。 |
| アップロードカットオフサイズ | 100MB | チャンク化された部分に切り替えるためのカットオフ サイズをバイト単位でアップロードします。 |
| アップロードパーツサイズ | 100MB | チャンク化されたパーツのパーツ サイズをバイト単位でアップロードします。 |
| AutoSetPartSize | 間違い | Backblaze サービスから返された推奨パーツ サイズを使用します。 |
| チェックサム無効 | 間違い | これはテスト用のみであり、運用環境には推奨されません。 |
| テストモード | --- | これはテスト用のみであり、運用環境には推奨されません。 |
services.AddBackblazeAgent(options =>{
// これはテスト用のみであり、運用環境には推奨されません。
options.TestMode = "fail_some_uploads"; });次のテスト モード オプションは、コードがエラー条件を正しく処理していることを確認するために使用できます。
| オプション文字列 | 説明 |
|---|---|
| 失敗した_いくつかのアップロード | ランダムなアップロードは失敗するか、サービスによって拒否されます。 |
| 期限切れ_some_account_authorization_tokens | ランダムなアカウント認証トークンの有効期限が切れます。 |
| Force_cap_exceeded | 上限超過条件が強制的に適用されます。 |
Backblaze Test Agent の settings.json ファイルを構成するには、 key_idとapplication_key が必要です。
このプロジェクトのすべてのソース、ドキュメント、説明書、および製品は、保証なしで現状のまま提供されます。その使用によって発生した損害、データの損失、または費用については、一切の責任を負いません。
master - これは最新リリースを含むブランチです。このブランチに直接貢献してはなりません。
開発- これは、コントリビュータによってプル リクエストとしてコントリビューションが提案される開発ブランチです。この開発ブランチは定期的にマスター ブランチにマージされ、NuGet ギャラリーにリリースされます。
このプロジェクトへの貢献はいつでも歓迎されます。このプロジェクトを GitHub でフォークし、プル リクエストを送信して、元のプロジェクトに改善を追加してもらうことを検討してください。