Scopri come Lino accelera i progetti .NET con Clean Architecture, DDD, CQRS, JWT, multi-tenancy, shadow entities, RabbitMQ, Hangfire, Blazor, cache, osservabilità e deploy.
Lino è una CLI per generare applicazioni moderne in .NET.
Automatizza architettura, moduli, API, autenticazione, frontend e infrastruttura concentrandosi su Clean Architecture, DDD e CQRS.
Lino serve a ridurre il lavoro ripetitivo di avvio ed evoluzione delle applicazioni .NET.
Invece di assemblare manualmente la soluzione, i livelli, gli endpoint, l'autenticazione e la distribuzione iniziale, il team parte da una base già pronta e si concentra sulle regole aziendali.
Lino è un generatore di codice per .NET, non un framework chiuso.
Dopo la generazione, il progetto appartiene al team e può essere modificato senza dipendenza obbligatoria dallo strumento.
L'obiettivo principale di Lino è la generazione deterministica basata su modelli e regole.
Ciò aiuta a mantenere la prevedibilità, la coerenza dell'architettura e meno rumore rispetto ai flussi dipendenti dall'intelligenza artificiale.
Lino è stato creato da Eduardo Tolino per aumentare la produttività e standardizzare l'architettura delle moderne applicazioni in .NET.
Sì.
I progetti generati usano pattern comuni nel software enterprise, come Clean Architecture, CQRS, DDD, JWT, Docker, osservabilità e integrazione con pipeline. La base generata deve comunque essere revisionata, testata e configurata per ogni ambiente di produzione.
La differenza principale di Lino è accelerare la creazione di applicazioni .NET con una base architettonica coerente fin dal primo comando.
Combina generazione di codice, organizzazione modulare, API, frontend, autenticazione, eventi e infrastruttura in un unico flusso.
Per utilizzare Lino è necessario aver installato .NET SDK, Git, Entity Framework CLI e Docker.
dotnet tool install --global Tolitech.Lino
Dopo l'installazione puoi controllare la versione con lino --version.
lino project new --name MyProject
Questo comando crea la struttura iniziale del progetto con livelli, moduli e configurazioni di base.
Lino può generare struttura di progetto, servizi, moduli, entities, value objects, enumerazioni, commands, queries, APIs, pagine, eventi, event handlers, migrations, configurazione dei secrets, background jobs e immagini Docker, in base alle features selezionate.
Sì. Il codice generato è completamente tuo e non dipende dallo strumento per continuare a lavorare.
Sì. Lino è una buona opzione per MVP quando desideri velocità senza rinunciare a una base pulita per evolversi in seguito.
Sì. Lino aiuta i progetti SaaS che richiedono un backend organizzato, autenticazione, APIs, frontend web, infrastruttura standardizzata, isolamento del tenant, permessi per contesto, gestione dei secrets e rate limiting.
Sì. Lino è stato progettato per applicazioni aziendali in .NET che richiedono separazione di livelli, moduli ben definiti, API, eventi e integrazione con l'infrastruttura reale.
Entrambi gli scenari sono validi. Per la maggior parte dei prodotti, iniziare con un monolite modulare è spesso più semplice ed economico.
Lino ha senso quando devi fornire un progetto .NET con un'architettura coerente, una configurazione rapida e spazio per crescere senza riscrivere la base.
Se il progetto è estremamente piccolo, usa e getta o non richiede un'architettura modulare, il guadagno di Lino potrebbe essere inferiore.
Sì. Il vantaggio sta nell'eliminare ore o giorni di configurazione ripetitiva per backend, frontend, autenticazione, endpoint, eventi, persistenza e infrastruttura iniziale.
I team .NET che creano prodotti web, SaaS, sistemi interni, piattaforme B2B e servizi aziendali tendono a trarre i maggiori benefici da Lino.
Lino utilizza Clean Architecture, separando il sistema in livelli come Dominio, Applicazione, Infrastruttura e Presentazione.
Sì. Lino incoraggia la modellazione basata sul dominio con Entities, Value Objects, Enums, Domain Events e bounded contexts.
Sì. Commands e Queries sono separati per facilitare l'organizzazione, la manutenzione e la scalabilità dell'applicazione.
Sì. Il monolite modulare è uno degli scenari più naturali per Lino, soprattutto quando il team desidera bassi costi operativi con una buona separazione interna.
Sì. Lino può essere utilizzato per creare monoliti modulari, servizi indipendenti e architetture basate su microservizi.
Sì. Lino è stato progettato per rafforzare la separazione delle responsabilità, l'accoppiamento libero, la modularità e l'evoluzione sostenibile del codice.
Entities rappresentano oggetti con una propria identità all'interno del dominio, come Utente, Ordine o Prodotto.
Value Objects rappresentano concetti di dominio immutabili che non hanno una propria identità, come Denaro, Indirizzo o E-mail.
Sì. Lino supporta Domain Events per rappresentare eventi rilevanti all'interno del dominio e mantenere un basso accoppiamento tra le parti del sistema.
Il dominio può essere suddiviso in moduli o bounded contexts per riflettere aree aziendali distinte, come catalogo, vendite, inventario, identità o fatturazione.
Sì. Puoi iniziare con pochi moduli e regole più semplici ed evolvere la modellazione man mano che il prodotto matura.
Sì. Lino può generare automaticamente endpoint in base ai comandi e alle query dell'applicazione.
Sì. Le API generate utilizzano Minimal APIs di .NET, integrati direttamente con il livello dell'applicazione.
Il progetto generato è compatibile con la documentazione API tramite OpenAPI e Swagger, che facilita l'ispezione del contratto, i test e l'integrazione tra i team.
Il controllo delle versioni può seguire gli standard REST noti ed essere combinato con l'organizzazione per endpoint, contratti e build.
Sì. L'architettura Lino consente di integrare API esterne, webhook, SDK e servizi di terze parti attraverso il livello dell'infrastruttura.
Il progetto generato espone contratti API tramite OpenAPI/Swagger, e i test pratici degli endpoint possono essere supportati da file HTTP o strumenti client simili in base al template e al workflow scelti.
Sì. Lino supporta la generazione di autenticazione e autorizzazione per progetti frontend e backend.
Sì. Lino supporta l'autenticazione basata su JWT per API e applicazioni web, con particolare attenzione alla sicurezza e all'integrazione nativa con ASP.NET Core.
Sì. Il modello di sicurezza di Lino include un controllo degli accessi più granulare con ruoli, attestazioni e Authorization Policies di ASP.NET Core.
Sì. Il frontend può essere integrato nel flusso di autenticazione per login, rinnovo token e accesso protetto a pagine e API.
Lino fornisce comandi per i secrets, come lino secret list, lino secret set, lino secret remove e lino secret clear, per mantenere i valori sensibili locali fuori dai file versionati. I secrets generati possono anche essere modellati come Aspire Parameters per i flussi di publish e deploy.
Sì. Le APIs generate possono nascere con policy di rate limiting per traffico pubblico, utenti autenticati, route con API key e flussi con token temporaneo, riducendo l'esposizione prima della messa a punto in produzione.
Domain Events rappresentano eventi interni al dominio. I Integration Events vengono utilizzati per comunicare in modo disaccoppiato moduli, servizi o sistemi esterni.
Sì. Lino supporta eventi per la comunicazione tra parti dell'applicazione e per l'integrazione tra servizi quando l'architettura richiede questo modello.
Sì. Quando la messaggistica asincrona è abilitata, Lino configura RabbitMQ come broker affinché servizi e moduli scambino messaggi in modo disaccoppiato e resiliente.
Sì. Lino usa MassTransit negli scenari di messaggistica per semplificare pubblicazione, consumo e registrazione di eventi distribuiti con il modello nativo di dependency injection.
Sì. Lino supporta background jobs con Hangfire per attività pianificate, elaborazione asincrona, operazioni ricorrenti e visibilità operativa tramite la dashboard Hangfire.
Usa domain events per cambiamenti dentro il dominio, integration events per comunicazione tra moduli o servizi, code per elaborazione asincrona e background jobs per lavoro pianificato, ricorrente o di lunga durata. Per pubblicazione affidabile, gli scenari Lino usano l'Outbox Pattern.
Attualmente Lino supporta database compatibili con Entity Framework Core, come SQL Server e PostgreSQL.
Sì. La persistenza dei dati si basa su Entity Framework Core per la modellazione, le migrazioni e l'evoluzione del database durante tutto il ciclo di vita del progetto.
Le migrations sono gestite con Entity Framework Core e possono essere create tramite lino database migrations add, mantenendo le modifiche al modello esplicite, versionabili e revisionabili prima del deploy.
Non necessariamente. Nei monoliti modulari, il più comune è una banca condivisa con una chiara organizzazione per modulo.
Nei microservizi, ogni servizio può avere la propria banca quando ha senso dal punto di vista architettonico.
Sì. Lino supporta l'evoluzione del database con migrations e pratiche di deploy orientate agli script, combinando questo flusso con funzionalità di build e versioning quando i servizi vengono preparati per una release.
Sì. Lino può generare applicazioni web integrate nel backend per accelerare la consegna di sistemi completi.
Sì. Lino può generare Blazor Web Apps integrate, incluse risorse frontend connesse alle APIs backend, localizzazione e autenticazione quando queste features sono selezionate.
Sì. L'architettura Lino non impedisce l'utilizzo di React, Angular, Vue o qualsiasi altro frontend che consumi le API del progetto.
Sì. Il frontend può funzionare con login, rinnovo dei token e consumo di API protette da JWT e policy di autorizzazione.
Sì. Lino aiuta a strutturare pagine, componenti e funzionalità in modo più standardizzato, riducendo le decisioni ripetitive sul frontend.
Sì. I progetti generati da Lino possono includere logging strutturato, integrazione con la dashboard Aspire, traces, metriche e diagnostica operativa per supportare debug e analisi in produzione.
Sì. Lino supporta scenari di cache con Microsoft HybridCache e cache distribuita con Redis quando questa opzione è abilitata, migliorando la coerenza tra più istanze.
Sì. Standardizzando la struttura, i log, l'autenticazione, le API e l'infrastruttura, Lino facilita l'indagine dei problemi e la manutenzione operativa.
La soluzione generata può incorporare health checks, metriche, traces, logs e visibilità delle risorse tramite Aspire, seguendo le pratiche dell'ecosistema .NET usate dall'architettura scelta.
Sì. Lino può generare immagini Docker di servizi e web applications tramite il flusso di build, aiutando a pacchettizzare artefatti per registries e ambienti containerizzati.
Sì. I progetti generati possono essere integrati con pipeline CI/CD per creazione, test, confezionamento, migrazioni e distribuzione automatizzata.
Build e versioning possono seguire pratiche orientate a SemVer, con supporto di Lino per pacchettizzare servizi e web applications selezionati come immagini Docker versionate per la release.
Sì. Il progetto può essere pubblicato nel cloud, in ambienti containerizzati o nella propria infrastruttura, a seconda della strategia operativa del team.
Sì. Lino accelera la configurazione tecnica per la distribuzione in produzione con Docker, build standardizzata, persistenza, autenticazione e integrazione con le pipeline.
Lino include supporto multi-tenant tramite lino feature tenant add o lino features tenant add. La struttura generata può risolvere tenants per dominio o slug, applicare permessi per contesto e proteggere dati legati al tenant.
Le shadow entities sono copie locali dei dati minimi che un modulo richiede da un altro contesto. Il comando lino shadow new crea la struttura, e il relativo integration event handler deve essere generato separatamente con lino event-handler new.
Sì. La roadmap mostra evoluzione continua e indica anche molte capacità già concluse, come autenticazione JWT, Blazor Web Apps, Hangfire, RabbitMQ/MassTransit, migrations, Docker build, HybridCache, risorse multi-lingua, smart merge, secrets e rate limiting.
La roadmap conclusa include varie capacità centrali: generazione di progetti .NET/Aspire, servizi modulari, Minimal APIs, supporto a SQL Server e PostgreSQL, background jobs, messaggistica, sicurezza JWT, Blazor Web Apps, Docker build/versioning, user secrets, rate limiting, tenant e shadow entities.
Generazione di codice, integrazioni, esperienza di sviluppo, workflow di deploy, osservabilità, security hardening e copertura dei templates continuano a evolvere mentre il prodotto cresce.
Puoi seguire le modifiche nella pagina della roadmap, nella documentazione e attraverso i canali ufficiali del prodotto. Preferisci lo stato della roadmap quando devi distinguere funzionalità concluse da miglioramenti pianificati.