El agente Backblaze (cliente) para .NET Core es una implementación de la API de almacenamiento en la nube Backblaze B2. Backblaze B2 Cloud Storage proporciona el almacenamiento en la nube más barato disponible en Internet. Backblaze B2 Cloud Storage cuesta ¼ del precio de otros proveedores de almacenamiento. Pruébalo ya que los primeros 10 GB de almacenamiento son gratuitos.
Soporte completo para Backblaze B2 Cloud Storage API v2, incluidos archivos, cuentas, claves y depósitos.
Diseñado para .NET Standard 2.0, lo que significa que Backblaze Agent funcionará en sistemas Windows, Mac y Linux.
Se integra perfectamente con .NET Core Dependency injection y HttpClientFactory para implementar solicitudes resistentes.
Caché de respuesta en memoria simple usando MemoryCache.
Compatibilidad con archivos grandes con baja asignación de memoria y estado de IProgress.
Soporte nativo del modelo de programación basado en tareas (async/await).
Para solicitudes de funciones e informes de errores, abra una incidencia en GitHub.
Para instalar Backblaze.Agent ejecute el siguiente comando:
> dotnet agregar paquete Backblaze.Agent
¡Trabajo en progreso! Si bien animamos a los usuarios a jugar con las muestras y los programas de prueba, este proyecto aún no ha alcanzado un estado estable.
Necesitará un key_id y un application_key para configurar Backblaze Agent. Puede obtenerlos desde el portal Backblaze B2 Cloud Storage. Consulte el Proyecto de muestra para ver un ejemplo de cómo utilizar estos paquetes.
public void ConfigureServices(servicios IServiceCollection){services.AddBackblazeAgent(opciones =>{options.KeyId = "[key_id]";options.ApplicationKey = "[application_key]";});}
Para obtener una lista de depósitos backblaze, simplemente inyecte IStorageClient
en su clase y llame al cliente asíncrono.
clase pública IndexModel: PageModel{ IStorageClient privado de solo lectura _storage; IndexModel público (almacenamiento IStorageClient) { _almacenamiento = almacenamiento; } [Propiedad Vinculada] cubos públicos IEnumerable<BucketItem> { get; conjunto privado; } Tarea asíncrona pública<IActionResult> OnGetAsync() {Depósitos = await _storage.Buckets.GetAsync();if (Depósitos == null){ return NotFound();}return Page(); }}
Instale los siguientes paquetes:
> dotnet agregar paquete Backblaze.Client> dotnet agregar paquete Microsoft.Extensions.Caching.Memory> dotnet agregar paquete Microsoft.Extensions.Logging.Debug
Código de muestra:
Programa de clase { Cliente IStorageClient estático privado; Tarea asíncrona estática principal (cadena [] argumentos) {intentar{ var opciones = nuevas ClientOptions(); var loggerFactory = LoggerFactory.Create(constructor => {constructor .AddFilter("Bytewizer.Backblaze", LogLevel.Trace) .AddDebug(); }); var cache = new MemoryCache(nuevas MemoryCacheOptions()); Cliente = nuevo BackblazeClient (opciones, loggerFactory, caché); aguarde Client.ConnectAsync("[key_id]", "[application_key]"); var depósitos = espera Client.Buckets.GetAsync(); foreach (var depósito en depósitos)Console.WriteLine($"Nombre del depósito: {bucket.BucketName} - Tipo: {bucket.BucketType}"); }catch (Excepción ex){ Console.Error.WriteLine(ex.Message);} }}
Instale el siguiente paquete:
> dotnet agregar paquete Backblaze.Client
Código de muestra:
Programa de clase { Cliente IStorageClient estático privado; vacío estático principal (cadena [] argumentos) {intentar{ Cliente = nuevo BackblazeClient(); Client.Connect("[key_id]", "[aplicación_key]"); var depósitos = Client.Buckets.GetAsync().GetAwaiter().GetResult(); foreach (var depósito en depósitos)Console.WriteLine($"Nombre del depósito: {bucket.BucketName} - Tipo: {bucket.BucketType}");}catch (Exception ex){ Console.Error.WriteLine(ex.Message); } }}
Cargar secuencia de archivos
foreach (var filePath en Directory.GetFiles(@"c:mydirectory")){ usando (var stream = File.OpenRead(filePath)) {var resultados = await Client.UploadAsync("[BucketId]", new FileInfo(filePath).Name, stream); }}
Descargar secuencia de archivos
var archivos = nueva cadena[] { @"c:mydirectoryfile1.txt", "file2.bat" };foreach (var fileName en archivos){ usando (var stream = File.Create(fileName)) { var resultados = await Client.DownloadAsync("[BucketName]", fileName, stream); }}
Instale los paquetes Microsoft.Extensions.Logging:
> dotnet agregar paquete Microsoft.Extensions.Logging.Debug
El seguimiento a la ventana de depuración se puede habilitar con el siguiente código:
servicios.AddLogging(builder =>{builder.AddDebug();builder.AddFilter("Bytewizer.Backblaze", LogLevel.Trace);});
servicios.AddBackblazeAgent(opciones =>{ opciones.KeyId = "[key_id]"; opciones.ApplicationKey = "[clave_aplicación]";});
La siguiente tabla describe las opciones de agente disponibles:
Nombre de la opción | Por defecto | Descripción |
---|---|---|
ID de clave | --- | Obligatorio : el identificador de clave utilizado para la autenticación. |
Clave de aplicación | --- | Obligatorio : la parte secreta de la clave utilizada para la autenticación. |
ManejadorVida útil | 600 | El tiempo en segundos que se puede reutilizar la instancia del controlador de mensajes. |
Se acabó el tiempo | 600 | El tiempo en segundos que se debe esperar antes de que se agote el tiempo de espera de la solicitud del cliente. |
Recuento de reintentos | 5 | La cantidad de veces que el cliente reintentará las solicitudes fallidas antes de que se agote el tiempo de espera. |
SolicitudMaxParalelo | 10 | El número máximo de conexiones de solicitud paralelas establecidas. |
DescargarMaxParallel | 5 | El número máximo de conexiones de descarga paralela establecidas. |
DescargarCutoffSize | 100MB | Descargue el tamaño de corte para cambiar a partes fragmentadas en bytes. |
DescargarPartSize | 100MB | Descargue el tamaño de las piezas fragmentadas en bytes. |
SubirMaxParalelo | 3 | El número máximo de conexiones de carga paralelas establecidas. |
Tamaño de corte de carga | 100MB | Cargue el tamaño de corte para cambiar a partes fragmentadas en bytes. |
Tamaño de pieza de carga | 100MB | Cargue el tamaño de las piezas fragmentadas en bytes. |
AutoSetPartSize | FALSO | Utilice el tamaño de pieza recomendado devuelto por el servicio Backblaze. |
Suma de comprobaciónDisabled | FALSO | Esto es sólo para uso de prueba y no se recomienda para entornos de producción. |
Modo de prueba | --- | Esto es sólo para uso de prueba y no se recomienda para entornos de producción. |
servicios.AddBackblazeAgent(opciones =>{ // Esto es sólo para uso de prueba y no se recomienda para entornos de producción. opciones.TestMode = "fail_some_uploads"; });
Las siguientes opciones del modo de prueba están disponibles para verificar que su código maneja correctamente las condiciones de error.
Cadena de opción | Descripción |
---|---|
falla_algunas_cargas | Las cargas aleatorias fallan o son rechazadas por el servicio. |
expire_some_account_authorization_tokens | Los tokens de autorización de cuenta aleatorios caducan. |
force_cap_exceeded | Las condiciones de límite excedido son forzadas. |
Necesitará un key_id y un application_key para configurar el archivo settings.json del agente de prueba Backblaze.
Todas las fuentes, documentación, instrucciones y productos de este proyecto se proporcionan tal como están sin garantía. No se acepta responsabilidad por daños, pérdida de datos o costos incurridos por su uso.
master : esta es la rama que contiene la última versión; no se deben realizar contribuciones directamente a esta rama.
desarrollar : esta es la rama de desarrollo a la que los contribuyentes deben proponer contribuciones como solicitudes de extracción. Esta rama de desarrollo se fusionará periódicamente con la rama maestra y se publicará en NuGet Gallery.
Las contribuciones a este proyecto siempre son bienvenidas. Considere bifurcar este proyecto en GitHub y enviar una solicitud de extracción para agregar sus mejoras al proyecto original.