L'agent Backblaze (client) pour .NET Core est une implémentation de l'API Backblaze B2 Cloud Storage. Backblaze B2 Cloud Storage fournit le stockage cloud le moins cher disponible sur Internet. Backblaze B2 Cloud Storage coûte ¼ du prix des autres fournisseurs de stockage. Essayez-le car les 10 premiers Go de stockage sont gratuits.
Prise en charge complète de l'API Backblaze B2 Cloud Storage v2, y compris les fichiers, les comptes, les clés et les compartiments.
Conçu pour cibler .NET Standard 2.0, ce qui signifie que Backblaze Agent fonctionnera sur les systèmes Windows, Mac et Linux.
S'intègre de manière transparente avec .NET Core Dependency Injection et HttpClientFactory pour implémenter des requêtes résilientes.
Cache de réponse simple en mémoire à l’aide de MemoryCache.
Prise en charge des fichiers volumineux avec une faible allocation de mémoire et un statut IProgress.
Prise en charge native du modèle de programmation basé sur les tâches (async/await).
Pour les demandes de fonctionnalités et les rapports de bogues, veuillez ouvrir un problème sur GitHub.
Pour installer Backblaze.Agent, exécutez la commande suivante :
> dotnet ajoute le package Backblaze.Agent
Travail en cours ! Bien que nous encourageions les utilisateurs à jouer avec les exemples et les programmes de test, ce projet n'a pas encore atteint un état stable.
Vous aurez besoin d'un key_id et d'un application_key pour configurer Backblaze Agent. Vous pouvez les obtenir sur le portail Backblaze B2 Cloud Storage. Voir l'exemple de projet pour un exemple d'utilisation de ces packages.
public void ConfigureServices (services IServiceCollection){services.AddBackblazeAgent(options =>{options.KeyId = "[key_id]";options.ApplicationKey = "[application_key]";});}
Pour obtenir une liste des buckets backblaze, injectez simplement IStorageClient
dans votre classe et appelez le client asynchrone.
classe publique IndexModel : PageModel{ stockage privé en lecture seule IStorageClient _storage ; public IndexModel (stockage IStorageClient) { _stockage = stockage ; } [BindPropriété] public IEnumerable<BucketItem> Buckets {get; ensemble privé; } Tâche asynchrone publique<IActionResult> OnGetAsync() {Buckets = wait _storage.Buckets.GetAsync();if (Buckets == null){ return NotFound();}return Page(); }}
Installez les packages suivants :
> package d'ajout dotnet Backblaze.Client> package d'ajout dotnet Microsoft.Extensions.Caching.Memory> package d'ajout dotnet Microsoft.Extensions.Logging.Debug
Exemple de code :
Programme de classe{ Client IStorageClient statique privé ; Tâche principale asynchrone statique (string[] arguments) {essayer{ var options = new ClientOptions(); var loggerFactory = LoggerFactory.Create(builder => {builder .AddFilter("Bytewizer.Backblaze", LogLevel.Trace) .AddDebug(); }); var cache = nouveau MemoryCache (nouveau MemoryCacheOptions()); Client = nouveau BackblazeClient (options, loggerFactory, cache) ; wait Client.ConnectAsync("[key_id]", "[application_key]"); var buckets = attendre Client.Buckets.GetAsync(); foreach (var bucket dans les buckets)Console.WriteLine($"Nom du bucket : {bucket.BucketName} - Type : {bucket.BucketType}"); }catch (Exception ex){ Console.Error.WriteLine(ex.Message);} }}
Installez le package suivant :
> dotnet ajoute le package Backblaze.Client
Exemple de code :
Programme de classe{ Client IStorageClient statique privé ; static void Main(string[] arguments) {essayer{ Client = new BackblazeClient(); Client.Connect("[key_id]", "[application_key]"); var buckets = Client.Buckets.GetAsync().GetAwaiter().GetResult(); foreach (var bucket dans les buckets)Console.WriteLine($"Nom du bucket : {bucket.BucketName} - Type : {bucket.BucketType}");}catch (Exception ex){ Console.Error.WriteLine(ex.Message); } }}
Télécharger le flux de fichiers
foreach (var filePath dans Directory.GetFiles (@"c:mydirectory")){ en utilisant (var stream = File.OpenRead (filePath)) {var results = wait Client.UploadAsync("[BucketId]", new FileInfo(filePath).Name, stream); }}
Télécharger le flux de fichiers
var files = new string[] { @"c:mydirectoryfile1.txt", "file2.bat" };foreach (var fileName dans les fichiers){ en utilisant (var stream = File.Create(fileName)) { var results = wait Client.DownloadAsync("[BucketName]", fileName, stream); }}
Installez les packages Microsoft.Extensions.Logging :
> dotnet ajoute le package Microsoft.Extensions.Logging.Debug
Le traçage vers la fenêtre Debug peut être activé avec le code suivant :
services.AddLogging(builder =>{builder.AddDebug();builder.AddFilter("Bytewizer.Backblaze", LogLevel.Trace);});
services.AddBackblazeAgent(options =>{ options.KeyId = "[key_id]"; options.ApplicationKey = "[application_key]";});
Le tableau suivant décrit les options d'agent disponibles :
Nom de l'option | Défaut | Description |
---|---|---|
ID de clé | --- | Obligatoire : identifiant de clé utilisé pour l'authentification. |
Clé d'application | --- | Obligatoire : partie secrète de la clé utilisée pour l'authentification. |
Durée de vie du gestionnaire | 600 | Durée en secondes pendant laquelle l'instance du gestionnaire de messages peut être réutilisée. |
Temps mort | 600 | Temps d'attente en secondes avant l'expiration de la demande du client. |
Nombre de nouvelles tentatives | 5 | Nombre de fois où le client réessayera les demandes ayant échoué avant d'expirer. |
RequêteMaxParallèle | 10 | Nombre maximum de connexions de requêtes parallèles établies. |
TéléchargerMaxParallel | 5 | Nombre maximum de connexions de téléchargement parallèles établies. |
TéléchargerCutoffSize | 100 Mo | Téléchargez la taille limite pour passer aux parties fragmentées en octets. |
TéléchargerPartSize | 100 Mo | Téléchargez la taille des parties fragmentées en octets. |
TéléchargerMaxParallel | 3 | Nombre maximum de connexions de téléchargement parallèles établies. |
TailleCutoffUpload | 100 Mo | Taille limite de téléchargement pour passer aux parties fragmentées en octets. |
TéléchargerPartSize | 100 Mo | Téléchargez la taille des parties fragmentées en octets. |
AutoSetPartSize | FAUX | Utilisez la taille de pièce recommandée renvoyée par le service Backblaze. |
Somme de contrôleDésactivée | FAUX | Ceci est destiné uniquement à des tests et n'est pas recommandé pour les environnements de production. |
Mode Test | --- | Ceci est destiné uniquement à des tests et n'est pas recommandé pour les environnements de production. |
services.AddBackblazeAgent(options =>{ // Ceci est destiné uniquement à des tests et n'est pas recommandé pour les environnements de production. options.TestMode = "fail_some_uploads"; });
Les options de mode test suivantes sont disponibles pour vérifier que votre code gère correctement les conditions d'erreur.
Chaîne d'options | Description |
---|---|
fail_some_uploads | Les téléchargements aléatoires échouent ou sont rejetés par le service. |
expire_some_account_authorization_tokens | Les jetons d'autorisation de compte aléatoire expirent. |
force_cap_exceeded | Les conditions de dépassement du plafond sont forcées. |
Vous aurez besoin d'un key_id et d'un application_key pour configurer le fichier settings.json de Backblaze Test Agent.
Toutes les sources, documentations, instructions et produits de ce projet sont fournis tels quels sans garantie. Aucune responsabilité n'est acceptée pour tout dommage, perte de données ou coûts encourus par son utilisation.
master - Il s'agit de la branche contenant la dernière version - aucune contribution ne doit être apportée directement à cette branche.
développer - Il s'agit de la branche de développement à laquelle les contributions doivent être proposées par les contributeurs sous forme de demandes d'extraction. Cette branche de développement sera périodiquement fusionnée avec la branche principale et publiée dans NuGet Gallery.
Les contributions à ce projet sont toujours les bienvenues. Veuillez envisager de créer ce projet sur GitHub et d'envoyer une pull request pour que vos améliorations soient ajoutées au projet d'origine.