Agregando funcionalidades
Además del núcleo de APIs y frontends, los proyectos reales con frecuencia requieren funcionalidades adicionales para garantizar la seguridad, el control de acceso y la ejecución de procesos en segundo plano.
Lino facilita la adición de estas capacidades de manera estandarizada, reflejándolas tanto en el backend (endpoints) como en el frontend (aplicaciones Blazor).
Seguridad y Autenticación
La autenticación es la base de cualquier sistema seguro. Lino admite autenticación basada en JWT (JSON Web Tokens), utilizando el esquema Bearer en las APIs.
Flujo típico de autenticación:
1. El usuario inicia sesión (a través de un endpoint o página dedicada).
2. Se emite un JWT con claims que representan identidad, roles y permisos.
3. Cada solicitud a la API incluye el token en el header: Authorization: Bearer <token>
4. El middleware de autenticación valida el token, verificando la firma y la expiración.
Autorización basada en Policies
Lino utiliza Policies para implementar autorización granular:
- Cada acción puede requerir una Policy específica (por ejemplo: People.Read, People.Create).
- Las policies se configuran mediante AddAuthorization.
- Los endpoints pueden protegerse declarando:
.RequireAuthorization
Agregar seguridad a proyectos Lino
Para agregar seguridad a un proyecto, ejecute:
lino features auth add
El asistente interactivo de CLI solicitará las siguientes configuraciones:
- Servicio – servicio en el que se configurarán los recursos de seguridad.
- Módulo – módulo específico donde se instalará la seguridad (aplicable solo en servicios modulares).
- Duración del Access Token – tiempo de vida del token de acceso.
- Duración del Refresh Token – tiempo de vida del token de actualización.
- Tipo de identificador de usuario – define el tipo de dato usado como UserId (
int,longoGuid).
Estas configuraciones aseguran que la pipeline de autenticación/autorización se configure automáticamente, lista para usar en APIs e integrada con Blazor.
Trabajos en segundo plano
Muchos sistemas necesitan ejecutar procesos asíncronos en segundo plano, como:
- Envío de correos electrónicos
- Generación de informes
- Sincronización con sistemas externos.
Lino ofrece soporte nativo a Hangfire como orquestador de trabajos.
Beneficios de Hangfire
- Ejecución confiable de trabajos asíncronos.
- Panel de monitoreo integrado.
- Soporte para trabajos recurrentes o programados.
- Persistencia confiable de los trabajos en la base de datos.
Integración de eventos con Outbox Message
Para garantizar consistencia en integraciones asíncronas, Lino adopta el patrón Outbox Message.
Al ejecutar una acción de negocio (por ejemplo: creación de un pedido), el evento correspondiente (OrderCreated) se guarda en la tabla Outbox, en la misma transacción que persiste el estado del dominio. Un procesador en segundo plano lee la tabla Outbox y publica los eventos en sistemas de mensajería (RabbitMQ, Kafka, etc.).
Beneficios del Outbox:
- Atomicidad → la base de datos y los eventos publicados permanecen sincronizados.
- Confiabilidad → ningún evento se pierde, incluso en caso de fallo.
- Escalabilidad → múltiples consumidores pueden procesar los eventos.
Este modelo garantiza integraciones seguras y resilientes en arquitecturas distribuidas.
Con estas funcionalidades adicionales, Lino ofrece seguridad robusta, control granular de acceso y procesamiento asíncrono confiable, satisfaciendo los requisitos críticos de aplicaciones modernas en producción.
Agregar funcionalidades de Background Job a proyectos Lino
El procesamiento asíncrono es esencial para tareas que no deben bloquear el flujo principal de solicitudes, como envío de notificaciones, generación de informes o publicación de eventos.
Lino permite habilitar soporte para Background Jobs (a través de bibliotecas) con un solo comando:
lino features background-job add
El CLI solicitará los siguientes parámetros de configuración:
- Servicio – servicio en el que se añadirá la funcionalidad de Background Job.
- Biblioteca – biblioteca elegida para la ejecución y programación de trabajos.
- Intervalo de verificación y procesamiento - intervalo en el que se revisará la cola para buscar nuevos mensajes Outbox.
- Cantidad de registros - número máximo de registros procesados por ciclo, controlando paralelismo y consumo de recursos.
Estas opciones permiten configurar el sistema de manera escalable y resiliente, garantizando la ejecución confiable de tareas en segundo plano.
