Saltar al contenido principal

Paquetes de Vali-Blob

Vali-Blob está distribuido en 12 paquetes NuGet independientes y modulares. Esta arquitectura permite instalar exclusivamente lo que tu proyecto necesita, evitando dependencias innecesarias.

Diagrama de dependencias

loading...

Todos los paquetes dependen de Vali-Blob.Core. Ningún paquete de proveedor depende de otro proveedor.


Tabla completa de paquetes

PaqueteDescripciónFrameworksCuándo usar
Vali-Blob.CoreInterfaces, pipeline, DI, tipos basenet8.0, net9.0Siempre — es el núcleo
Vali-Blob.AWSProveedor Amazon S3 y compatiblesnet8.0, net9.0Infraestructura en AWS o MinIO
Vali-Blob.AzureProveedor Azure Blob Storagenet8.0, net9.0Infraestructura en Azure
Vali-Blob.GCPProveedor Google Cloud Storagenet8.0, net9.0Infraestructura en GCP
Vali-Blob.OCIProveedor Oracle Cloud Infrastructurenet8.0, net9.0Infraestructura en OCI
Vali-Blob.SupabaseProveedor Supabase Storagenet8.0, net9.0Proyectos con Supabase como BaaS
Vali-Blob.LocalSistema de archivos localnet8.0, net9.0Desarrollo local y pruebas
Vali-Blob.RedisSesiones reanudables con Redisnet8.0, net9.0Subidas reanudables en producción multi-instancia
Vali-Blob.EFCoreSesiones reanudables con EF Corenet8.0, net9.0Subidas reanudables con BD existente
Vali-Blob.TestingProveedor en memorianet8.0, net9.0Pruebas unitarias e integración
Vali-Blob.HealthChecksHealth checks ASP.NET Corenet8.0, net9.0Monitoreo y probes de Kubernetes
Vali-Blob.ImageSharpProcesamiento de imágenesnet8.0, net9.0Resize, conversión de formato

Vali-Blob.Core

El paquete central. Siempre requerido — todos los demás paquetes lo incluyen como dependencia transitiva.

dotnet add package Vali-Blob.Core

Contiene las interfaces y tipos fundamentales:

TipoDescripción
IStorageProviderInterfaz principal de operaciones de almacenamiento
StorageResult<T>Tipo de retorno universal que evita excepciones
StoragePathUtilidades para construir y normalizar rutas
StorageErrorCodeEnumeración de todos los códigos de error
UploadRequest / UploadResultTipos de subida
DownloadRequestTipo de descarga
FileMetadata / FileEntryMetadatos y listado
StoragePipelineBuilderConstructor del pipeline
IStorageEventHandler<T>Manejadores de eventos
IResumableStorageProviderInterfaz de subidas reanudables

Dependencias externas: Microsoft.Extensions.DependencyInjection.Abstractions, Microsoft.Extensions.Options, Microsoft.Extensions.Logging.Abstractions


Vali-Blob.AWS

Proveedor para Amazon S3 y servicios compatibles como MinIO y LocalStack.

dotnet add package Vali-Blob.AWS

Opciones de configuración (AWSS3Options)

PropiedadTipoDescripción
BucketNamestringNombre del bucket de S3
RegionstringRegión de AWS (ej. us-east-1)
AccessKeystringClave de acceso IAM
SecretKeystringClave secreta IAM
ServiceUrlstring?URL personalizada para MinIO o LocalStack
ForcePathStyleboolRequerido para MinIO y LocalStack
SessionTokenstring?Token de sesión temporal (STS)

Dependencias externas: AWSSDK.S3


Vali-Blob.Azure

Proveedor para Azure Blob Storage con soporte para Managed Identity y tokens SAS.

dotnet add package Vali-Blob.Azure

Opciones de configuración (AzureBlobOptions)

PropiedadTipoDescripción
ConnectionStringstringCadena de conexión de la cuenta de almacenamiento
ContainerNamestringNombre del contenedor de blobs
CreateContainerIfNotExistsboolCrear el contenedor automáticamente si no existe
UseManagedIdentityboolUsar Managed Identity en lugar de clave de acceso
AccountNamestring?Nombre de la cuenta (requerido con Managed Identity)

Dependencias externas: Azure.Storage.Blobs


Vali-Blob.GCP

Proveedor para Google Cloud Storage.

dotnet add package Vali-Blob.GCP

Opciones de configuración (GCPStorageOptions)

PropiedadTipoDescripción
ProjectIdstringID del proyecto de GCP
BucketNamestringNombre del bucket de GCS
JsonCredentialsstring?JSON de cuenta de servicio. Null = credenciales de entorno
JsonCredentialsPathstring?Ruta al archivo JSON de credenciales

Dependencias externas: Google.Cloud.Storage.V1


Vali-Blob.OCI

Proveedor para Oracle Cloud Infrastructure Object Storage.

dotnet add package Vali-Blob.OCI

Opciones de configuración (OCIStorageOptions)

PropiedadTipoDescripción
NamespacestringNamespace del Object Storage de OCI
BucketNamestringNombre del bucket
RegionstringRegión de OCI (ej. us-phoenix-1)
TenancyIdstringOCID del tenancy
UserIdstringOCID del usuario
FingerprintstringHuella digital de la clave API
PrivateKeystringClave privada RSA en formato PEM

Dependencias externas: OCI.DotNetSDK.Objectstorage


Vali-Blob.Supabase

Proveedor para Supabase Storage con soporte para buckets públicos y privados.

dotnet add package Vali-Blob.Supabase

Opciones de configuración (SupabaseStorageOptions)

PropiedadTipoDescripción
UrlstringURL del proyecto Supabase (https://xxx.supabase.co)
ServiceKeystringService role key de Supabase
BucketNamestringNombre del bucket de Supabase Storage
IsPublicboolSi el bucket es público

Dependencias externas: supabase-csharp


Vali-Blob.Local

Proveedor de sistema de archivos local. Ideal para desarrollo sin dependencias de nube.

dotnet add package Vali-Blob.Local

Opciones de configuración (LocalStorageOptions)

PropiedadTipoDescripción
BasePathstringDirectorio raíz para almacenar archivos
CreateIfNotExistsboolCrear el directorio si no existe
PublicBaseUrlstring?URL base para generar URLs públicas

Características especiales:

  • Almacena metadatos en archivos sidecar .meta.json junto a cada archivo
  • Soporta subidas reanudables usando subdirectorios de chunks temporales
  • Compatible con app.UseStaticFiles() para servir archivos

Vali-Blob.Redis

Almacén de sesiones de subidas reanudables usando Redis.

dotnet add package Vali-Blob.Redis

Dependencias externas: StackExchange.Redis

Cuándo usar: producción con múltiples instancias del servidor y Redis ya disponible en la infraestructura.


Vali-Blob.EFCore

Almacén de sesiones de subidas reanudables usando Entity Framework Core.

dotnet add package Vali-Blob.EFCore

Bases de datos soportadas

Base de datosPaquete adicional requerido
PostgreSQLNpgsql.EntityFrameworkCore.PostgreSQL
MySQL / MariaDBPomelo.EntityFrameworkCore.MySql
SQL ServerMicrosoft.EntityFrameworkCore.SqlServer
SQLiteMicrosoft.EntityFrameworkCore.Sqlite

Dependencias externas: Microsoft.EntityFrameworkCore


Vali-Blob.Testing

Proveedor en memoria para pruebas unitarias e integración.

dotnet add package Vali-Blob.Testing

Características:

  • InMemoryStorageProvider: almacena todo en un diccionario en memoria
  • Sin dependencias externas ni servicios de nube
  • Estado inspectable directamente en las pruebas con .GetAllFiles()
  • Limpieza entre pruebas con .Clear()

Vali-Blob.HealthChecks

Integración con el sistema de health checks de ASP.NET Core.

dotnet add package Vali-Blob.HealthChecks

Dependencias externas: Microsoft.Extensions.Diagnostics.HealthChecks

Requiere ASP.NET Core. Expone un endpoint de health check que verifica la conectividad con el proveedor de almacenamiento.


Vali-Blob.ImageSharp

Middleware de procesamiento de imágenes basado en SixLabors.ImageSharp.

dotnet add package Vali-Blob.ImageSharp

Capacidades:

  • Redimensionado (resize) con múltiples modos (Fill, Crop, Pad, Max)
  • Conversión de formato: JPEG, PNG, WebP, AVIF
  • Control de calidad de compresión por formato
  • Generación de miniaturas automáticas al subir
  • Rotación y volteo

Dependencias externas: SixLabors.ImageSharp


Tabla de compatibilidad

Paquete.NET 8.NET 9Requiere ASP.NET Core
Vali-Blob.CoreNo
Vali-Blob.AWSNo
Vali-Blob.AzureNo
Vali-Blob.GCPNo
Vali-Blob.OCINo
Vali-Blob.SupabaseNo
Vali-Blob.LocalNo
Vali-Blob.RedisNo
Vali-Blob.EFCoreNo
Vali-Blob.TestingNo
Vali-Blob.HealthChecks
Vali-Blob.ImageSharpNo
Consejo

En un proyecto típico instalarás Vali-Blob.Core + un proveedor de nube (ej. Vali-Blob.AWS) + Vali-Blob.Testing para pruebas. Agrega Vali-Blob.HealthChecks si usas Kubernetes o monitoreo de disponibilidad. El resto depende de las funcionalidades específicas que necesites.

Información

Todos los paquetes de Vali-Blob se publican con el mismo número de versión de forma sincronizada. Siempre instala la misma versión en todos los paquetes de Vali-Blob para evitar incompatibilidades.