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
| Paquete | Descripción | Frameworks | Cuándo usar |
|---|---|---|---|
Vali-Blob.Core | Interfaces, pipeline, DI, tipos base | net8.0, net9.0 | Siempre — es el núcleo |
Vali-Blob.AWS | Proveedor Amazon S3 y compatibles | net8.0, net9.0 | Infraestructura en AWS o MinIO |
Vali-Blob.Azure | Proveedor Azure Blob Storage | net8.0, net9.0 | Infraestructura en Azure |
Vali-Blob.GCP | Proveedor Google Cloud Storage | net8.0, net9.0 | Infraestructura en GCP |
Vali-Blob.OCI | Proveedor Oracle Cloud Infrastructure | net8.0, net9.0 | Infraestructura en OCI |
Vali-Blob.Supabase | Proveedor Supabase Storage | net8.0, net9.0 | Proyectos con Supabase como BaaS |
Vali-Blob.Local | Sistema de archivos local | net8.0, net9.0 | Desarrollo local y pruebas |
Vali-Blob.Redis | Sesiones reanudables con Redis | net8.0, net9.0 | Subidas reanudables en producción multi-instancia |
Vali-Blob.EFCore | Sesiones reanudables con EF Core | net8.0, net9.0 | Subidas reanudables con BD existente |
Vali-Blob.Testing | Proveedor en memoria | net8.0, net9.0 | Pruebas unitarias e integración |
Vali-Blob.HealthChecks | Health checks ASP.NET Core | net8.0, net9.0 | Monitoreo y probes de Kubernetes |
Vali-Blob.ImageSharp | Procesamiento de imágenes | net8.0, net9.0 | Resize, 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:
| Tipo | Descripción |
|---|---|
IStorageProvider | Interfaz principal de operaciones de almacenamiento |
StorageResult<T> | Tipo de retorno universal que evita excepciones |
StoragePath | Utilidades para construir y normalizar rutas |
StorageErrorCode | Enumeración de todos los códigos de error |
UploadRequest / UploadResult | Tipos de subida |
DownloadRequest | Tipo de descarga |
FileMetadata / FileEntry | Metadatos y listado |
StoragePipelineBuilder | Constructor del pipeline |
IStorageEventHandler<T> | Manejadores de eventos |
IResumableStorageProvider | Interfaz 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)
| Propiedad | Tipo | Descripción |
|---|---|---|
BucketName | string | Nombre del bucket de S3 |
Region | string | Región de AWS (ej. us-east-1) |
AccessKey | string | Clave de acceso IAM |
SecretKey | string | Clave secreta IAM |
ServiceUrl | string? | URL personalizada para MinIO o LocalStack |
ForcePathStyle | bool | Requerido para MinIO y LocalStack |
SessionToken | string? | 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)
| Propiedad | Tipo | Descripción |
|---|---|---|
ConnectionString | string | Cadena de conexión de la cuenta de almacenamiento |
ContainerName | string | Nombre del contenedor de blobs |
CreateContainerIfNotExists | bool | Crear el contenedor automáticamente si no existe |
UseManagedIdentity | bool | Usar Managed Identity en lugar de clave de acceso |
AccountName | string? | 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)
| Propiedad | Tipo | Descripción |
|---|---|---|
ProjectId | string | ID del proyecto de GCP |
BucketName | string | Nombre del bucket de GCS |
JsonCredentials | string? | JSON de cuenta de servicio. Null = credenciales de entorno |
JsonCredentialsPath | string? | 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)
| Propiedad | Tipo | Descripción |
|---|---|---|
Namespace | string | Namespace del Object Storage de OCI |
BucketName | string | Nombre del bucket |
Region | string | Región de OCI (ej. us-phoenix-1) |
TenancyId | string | OCID del tenancy |
UserId | string | OCID del usuario |
Fingerprint | string | Huella digital de la clave API |
PrivateKey | string | Clave 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)
| Propiedad | Tipo | Descripción |
|---|---|---|
Url | string | URL del proyecto Supabase (https://xxx.supabase.co) |
ServiceKey | string | Service role key de Supabase |
BucketName | string | Nombre del bucket de Supabase Storage |
IsPublic | bool | Si 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)
| Propiedad | Tipo | Descripción |
|---|---|---|
BasePath | string | Directorio raíz para almacenar archivos |
CreateIfNotExists | bool | Crear el directorio si no existe |
PublicBaseUrl | string? | URL base para generar URLs públicas |
Características especiales:
- Almacena metadatos en archivos sidecar
.meta.jsonjunto 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 datos | Paquete adicional requerido |
|---|---|
| PostgreSQL | Npgsql.EntityFrameworkCore.PostgreSQL |
| MySQL / MariaDB | Pomelo.EntityFrameworkCore.MySql |
| SQL Server | Microsoft.EntityFrameworkCore.SqlServer |
| SQLite | Microsoft.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 9 | Requiere ASP.NET Core |
|---|---|---|---|
| Vali-Blob.Core | ✅ | ✅ | No |
| Vali-Blob.AWS | ✅ | ✅ | No |
| Vali-Blob.Azure | ✅ | ✅ | No |
| Vali-Blob.GCP | ✅ | ✅ | No |
| Vali-Blob.OCI | ✅ | ✅ | No |
| Vali-Blob.Supabase | ✅ | ✅ | No |
| Vali-Blob.Local | ✅ | ✅ | No |
| Vali-Blob.Redis | ✅ | ✅ | No |
| Vali-Blob.EFCore | ✅ | ✅ | No |
| Vali-Blob.Testing | ✅ | ✅ | No |
| Vali-Blob.HealthChecks | ✅ | ✅ | Sí |
| Vali-Blob.ImageSharp | ✅ | ✅ | No |
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.
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.