开发路线图

跟踪我们的进展和即将推出的功能。我们不断发展,以为您提供最佳的开发体验。

与 .NET 10 的兼容性和生成支持

计划中

该更新将在 Microsoft 官方发布 .NET 10 后,提供对基于 .NET 10 的项目生成的全面支持。

目前,Lino 基于 .NET 9 生成项目,充分利用平台提供的所有功能,包括性能优化、C# 13 的高级特性以及与 ASP.NET Core 的现代集成。

该未来版本的目标是,在 .NET 10 发布时立即提供支持,包括更新的模板、适当的 Target Framework 配置,以及为语言和运行时的新特性准备好的 scaffolding。

增强
2025年11月 v1.0.0-rc

自动化测试生成

计划中

支持两个主要级别的自动化测试生成:

单元测试:
为各个类和方法创建测试,重点关注业务逻辑。

集成测试:
创建测试以验证组件之间的集成,模拟与数据库和外部服务的交互。

功能
2025年10月 v1.0.0-preview

生成 .http 文件

计划中

实现自动生成 .http 文件,以便在开发环境中更方便地测试和记录 REST 接口。

功能
2025年9月 v1.0.0-preview

通过策略进行访问控制

完成

基于权限(PBAC)的访问控制系统,使用 ASP.NET Core 的策略(Policies)。
权限由 Source Generators 自动生成,并在 .NET 中注册为策略。
使用这些权限的每个服务都会触发事件,从而自动更新系统的权限数据库。

主要特点:
_ 通过 Source Generators 自动生成权限
_ 在 ASP.NET Core 中自动注册策略
_ 通过事件/消息系统动态更新权限数据库
_ 支持混合 RBAC,将角色的简便性与权限的粒度结合

优势:
_ 极致性能与可扩展性
_ 自动化管理,简化维护
_ 适用于不同的安全场景

功能
2025年8月 v1.0.0-beta

支持文件上传

完成

在使用 Minimal APIs 创建的端点中实现对 IFormFile 类型的原生支持。此功能将实现带有文件上传功能的路由自动生成,包括:

_ 支持通过 multipart/form-data 上传的端点定义;
_ 对 MIME 类型和最大文件大小的自动验证;
_ 支持本地存储,并可集成 Azure Blob StorageAWS S3 等云服务;

非常适用于需要安全且高效文件上传的应用程序,例如图片、文档和各类媒体。

功能
2025年8月 v1.0.0-beta

智能合并文件

完成

从此版本起,Lino CLI 将执行生成文件的智能自动合并。 之前,Lino 创建的文件会直接替换现有文件,可能会覆盖开发者手动修改的内容。

现在,采用新的三方合并(3-way merge)策略(原始生成文件、用户编辑版本和新生成文件),Lino 能够保留个性化定制,同时应用模板的结构性更新。

该方法的优点:
_ 避免手动代码的意外覆盖。
_ 促进基于模板项目的持续演进。
_ 减少更新过程中的手动冲突。
_ 改善本地定制与框架演进的集成。

增强
2025年7月 v1.0.0-beta

使用 Source Generators 注册 Minimal API

完成

现在,通过 Lino CLI 生成的项目可以使用基于 Source GeneratorsTolitech.Presentation.API.Generators 库自动注册 Minimal APIs

这种方式替代了以下操作:
_ 使用 MapGetMapPost 等手动注册每个端点
_ 使用 Reflection 扫描和映射路由——这在性能上代价较高

通过使用 Source Generators,路由映射在编译时完成,生成优化、清晰且可追踪的代码。

主要优势:
_ 消除手动注册路由时的冗长和重复
_ 移除 Reflection 的使用,降低 CPU 和内存消耗
_ 改善代码结构与职责分离
_ 编译时验证,生成安全的自动路由
_ 有利于项目的维护和可扩展性

性能
2025年6月 v1.0.0-beta

使用源生成器的依赖注入

完成

我们现在使用 Tolitech.DependencyInjection.Generators 库,它取代了 Tolitech.DependencyInjection.Extensions 中基于 Reflection 的方法。

该新库利用 .NET 的 Source Generators 功能,在编译时自动生成依赖注册代码。

这带来了多种优势:
_ 消除运行时的 Reflection,提高应用性能。
_ 更加可预测和可追踪的代码生成。
_ 更安全的编译,提前发现错误。
_ 与 .NET 的构建流水线原生集成。

性能
2025年6月 v1.0.0-beta

采用中央包管理器

完成

我们开始使用 Central Package Manager(CPM),这是一种在具有多个项目的解决方案中管理 NuGet 包的现代方法。 借助它,所有包的版本都集中定义在 Directory.Packages.props 文件中,消除了不一致性,并简化了安全且协调的更新流程。 这减少了因项目间版本差异而引发的错误,提高了可追踪性,并简化了大规模依赖项更新的流程。

增强
2025年5月 v1.0.0-beta

支持新的 .SLNX 格式

完成

Lino 现在生成的新解决方案格式为 .slnx,这是传统 .sln 的现代演进。
基于 XML,.slnx 被采纳是因为它对人类和工具都更具可读性,降低了与外部系统和 CI/CD 流水线集成的复杂性。

此外,它更清晰的结构显著改善了版本控制——更改变得更可预测且更易于审查。
这一变化与 .NET 生态系统的未来方向保持一致,促进了项目开发中的更强互操作性、可扩展性和自动化。

增强
2025年5月 v1.0.0-beta

在 Community 版本中支持 .NET / Aspire 生成

完成

Community 订阅现在支持基于 .NET 9Aspire 9.2.1 的项目生成,允许用户免费并且技术性地探索平台的功能。

此版本包括:
_ 使用自动化 scaffolding 创建服务和实体;
_ 选择数据库并进行完整的初始配置;
_ 直到 EF Core Migrations 阶段的功能生成。

尽管像微服务和模块化单体等高级功能仅限于付费计划,但此版本为评估生成的架构、代码质量和与现代 .NET 生态系统的集成提供了坚实的基础。

增强
2025年4月 v1.0.0-beta

集成到 CLI 的数据库迁移命令

完成

CLI 现提供命令 lino database migrations add,以便于为项目中的任何服务或模块创建迁移。

此功能自动生成与构建版本相关联的迁移脚本,并允许一致地记录更改。

主要优势:
_ 通过简单直接的命令快速为服务或模块创建迁移。
_ 自动生成与项目版本控制兼容的 .sql 脚本。
_ 即使在分布式架构中,也便于数据库版本控制。
_ 以安全且可审计的方式标准化并记录数据库结构更改。
_ 与应用程序的构建和部署流程自然集成。

功能
2025年3月 v1.0.0-beta

使用 Docker 进行版本和构建管理

完成

新的版本管理功能支持列出已有版本,并为由工具生成的服务和 Web 应用执行版本号的提升(bump),遵循 SemVer(语义化版本控制)规范。这增强了发布流程的可追溯性、标准化和控制力。

通过 version 命令,可以轻松设置和更新每个服务或应用的版本号,便于审计并将最佳实践融入开发流程中。

build 命令也已优化,可生成带有指定版本标签的 Docker 镜像,从而简化打包流程,并为发布做好准备。

这些改进提升了版本管理的一致性和可预测性,为开发和运维团队带来更高的透明度。

增强
2025年2月 v1.0.0-beta

在 Commands 和 Queries 中选择属性

完成

自定义在生成 Command(Post、Put、Patch)和 Query(Get)类型的构件时将考虑哪些属性。

此功能提供:
_ 在实体 scaffolding 过程中使用 CLI 交互式界面选择属性;
_ 自动生成仅包含选定字段的 input/output 对象;
_ 完全支持在 REST API 中自定义 payload,提高对传输数据的灵活性与控制力;
_ 与验证逻辑和生成的数据契约集成,遵循必要性和一致性规则。

此改进旨在提供更高粒度的构件建模,允许开发者精准控制通过 CLI 生成架构所暴露、持久化或查询的内容。

增强
2025年1月 v1.0.0-beta

CLI 中的自动备份机制

完成

已在 Lino CLI 中实现了自动的文件版本控制和备份机制,旨在确保在文件生成和覆盖过程中实现安全性和可追溯性。

所有生成的文件都会保存在 /.lino/files/.../received/ 文件夹中,确保每个文件都按时间顺序组织,并且便于查找。

被替换的文件将保留在 /.lino/files/.../replaced/ 文件夹中,便于在需要时恢复到之前的版本。该备份结构提供了更高的控制性和安全性,尤其适用于协作和自动化开发环境中对生成文件的全面审计。

增强
2025年1月 v1.0.0-beta

集成的 JWT 认证与授权

完成

为前端和后端项目完整实现基于 JWT(JSON Web Tokens) 的身份验证和授权,并通过 ASP.NET Core 自定义的 Authorization Policies 实现细粒度权限控制。

重点内容:
_ 使用 JWT 的安全登录和验证。
_ 基于自定义策略(Claims 和 Roles)的授权。
_ 自动集成生成的 API 和前端(Blazor)。
_ 基于用户权限保护路由和组件。

优势:
_ 为现代应用提供强大的安全保障。
_ 按配置文件和域标准化访问模型。
_ 应用层间的安全集成体验。
_ 易于根据企业场景进行扩展或调整。

安全
2024年12月 v1.0.0-alpha

支持生成集成前端(Blazor Web Apps)

完成

现在可以向生成的项目中添加一个或多个前端,初步支持Blazor Web Apps — 包括 Server 和 WebAssembly 模型。

这些前端会自动与工具生成的 API 集成,允许创建完整的 CRUD 页面,直接调用后端端点并持久化到数据库。

亮点:
_ 基于领域实体生成 UI。
_ 与生成的 API 原生通信。
_ 端到端功能:前端、后端和数据库协同工作。
_ 同一项目中支持多个前端(例如:管理、门户、公共)。

优势:
_ 界面开发更快捷。
_ 减少返工和手动集成。
_ 统一的导航、样式和数据访问标准。
_ 自动生成 CRUD 页面,提高生产力。

功能
2024年11月 v1.0.0-alpha

支持 Transactional Outbox 标准

完成

我们实现了Transactional Outbox模式,以确保集成事件发送的可靠性。 应用程序事务期间不直接发布事件,而是在同一数据库事务内注册到特定表中

随后,background job读取该 outbox 并执行事件的实际触发。

此方法的优势:
_ 保证数据库变更与事件发布的一致性。
_ 避免中间故障导致消息丢失。
_ 允许控制已发布事件的重发和审计。
_ 符合事件驱动架构和微服务的最佳实践。

功能
2024年10月 v1.0.0-alpha

使用 Hangfire 支持后台作业

完成

已添加选项,可在生成的服务中包含Background Jobs —— 无论是简单还是模块化服务 —— 使用 Hangfire 库实现。

由此,项目原生支持后台任务的调度和执行,包括:
_ 定时(cron)、计划或立即执行。
_ 通过集成控制面板进行监控。
_ 安全地持久化和重新处理任务。

该机制还可与 Transactional Outbox Pattern 结合使用,即使在部分故障或分布式场景下,也能可靠地触发集成事件。

主要优势:
_ 自动化重复且耗时的任务,不阻塞主流程。
_ 高可靠性和后台任务的持久性。
_ 可与 Outbox 模式快速集成,确保事件可靠性。
_ 可轻松为每个服务配置和自定义任务。
_ 内置仪表板用于查看和控制执行情况。

功能
2024年9月 v1.0.0-alpha

使用 MassTransit 和 RabbitMQ 的消息传递

完成

新增了使用 MassTransit 的抽象和高级功能配置 异步消息传递 支持 RabbitMQ 的功能。

这样,生成的服务可以通过分布式事件和命令进行解耦且具弹性的通信。

集成亮点:
_ 使用 RabbitMQ 的自动传输配置。
_ 通过 MassTransit 和原生依赖注入发布和监听事件。
_ 兼容 Transactional Outbox 模式以提高可靠性。

优势:
_ 基于事件的通信实现高扩展性。
_ 生产者和消费者解耦。
_ 更高的容错能力和自动重处理。
_ 异步业务流程的维护和扩展更加简便。

功能
2024年9月 v1.0.0-alpha

使用 Unit of Work 的高级事务控制

完成

已实现了一个强大的 Unit of Work(工作单元)机制,具备完整的事务控制、领域事件管理、集成事件发布(采用 Outbox 模式)、自动回滚,以及基于操作成功或失败的 Result 模式支持提交或回滚。

亮点:
_ 支持显式创建事务,并可控制隔离级别。
_ 与数据持久化同步发布 领域事件(Domain Events)
_ 通过 Outbox 模式解耦发布 集成事件(Integration Events)
_ 支持约束验证的异常处理和自动回滚机制。
_ 根据操作 Result 结果决定是否提交。
_ 提供结构化日志记录:包括事件、事务与失败情况。

优势:
_ 保证数据库写入操作与事件发布之间的事务一致性。
_ 灵活支持使用标准 SaveChanges 或完全掌控处理流程。
_ 有助于进行单元测试及故障追踪。
_ 明确划分领域逻辑与基础设施,实现对 MediatR 的支持。

增强
2024年8月 v1.0.0-alpha

每个服务一个数据库,支持 SQL Server 和 PostgreSQL

完成

现在可以为每个生成的服务单独定义所使用的数据库 —— 原生支持 SQL ServerPostgreSQL

这种方法允许每个服务拥有专属数据库,确保完全隔离,有助于实施真实微服务架构的最佳实践。

对于 模块化服务,应用程序仍然为每个服务使用一个数据库,并通过 schema 将各模块分离,从而保持良好的组织和内聚性。

主要优势:
_ 服务间数据隔离,提高安全性和职责明确性。
_ 可逐步采用具有独立数据库的微服务架构。
_ 模块化服务中的 schema 分离便于维护和理解业务领域。
_ 每个服务可灵活选择最合适的数据库系统。
_ 便于测试、独立部署和横向扩展。

功能
2024年7月 v1.0.0-alpha

支持创建简单和模块化的服务

完成

Lino CLI 现在允许开发人员在生成项目时选择创建 简单服务(传统方式)或 模块化服务,并且可以根据解决方案的需要自由组合两者。

这种方法直接支持不同的架构风格:
简单服务:非常适合构建基于微服务的解决方案,或以直接和隔离的方式构建传统的单体应用程序。
模块化服务:将应用程序域组织为 Bounded Contexts,便于采用具有职责清晰分离和组件更好内聚性的 模块化单体

您可以根据应用场景,添加任意数量的服务 — 简单服务、模块化服务或两者结合。

此方法的优点:
_ 在架构建模方面拥有更高灵活性。
_ 可轻松实现从单体到微服务的渐进式扩展。
_ 按领域或上下文清晰划分职责。
_ 更好的代码组织和与现代架构最佳实践的一致性。
_ 降低耦合度,提高可维护性。

您可以使用微服务进行开发,或者采用模块化单体架构 — 选择最适合您应用程序的理想路径。

功能
2024年6月 v1.0.0-alpha

使用 Microsoft.Extensions.Caching.Hybrid 的混合缓存

完成

已添加对使用 Microsoft.Extensions.Caching.Hybrid 库的混合缓存的原生支持。

该实现结合了内存缓存(MemoryCache)和分布式缓存(DistributedCache),提供两种方式的优势。

此方法可在处理频繁请求时提供极快的响应速度,同时在分布式环境中保持同步性和可扩展性。

混合策略的优势:
_ 从本地内存中即时读取,提供高性能。
_ 通过分布式缓存在实例之间实现数据持久化和共享。
_ 减少对数据库和外部 API 的请求。
_ 在具有多个副本的应用中实现更好的水平扩展性。
_ 在两个缓存层之间进行智能同步。

非常适用于既要求性能和一致性,又不牺牲架构灵活性的场景。

功能
2024年5月 v1.0.0-alpha

生成项目中的多语言支持

完成

Lino CLI 现在生成具有多语言集成支持的项目,包括针对以下文化的自动翻译:
en, pt-BR, es, fr, it, de, ja, ko, zh-Hansru

资源文件(resx)根据主语言自动生成,内容自动翻译,准备好立即在全球应用中使用。

多语言支持的优点:
_ 方便创建面向不同地区和文化的应用。
_ 缩短国际化所需时间。
_ 与 .NET 本地化系统的原生集成。
_ 改善多语言应用中的最终用户体验。
_ 允许快速扩展面向全球市场的解决方案。

功能
2024年4月 v1.0.0-alpha

高性能日志记录

完成

Lino CLI 生成的代码现在使用LoggerMessage,以更高效且性能更优的方式记录日志。

与传统的ILogger扩展方法相比,后者会产生值类型的装箱(boxing)并影响运行时内存分配,LoggerMessage模式为每条日志消息创建了强类型且静态的Actions

该方法的优点:
_ 显著减少内存分配。
_ 避免了对诸如intGuidDateTime等值类型的装箱
_ 在高日志量场景中提供更好的性能。
_ 日志消息的标准化和集中管理。
_ 提升审计、诊断和监控的清晰度。

此改进在性能和可追踪性至关重要的API和后端服务中尤为重要。

功能
2024年4月 v1.0.0-alpha

可选支持 Strongly Typed Id

完成

Lino CLI 现在提供对 Strongly Typed Ids 的可选支持,允许使用强类型的特定类型来表示实体标识符,而不是使用通用类型如 Guidint

该功能有助于避免常见错误,例如错误地将一个实体的标识符分配给另一个实体,并使代码更具表现力,更贴合应用的领域模型。

使用 Strongly Typed Ids 的优势:
_ 编译时更高的类型安全性。
_ 防止在不同实体之间意外赋值。
_ 提高代码的可读性和意图表达。
_ 更易于在领域中跟踪和调试标识符。
_ 与 EF Core、JSON 序列化和验证集成。

该功能是可选的,可在生成项目时启用。

功能
2024年3月 v1.0.0-alpha

集成到项目中的静态代码分析

完成

生成的项目现在可以配置为支持静态代码分析,使用.NET生态系统的主要分析器。 这些工具直接集成到构建过程中,帮助识别格式、样式、架构问题以及开发早期的潜在逻辑错误。

优势:
_ 从一开始促进代码的一致性和标准化。
_ 及早发现错误和不良实践。
_ 促进代码审查和技术入职。
_ 提高代码库的质量和可维护性。
_ 避免常见错误,提升对.NET最佳实践的遵循。

配置可以按项目自定义,允许在所需的严格程度上有更大的灵活性。

功能
2024年2月 v1.0.0-alpha

使用 Result Pattern 进行标准化

完成

创建了Tolitech.Results库,完整且流畅地实现了.NET中的Result Pattern

该库将操作结果(无论成功还是失败)封装为结构化对象,包含HTTP状态、消息、错误、标题、详细信息和可选数据(支持Result<T>)。

使用Result Pattern的好处:
_ 在整个应用程序中标准化操作返回。
_ 减少作为流程控制的异常。
_ 便于操作的组合和链式调用。
_ 更好地支持层与服务之间的通信。
_ 与HTTP API、验证和错误消息的流畅集成。
_ 更好的调试体验和结构化日志记录。

此外,扩展如Tolitech.Results.HttpTolitech.Results.Guards扩展了与REST API和防御性验证的集成。

功能
2024年1月 v1.0.0-alpha
发生了未处理的错误。 重新加载 🗙