Aggiunta di funzionalità
Oltre al nucleo di API e frontend, i progetti reali richiedono spesso funzionalitĂ aggiuntive per garantire sicurezza, controllo degli accessi ed esecuzione di processi in background.
Lino facilita lâaggiunta di queste capacitĂ in modo standardizzato, riflettendole sia nel backend (endpoint) sia nel frontend (applicazioni Blazor).
Sicurezza e Autenticazione
L'autenticazione è la base di qualsiasi sistema sicuro. Lino supporta l'autenticazione basata su JWT (JSON Web Tokens), utilizzando lo schema Bearer nelle API.
Flusso tipico di autenticazione:
1. L'utente effettua il login (tramite endpoint o pagina dedicata).
2. Viene emesso un JWT con claims che rappresentano identitĂ , ruoli e permessi.
3. Ogni richiesta all'API include il token nell'header: Authorization: Bearer <token>
4. Il middleware di autenticazione valida il token, verificando firma e scadenza.
Autorizzazione basata su Policy
Lino utilizza le Policy per implementare un'autorizzazione granulare:
- Ogni azione può richiedere una Policy specifica (es.: People.Read, People.Create).
- Le policy sono configurate tramite AddAuthorization.
- Gli endpoint possono essere protetti dichiarando:
.RequireAuthorization
Aggiungere sicurezza ai progetti Lino
Per aggiungere sicurezza a un progetto, eseguire:
lino features auth add
La procedura guidata interattiva della CLI richiederĂ le seguenti configurazioni:
- Servizio â servizio in cui verranno configurate le risorse di sicurezza.
- Modulo â modulo specifico in cui verrĂ installata la sicurezza (applicabile solo ai servizi modulari).
- Durata Access Token â tempo di validitĂ del token di accesso.
- Durata Refresh Token â tempo di validitĂ del token di aggiornamento.
- Tipo di identificatore utente â definisce il tipo di dato utilizzato come UserId (
int,longoGuid).
Queste impostazioni garantiscono che la pipeline di autenticazione/autorizzazione sia configurata automaticamente, pronta all'uso nelle API e integrata in Blazor.
Job in Background
Molti sistemi necessitano di eseguire processi asincroni in background, come:
- Invio di email
- Generazione di report
- Sincronizzazione con sistemi esterni.
Lino offre supporto nativo a Hangfire come orchestratore dei job.
Vantaggi di Hangfire
- Esecuzione affidabile dei job asincroni.
- Pannello di monitoraggio integrato.
- Supporto a job ricorrenti o pianificati.
- Persistenza affidabile dei job nel database.
Integrazione degli eventi con Outbox Message
Per garantire coerenza nelle integrazioni asincrone, Lino adotta il pattern Outbox Message.
Quando viene eseguita unâazione di business (es.: creazione di un ordine), lâevento corrispondente (OrderCreated) viene salvato nella tabella Outbox, nella stessa transazione che persiste lo stato del dominio. Un processore in background legge la tabella Outbox e pubblica gli eventi nei sistemi di messaggistica (RabbitMQ, Kafka, ecc.).
Vantaggi dellâOutbox:
- AtomicitĂ â database ed eventi pubblicati rimangono sincronizzati.
- AffidabilitĂ â nessun evento viene perso, anche in caso di errore.
- ScalabilitĂ â piĂš consumatori possono elaborare gli eventi.
Questo modello garantisce integrazioni sicure e resilienti nelle architetture distribuite.
Con queste funzionalitĂ aggiuntive, Lino offre sicurezza robusta, controllo granulare degli accessi e elaborazione asincrona affidabile, soddisfacendo i requisiti critici delle applicazioni moderne in produzione.
Aggiungere funzionalitĂ di Background Job ai progetti Lino
Lâelaborazione asincrona è essenziale per attivitĂ che non devono bloccare il flusso principale delle richieste, come invio di notifiche, generazione di report o pubblicazione di eventi.
Lino permette di abilitare il supporto ai Background Job (tramite librerie) con un singolo comando:
lino features background-job add
Il CLI richiederĂ i seguenti parametri di configurazione:
- Servizio â servizio in cui verrĂ aggiunta la funzionalitĂ di Background Job.
- Libreria â libreria scelta per lâesecuzione e la pianificazione dei job.
- Intervallo di controllo e processamento - intervallo in cui la coda viene controllata per cercare nuovi messaggi Outbox.
- Numero di record - numero massimo di record processati per ciclo, controllando il parallelismo e il consumo di risorse.
Queste opzioni consentono di configurare il sistema in modo scalabile e resiliente, garantendo lâesecuzione affidabile dei job in background.
