了解 Lino 如何通过 Clean Architecture、DDD、CQRS、JWT、multi-tenancy、shadow entities、RabbitMQ、Hangfire、Blazor、cache、observability 和 deploy 加速 .NET 项目。
Lino 是一个用于在 .NET 中生成现代应用程序的 CLI。
它自动化架构、模块、API、身份验证、前端和基础设施,重点关注 Clean Architecture、DDD 和 CQRS。
Lino 用于减少启动和发展 .NET 应用程序的重复工作。
团队不是手动组装解决方案、层、端点、身份验证和初始部署,而是从现成的基础开始,专注于业务规则。
Lino 是 .NET 的代码生成器,而不是封闭框架。
生成后,项目属于团队,可以进行修改,无需强制依赖工具。
Lino 的主要焦点是基于模板和规则的确定性生成。
这有助于保持可预测性、架构一致性,并比依赖人工智能的流程减少噪音。
Lino 由 Eduardo Tolino 创建,旨在提高 .NET 中的生产力并标准化现代应用程序的架构。
是的。
生成的项目使用企业软件中常见的 patterns,例如 Clean Architecture、CQRS、DDD、JWT、Docker、observability 以及 pipeline 集成。生成的基础仍应针对每个生产环境进行审查、测试和配置。
Lino 的主要区别是从第一个命令开始就可以加速创建具有一致架构基础的 .NET 应用程序。
它将代码生成、模块化组织、API、前端、身份验证、事件和基础设施整合到一个流程中。
要使用 Lino,您需要安装 .NET SDK、Git、Entity Framework CLI 和 Docker。
dotnet tool install --global Tolitech.Lino
安装后,您可以使用 lino --version 检查版本。
lino project new --name MyProject
此命令创建包含层、模块和基本配置的初始项目结构。
Lino 可以根据所选 features 生成项目结构、services、modules、entities、value objects、enumerations、commands、queries、APIs、pages、events、event handlers、migrations、secrets 配置、background jobs 和 Docker images。
是的。生成的代码完全是您的,不依赖于工具继续工作。
是的。当你想要速度而又不想放弃一个干净的基础以便以后发展时,Lino 是 MVP 的一个不错的选择。
是的。Lino 可帮助需要有组织的 backend、authentication、APIs、web frontend、标准化基础设施、tenant 隔离、按 context 授权、secrets 管理和 rate limiting 的 SaaS 项目。
是的。 Lino 专为 .NET 中的业务应用程序而设计,这些应用程序需要层分离、定义明确的模块、API、事件以及与真实基础设施的集成。
两种情况都是有效的。对于大多数产品来说,从模块化整体开始通常更简单且更具成本效益。
当您需要交付具有一致架构、快速设置和增长空间而无需重写基础的 .NET 项目时,Lino 是有意义的。
如果项目非常小、一次性或不需要模块化架构,Lino 的增益可能会较低。
是的。这样做的好处是消除了后端、前端、身份验证、端点、事件、持久性和初始基础设施的数小时或数天的重复设置。
构建 Web 产品、SaaS、内部系统、平台 B2B 和业务服务的团队 .NET 往往会从 Lino 中受益最多。
Lino 使用 Clean Architecture,将系统分为域、应用程序、基础设施和表示等层。
是的。 Lino 鼓励使用 Entities、Value Objects、枚举、Domain Events 和 bounded contexts 进行基于领域的建模。
是的。 Commands 和 Queries 是分开的,以便于应用程序的组织、维护和可扩展性。
是的。模块化整体架构是 Lino 最自然的场景之一,特别是当团队希望降低运营成本并具有良好的内部隔离时。
是的。 Lino 可用于创建模块化单体、独立服务和基于微服务的架构。
是的。 Lino 旨在加强职责分离、松散耦合、模块化和可持续的代码演化。
Entities 表示域内具有自己身份的对象,例如用户、订单或产品。
Value Objects 表示没有自己身份的不可变域概念,例如金钱、地址或电子邮件。
是的。 Lino 支持 Domain Events 表示域内的相关事件并保持系统各部分之间的低耦合。
该域可以分为模块或 bounded contexts 以反映不同的业务领域,例如目录、销售、库存、身份或计费。
是的。您可以从一些模块和更简单的规则开始,并随着产品的成熟而发展建模。
是的。 Lino 可以根据应用程序命令和查询自动生成端点。
是的。生成的 API 使用 .NET 的 Minimal APIs,直接与应用层集成。
生成的项目通过 OpenAPI 和 Swagger 与 API 文档兼容,这有助于团队之间的合同检查、测试和集成。
版本控制可以遵循已知的 REST 标准,并通过端点、合同和构建与组织相结合。
是的。 Lino 架构允许您通过基础设施层集成外部 API、Webhook、SDK 和第三方服务。
生成的项目通过 OpenAPI/Swagger 暴露 API contracts,实际的 endpoint 测试可根据所选 template 和 workflow 由 HTTP 文件或类似 client tooling 支持。
是的。 Lino支持前端和后端项目的身份验证和授权的生成。
是的。 Lino 支持基于 JWT 对 API 和 Web 应用程序进行身份验证,重点关注安全性以及与 ASP.NET Core 的本机集成。
是的。 Lino 的安全模型包括更精细的访问控制,包括角色、声明和 ASP.NET Core 的 Authorization Policies。
是的。前端可以集成到登录、令牌更新以及对页面和 API 的受保护访问的身份验证流程中。
Lino 提供 secret 命令,例如 lino secret list、lino secret set、lino secret remove 和 lino secret clear,以便将本地敏感值保留在 versioned files 之外。生成的 secrets 也可以建模为 Aspire Parameters,用于 publish 和 deploy flows。
是的。生成的 APIs 可以一开始就带有面向 public traffic、authenticated users、API key routes 和 temporary token flows 的 rate limiting policies,从而在生产精调前降低暴露面。
Domain Events 表示域内的内部事件。 Integration Events 用于以解耦的方式通信模块、服务或外部系统。
是的。当架构需要此模型时,Lino 支持应用程序各部分之间的通信事件以及服务之间的集成事件。
是的。启用 asynchronous messaging 时,Lino 会将 RabbitMQ 配置为 broker,使 services 和 modules 能够以解耦且 resilient 的方式交换消息。
是的。Lino 在 messaging 场景中使用 MassTransit,通过原生 dependency injection 模型简化 distributed events 的 publishing、consuming 和 registration。
是的。Lino 支持使用 Hangfire 的 background jobs,用于 scheduled tasks、asynchronous processing、recurring operations,并通过 Hangfire dashboard 提供 operational visibility。
使用 domain events 表示 domain 内部变化,使用 integration events 进行 modules 或 services 间通信,使用 queues 进行 asynchronous processing,使用 background jobs 处理 scheduled、recurring 或 long-running work。为实现可靠 publishing,Lino 场景使用 Outbox Pattern。
目前Lino支持与Entity Framework Core兼容的数据库,例如SQL Server和PostgreSQL。
是的。数据持久性基于 Entity Framework Core,用于整个项目生命周期中的建模、迁移和数据库演化。
Migrations 由 Entity Framework Core 管理,并可通过 lino database migrations add 创建,使模型变更在 deploy 前保持显式、可 version、可 review。
不一定。在模块化单体中,最常见的是共享数据库,并按模块进行清晰组织。
在微服务中,当架构上有意义时,每个服务可以拥有自己的数据库。
是的。Lino 支持通过 migrations 和 script-oriented deploy practices 进行 database evolution,并在 services 准备 release 时将该 flow 与 build 和 versioning 功能结合。
是的。 Lino 可以生成集成到后端的 Web 应用程序,以加速完整系统的交付。
是的。选择相应 features 时,Lino 可以生成集成的 Blazor Web Apps,包括连接到 backend APIs 的 frontend resources、localization 和 authentication。
是的。 Lino 架构并不阻止使用 React、Angular、Vue 或使用项目 API 的任何其他前端。
是的。前端可以处理受 JWT 和授权策略保护的 API 的登录、令牌更新和使用。
是的。 Lino 有助于以更标准化的方式构建页面、组件和功能,减少前端的重复决策。
是的。Lino 生成的项目可以包含 structured logging、Aspire dashboard 集成、traces、metrics 和 operational diagnostics,以支持 production 中的 debugging 和 analysis。
是的。启用该选项时,Lino 支持 Microsoft HybridCache 以及 Redis-backed distributed cache 场景,从而提升多个 instances 之间的一致性。
是的。通过标准化结构、日志、身份验证、API 和基础设施,Lino 有助于问题调查和操作维护。
生成的 solution 可以结合 health checks、metrics、traces、logs 以及通过 Aspire 提供的 resource visibility,遵循所选 architecture 使用的 .NET ecosystem practices。
是的。Lino 可以通过 build flow 生成 services 和 web applications 的 Docker images,帮助为 registries 和 containerized environments 打包 artifacts。
是的。生成的项目可以与 CI/CD 管道集成,以进行构建、测试、打包、迁移和自动化部署。
Build 和 versioning 可以遵循 SemVer-oriented practices,Lino 支持将所选 services 和 web applications 打包为用于 release 的 versioned Docker images。
是的。该项目可以在云、容器化环境或自己的基础设施中发布,具体取决于团队的运营策略。
是的。 Lino 通过 Docker、标准化构建、持久性、身份验证以及与管道的集成,加速生产部署的技术设置。
Lino 通过 lino feature tenant add 或 lino features tenant add 提供 multi-tenant support。生成的结构可以按 domain 或 slug 解析 tenants,按 context 应用 permissions,并保护 tenant-scoped data。
Shadow entities 是一个 module 从另一个 context 所需最小数据的本地副本。lino shadow new 命令会创建结构,对应的 integration event handler 应使用 lino event-handler new 单独生成。
是的。Roadmap 显示持续演进,也标记了许多已完成的 capabilities,例如 JWT authentication、Blazor Web Apps、Hangfire、RabbitMQ/MassTransit、migrations、Docker build、HybridCache、多语言 resources、smart merge、secrets 和 rate limiting。
已完成的 roadmap 包括多项核心 capabilities:.NET/Aspire project generation、modular services、Minimal APIs、SQL Server 和 PostgreSQL support、background jobs、messaging、JWT security、Blazor Web Apps、Docker build/versioning、user secrets、rate limiting、tenant support 和 shadow entities。
Code generation、integrations、developer experience、deploy workflows、observability、security hardening 和 template coverage 会随着产品成长持续演进。
你可以通过 roadmap 页面、文档和产品官方渠道关注变化。当需要区分已完成 features 与计划中的 improvements 时,请优先参考 roadmap status。