Der Backblaze Agent (Client) für .NET Core ist eine Implementierung der Backblaze B2 Cloud Storage API. Backblaze B2 Cloud Storage bietet den günstigsten Cloud-Speicher, der im Internet verfügbar ist. Backblaze B2 Cloud Storage kostet ¼ des Preises anderer Speicheranbieter. Probieren Sie es aus, denn die ersten 10 GB Speicherplatz sind kostenlos.
Vollständige Unterstützung für Backblaze B2 Cloud Storage API v2, einschließlich Dateien, Konten, Schlüssel und Buckets.
Entwickelt für .NET Standard 2.0, was bedeutet, dass Backblaze Agent auf Windows-, Mac- und Linux-Systemen funktioniert.
Lässt sich nahtlos in .NET Core Dependency Injection und HttpClientFactory integrieren, um belastbare Anforderungen zu implementieren.
Einfacher In-Memory-Antwortcache mit MemoryCache.
Unterstützung großer Dateien mit geringer Speicherzuweisung und IProgress-Status.
Native Unterstützung des aufgabenbasierten Programmiermodells (async/await).
Für Funktionsanfragen und Fehlerberichte öffnen Sie bitte ein Issue auf GitHub.
Um Backblaze.Agent zu installieren, führen Sie den folgenden Befehl aus:
> Dotnet-Paket Backblaze.Agent hinzufügen
In Arbeit! Obwohl wir Benutzer ermutigen, mit den Beispielen und Testprogrammen zu spielen, hat dieses Projekt noch keinen stabilen Zustand erreicht.
Sie benötigen eine key_id und einen application_key , um den Backblaze Agent zu konfigurieren. Diese erhalten Sie über das Backblaze B2 Cloud Storage-Portal. Ein Beispiel für die Verwendung dieser Pakete finden Sie im Beispielprojekt.
public void configureServices(IServiceCollection Services){services.AddBackblazeAgent(options =>{options.KeyId = "[key_id]";options.ApplicationKey = "[application_key]";});}
Um eine Liste der Backblaze-Buckets zu erhalten, fügen Sie einfach IStorageClient
in Ihre Klasse ein und rufen Sie den asynchronen Client auf.
öffentliche Klasse IndexModel: PageModel{ privater schreibgeschützter IStorageClient _storage; öffentliches IndexModel (IStorageClient-Speicher) { _storage = Speicher; } [BindProperty] public IEnumerable<BucketItem> Buckets { get; privates Set; } öffentliche asynchrone Aufgabe<IActionResult> OnGetAsync() {Buckets = waiting _storage.Buckets.GetAsync();if (Buckets == null){ return NotFound();}return Page(); }}
Installieren Sie die folgenden Pakete:
> Dotnet-Paket hinzufügen Backblaze.Client> Dotnet-Paket hinzufügen Microsoft.Extensions.Caching.Memory> Dotnet-Paket hinzufügen Microsoft.Extensions.Logging.Debug
Beispielcode:
Klassenprogramm{ privater statischer IStorageClient-Client; statische asynchrone Task Main(string[] args) {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); wait Client.ConnectAsync("[key_id]", "[application_key]"); var Buckets = Warten auf Client.Buckets.GetAsync(); foreach (var Bucket in Buckets)Console.WriteLine($"Bucket Name: {bucket.BucketName} - Typ: {bucket.BucketType}"); }catch (Exception ex){ Console.Error.WriteLine(ex.Message);} }}
Installieren Sie das folgende Paket:
> Dotnet-Paket Backblaze.Client hinzufügen
Beispielcode:
Klassenprogramm{ privater statischer IStorageClient-Client; static void Main(string[] args) {try{ Client = new BackblazeClient(); Client.Connect("[key_id]", "[application_key]"); var Buckets = Client.Buckets.GetAsync().GetAwaiter().GetResult(); foreach (var Bucket in Buckets)Console.WriteLine($"Bucket Name: {bucket.BucketName} - Typ: {bucket.BucketType}");}catch (Exception ex){ Console.Error.WriteLine(ex.Message); } }}
Dateistream hochladen
foreach (var filePath in Directory.GetFiles(@"c:mydirectory")){ using (var stream = File.OpenRead(filePath)) {var results = waiting Client.UploadAsync("[BucketId]", new FileInfo(filePath).Name, stream); }}
Laden Sie den Dateistream herunter
var files = new string[] { @"c:mydirectoryfile1.txt", "file2.bat" };foreach (var fileName in files){ using (var stream = File.Create(fileName)) { var results = waiting Client.DownloadAsync("[BucketName]", fileName, stream); }}
Installieren Sie die Microsoft.Extensions.Logging-Pakete:
> dotnet Paket Microsoft.Extensions.Logging.Debug hinzufügen
Die Ablaufverfolgung zum Debug-Fenster kann mit dem folgenden Code aktiviert werden:
Services.AddLogging(builder =>{builder.AddDebug();builder.AddFilter("Bytewizer.Backblaze", LogLevel.Trace);});
Services.AddBackblazeAgent(options =>{ options.KeyId = "[key_id]"; options.ApplicationKey = "[application_key]";});
In der folgenden Tabelle werden die verfügbaren Agentenoptionen beschrieben:
Optionsname | Standard | Beschreibung |
---|---|---|
Schlüssel-ID | --- | Erforderlich – Die zur Authentifizierung verwendete Schlüsselkennung. |
Anwendungsschlüssel | --- | Erforderlich – Der geheime Teil des Schlüssels, der zur Authentifizierung verwendet wird. |
HandlerLifetime | 600 | Die Zeit in Sekunden, die die Nachrichtenhandlerinstanz wiederverwendet werden kann. |
Time-out | 600 | Die Zeit in Sekunden, die gewartet werden muss, bevor die Clientanforderung abläuft. |
RetryCount | 5 | Die Häufigkeit, mit der der Client fehlgeschlagene Anforderungen erneut versucht, bevor eine Zeitüberschreitung auftritt. |
RequestMaxParallel | 10 | Die maximale Anzahl der hergestellten parallelen Anforderungsverbindungen. |
Laden Sie MaxParallel herunter | 5 | Die maximale Anzahl paralleler Download-Verbindungen, die hergestellt werden. |
CutoffSize herunterladen | 100 MB | Laden Sie die Cutoff-Größe für den Wechsel zu Chunked Parts in Bytes herunter. |
PartSize herunterladen | 100 MB | Laden Sie die Teilegröße der aufgeteilten Teile in Bytes herunter. |
UploadMaxParallel | 3 | Die maximale Anzahl paralleler Upload-Verbindungen, die hergestellt werden. |
UploadCutoffSize | 100 MB | Laden Sie die Cutoff-Größe für den Wechsel zu Chunked Parts in Bytes hoch. |
UploadPartSize | 100 MB | Laden Sie die Teilegröße der aufgeteilten Teile in Bytes hoch. |
AutoSetPartSize | FALSCH | Verwenden Sie die empfohlene Teilegröße, die vom Backblaze-Service zurückgegeben wird. |
PrüfsummeDeaktiviert | FALSCH | Dies dient nur zu Testzwecken und wird nicht für Produktionsumgebungen empfohlen. |
Testmodus | --- | Dies dient nur zu Testzwecken und wird nicht für Produktionsumgebungen empfohlen. |
Services.AddBackblazeAgent(options =>{ // Dies dient nur zu Testzwecken und wird nicht für Produktionsumgebungen empfohlen. options.TestMode = "fail_some_uploads"; });
Die folgenden Testmodusoptionen stehen zur Verfügung, um zu überprüfen, ob Ihr Code Fehlerbedingungen korrekt verarbeitet.
Optionszeichenfolge | Beschreibung |
---|---|
fail_some_uploads | Zufällige Uploads schlagen fehl oder werden vom Dienst abgelehnt. |
Expire_some_account_authorization_tokens | Zufällige Kontoautorisierungstoken laufen ab. |
force_cap_exceeded | Bedingungen für die Überschreitung der Obergrenze werden erzwungen. |
Sie benötigen eine key_id und einen application_key, um die Datei „settings.json“ des Backblaze Test Agent zu konfigurieren.
Alle Quellen, Dokumentationen, Anweisungen und Produkte dieses Projekts werden im Ist-Zustand ohne Gewährleistung bereitgestellt. Für etwaige Schäden, Datenverluste oder Kosten, die durch die Nutzung entstehen, wird keine Haftung übernommen.
master – Dies ist der Zweig, der die neueste Version enthält – es sollten keine Beiträge direkt zu diesem Zweig geleistet werden.
Develop – Dies ist der Entwicklungszweig, zu dem Beiträge von Mitwirkenden als Pull-Requests vorgeschlagen werden sollten. Dieser Entwicklungszweig wird regelmäßig mit dem Hauptzweig zusammengeführt und in der NuGet-Galerie veröffentlicht.
Beiträge zu diesem Projekt sind jederzeit willkommen. Bitte erwägen Sie, dieses Projekt auf GitHub zu forken und eine Pull-Anfrage zu senden, damit Ihre Verbesserungen zum ursprünglichen Projekt hinzugefügt werden.