O Backblaze Agent (cliente) para .NET Core é uma implementação da API Backblaze B2 Cloud Storage. Backblaze B2 Cloud Storage oferece o armazenamento em nuvem mais barato disponível na Internet. O Backblaze B2 Cloud Storage custa ¼ do preço de outros provedores de armazenamento. Experimente, pois os primeiros 10 GB de armazenamento são gratuitos.
Suporte completo para Backblaze B2 Cloud Storage API v2, incluindo arquivos, contas, chaves e buckets.
Criado para .NET Standard 2.0, o que significa que o Backblaze Agent funcionará em sistemas Windows, Mac e Linux.
Integra-se perfeitamente com .NET Core Dependency Injection e HttpClientFactory para implementar solicitações resilientes.
Cache de resposta simples na memória usando MemoryCache.
Suporte a arquivos grandes com baixa alocação de memória e status IProgress.
Suporte nativo de modelo de programação baseado em tarefas (async/await).
Para solicitações de recursos e relatórios de bugs, abra um problema no GitHub.
Para instalar o Backblaze.Agent execute o seguinte comando:
> dotnet adicionar pacote Backblaze.Agent
Trabalho em andamento! Embora encorajemos os usuários a brincar com as amostras e programas de teste, este projeto ainda não atingiu um estado estável.
Você precisará de um key_id e um application_key para configurar o Backblaze Agent. Você pode obtê-los no portal Backblaze B2 Cloud Storage. Veja o Projeto Exemplo para um exemplo de como usar esses pacotes.
public void ConfigureServices(serviços IServiceCollection){services.AddBackblazeAgent(options =>{options.KeyId = "[key_id]";options.ApplicationKey = "[application_key]";});}
Para obter uma lista de buckets backblaze, basta injetar IStorageClient
em sua classe e chamar o cliente assíncrono.
classe pública IndexModel: PageModel{ privado somente leitura IStorageClient _storage; IndexModel público (armazenamento IStorageClient) { _armazenamento = armazenamento; } [VincularPropriedade] public IEnumerable<BucketItem> Baldes { get; conjunto privado; } tarefa assíncrona pública<IActionResult> OnGetAsync() {Buckets = await _storage.Buckets.GetAsync();if (Buckets == null){ return NotFound();}return Page(); }}
Instale os seguintes pacotes:
> dotnet adicionar pacote Backblaze.Client> dotnet adicionar pacote Microsoft.Extensions.Caching.Memory> dotnet adicionar pacote Microsoft.Extensions.Logging.Debug
Código de amostra:
programa de aula{ Cliente IStorageClient estático privado; tarefa assíncrona estática principal (string[] args) {tente{var opções = new ClientOptions(); var loggerFactory = LoggerFactory.Create(builder => {builder .AddFilter("Bytewizer.Backblaze", LogLevel.Trace) .AddDebug(); }); var cache = new MemoryCache(new MemoryCacheOptions()); Cliente = novo BackblazeClient(opções, loggerFactory, cache); aguarde Client.ConnectAsync("[key_id]", "[application_key]"); var buckets = aguarda Client.Buckets.GetAsync(); foreach (var bucket em buckets)Console.WriteLine($"Nome do bucket: {bucket.BucketName} - Tipo: {bucket.BucketType}"); }catch (Exceção ex){ Console.Error.WriteLine(ex.Message);} }}
Instale o seguinte pacote:
> dotnet adicionar pacote Backblaze.Client
Código de amostra:
programa de aula{ Cliente IStorageClient estático privado; vazio estático principal(string[] args) {tente{Cliente = new BackblazeClient(); Client.Connect("[key_id]", "[application_key]"); var buckets = Client.Buckets.GetAsync().GetAwaiter().GetResult(); foreach (var bucket em buckets)Console.WriteLine($"Nome do bucket: {bucket.BucketName} - Tipo: {bucket.BucketType}");}catch (Exceção ex){ Console.Error.WriteLine(ex.Message); } }}
Carregar fluxo de arquivos
foreach (var filePath em Directory.GetFiles(@"c:meudiretório")){ usando (var stream = File.OpenRead(filePath)) {var resultados = aguardar Client.UploadAsync("[BucketId]", new FileInfo(filePath).Name, stream); }}
Baixar fluxo de arquivos
var arquivos = new string[] { @"c:mydirectoryfile1.txt", "file2.bat" };foreach (var fileName em arquivos){ usando (var stream = File.Create(fileName)) { var resultados = aguardar Client.DownloadAsync("[BucketName]", fileName, stream); }}
Instale os pacotes Microsoft.Extensions.Logging:
> dotnet adicionar pacote Microsoft.Extensions.Logging.Debug
O rastreamento para a janela Debug pode ser habilitado com o seguinte código:
services.AddLogging(builder =>{builder.AddDebug();builder.AddFilter("Bytewizer.Backblaze", LogLevel.Trace);});
serviços.AddBackblazeAgent(opções =>{ opções.KeyId = "[key_id]"; options.ApplicationKey = "[application_key]";});
A tabela a seguir descreve as opções de agente disponíveis:
Nome da opção | Padrão | Descrição |
---|---|---|
ID-chave | --- | Obrigatório – O identificador de chave usado para autenticação. |
Chave de aplicativo | --- | Obrigatório – A parte secreta da chave usada para autenticação. |
HandlerLifetime | 600 | O tempo em segundos que a instância do manipulador de mensagens pode ser reutilizada. |
Tempo esgotado | 600 | O tempo em segundos de espera antes que a solicitação do cliente expire. |
Contagem de novas tentativas | 5 | O número de vezes que o cliente tentará novamente solicitações com falha antes de atingir o tempo limite. |
RequestMaxParallel | 10 | O número máximo de conexões de solicitação paralelas estabelecidas. |
BaixarMaxParallel | 5 | O número máximo de conexões de download paralelas estabelecidas. |
BaixarCutoffSize | 100 MB | Baixe o tamanho limite para alternar para partes fragmentadas em bytes. |
BaixarPartSize | 100 MB | Baixe o tamanho das partes fragmentadas em bytes. |
UploadMaxParallel | 3 | O número máximo de conexões de upload paralelas estabelecidas. |
CarregarCutoffSize | 100 MB | Carregue o tamanho limite para alternar para partes fragmentadas em bytes. |
CarregarPartSize | 100 MB | Carregue o tamanho das partes fragmentadas em bytes. |
AutoSetPartSize | falso | Use o tamanho de peça recomendado retornado pelo serviço Backblaze. |
Soma de verificação desabilitada | falso | Isto é apenas para uso em testes e não é recomendado para ambientes de produção. |
Modo de teste | --- | Isto é apenas para uso em testes e não é recomendado para ambientes de produção. |
serviços.AddBackblazeAgent(opções =>{ // Isto é apenas para uso em testes e não recomendado para ambientes de produção. opções.TestMode = "fail_some_uploads"; });
As opções de modo de teste a seguir estão disponíveis para verificar se seu código trata corretamente as condições de erro.
Cadeia de opções | Descrição |
---|---|
fail_some_uploads | Uploads aleatórios falham ou são rejeitados pelo serviço. |
expire_some_account_authorization_tokens | Os tokens de autorização de conta aleatória expiram. |
force_cap_excedeu | As condições de limite excedido são forçadas. |
Você precisará de um key_id e um application_key para configurar o arquivo backblaze Test Agent settings.json.
Todas as fontes, documentação, instruções e produtos deste projeto são fornecidos no estado em que se encontram, sem garantia. Nenhuma responsabilidade será aceita por quaisquer danos, perda de dados ou custos incorridos pelo seu uso.
master - Este é o branch que contém a versão mais recente - nenhuma contribuição deve ser feita diretamente para este branch.
desenvolver - Este é o ramo de desenvolvimento para o qual as contribuições devem ser propostas pelos contribuidores como solicitações pull. Este branch de desenvolvimento será periodicamente mesclado com o branch master e lançado na Galeria NuGet.
Contribuições para este projeto são sempre bem-vindas. Considere bifurcar este projeto no GitHub e enviar uma solicitação pull para adicionar suas melhorias ao projeto original.