开发路线图

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

自动化测试生成

计划中

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

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

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

功能
2026

集成结构

完成

lino integration 命令集允许基于 明确定义的契约 创建和组织内部或外部集成。

lino integration new 命令会生成集成的基础结构,包括一个 契约 .csproj 项目,以及 实现 项目,例如 HttpInProcess,同时支持 模块化单体微服务

集成资源通过 lino integration resource new 创建,表示 由契约暴露的服务,并定义为接口。每个资源可以包含通过 lino integration operation new 创建的操作,这些操作会生成 RequestResponse 类。

最后,lino resource consume 命令将模块或服务连接到现有集成,自动完成消费过程和依赖配置。

功能
2025年12月 v1.0.0

Lino 已在抢先体验中可用

完成

Lino 现已在抢先体验版本中正式商用,这标志着测试阶段的结束以及其在实际开发环境中的采用开始。

版本 1.0.0 计划中的所有主要功能均已实现,使产品完整并准备好用于实际应用。

在此初始阶段,我们的重点是持续改进——性能调整、稳定性提升以及基于客户实际使用的微优化。

在此阶段获取 Lino 的用户将可获得完整的更新访问权限、专属技术支持,并有机会积极参与产品的演进,直到 1.0.0 正式版发布。

增强
2025年11月 v1.0.0-preview.1

与 .NET 10 的兼容性和原生生成

完成

Lino 现在生成的项目完全兼容 .NET 10,进一步巩固了与微软最新平台版本的集成。

从 .NET 9 迁移到 .NET 10 是确保生成的项目能够利用 .NET 生态系统最新改进的重要一步 —— 包括性能优化、编译时间提升、C# 13 的新功能,以及更出色的 ASP.NET Core 体验。

此更新确保所有生成的代码都为平台的未来做好准备,模板已更新,Target Framework 配置已调整,scaffolding 也已优化以符合新的语言和运行时标准。

增强
2025年11月 v1.0.0-beta

生成 .http 文件

完成

已实现 .http 文件的自动生成,旨在简化开发过程中对 REST 端点的测试和文档编写。

该功能允许将请求进行组织,并可直接在兼容工具中轻松执行,从而加快 API 验证并改善开发者体验。

主要优点:
_ 自动创建可直接用于端点测试的文件。
_ 便于文档编写和请求示例的共享。
_ 无需额外配置即可集成到开发流程中。
_ 加快不同环境下的 API 验证。

功能
2025年10月 v1.0.0-beta

带属性选择的集成事件

完成

现在可以根据实体属性的显式选择生成集成事件,这些属性将构成事件。 如果没有此功能,事件通常会暴露整个实体,或需要手动创建特定的 DTO,这会增加冗余代码并可能暴露不必要的数据。

使用新方法,开发者可以对包含的属性进行精细控制,从而生成更精简、安全,并符合现代消息传递最佳实践的事件。

主要优势:
_ 仅选择与事件相关的属性。
_ 减少开销并防止不必要的数据暴露。
_ 队列和主题中的消息更小,提高效率。
_ 更容易演进集成契约。

功能
2025年10月 v1.0.0-beta

使用 Source Generators 注册 FluentValidation

完成

现在可以使用 Tolitech.FluentValidation.Generators 库自动注册所有基于 FluentValidation 的验证器。

在传统模型中,验证器需要在运行时手动或通过反射进行发现和注册,这会产生重复代码并影响性能。 使用 Source Generators 后,这一过程将在编译时完成,从而生成更优化、安全且易于追踪的代码。

主要优势:
_ 消除手动注册验证器的过程。
_ 移除反射使用,提高性能并减少资源分配。
_ 编译时即可保证类型安全和验证。
_ 更易于项目维护和演进。

性能
2025年10月 v1.0.0-beta

使用 Source Generators 注册 EF Core 配置

完成

已添加对使用 Source Generators 自动检测并注册所有 Entity Framework Core 实体配置类(EntityTypeConfiguration)的支持。

目前,该过程依赖于反射或在 OnModelCreating 中手动注册,这增加了复杂性,影响性能,并使维护更加困难。 使用此新功能,映射将在编译时解析,从而消除了对反射的需求,并更高效地集中管理配置。

主要优势:
_ 替代 EF Core 中的反射使用。
_ 减少应用程序启动时间。
_ 确保所有配置正确应用。
_ 提高领域建模的健壮性和清晰度。

性能
2025年10月 v1.0.0-beta

通过策略进行访问控制

完成

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

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

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

功能
2025年9月 v1.0.0-beta

支持文件上传

完成

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

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

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

功能
2025年9月 v1.0.0-beta

智能合并文件

完成

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

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

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

增强
2025年9月 v1.0.0-beta

使用 Source Generators 注册 Minimal API

完成

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

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

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

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

性能
2025年8月 v1.0.0-beta

使用源生成器的依赖注入

完成

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

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

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

性能
2025年8月 v1.0.0-beta

采用中央包管理器

完成

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

增强
2025年8月 v1.0.0-beta

支持新的 .SLNX 格式

完成

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

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

增强
2025年7月 v1.0.0-beta

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

完成

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

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

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

增强
2025年7月 v1.0.0-beta

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

完成

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

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

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

功能
2025年7月 v1.0.0-beta

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

完成

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

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

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

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

增强
2025年6月 v1.0.0-beta

在 Commands 和 Queries 中选择属性

完成

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

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

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

增强
2025年6月 v1.0.0-beta

CLI 中的自动备份机制

完成

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

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

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

增强
2025年6月 v1.0.0-beta

集成的 JWT 认证与授权

完成

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

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

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

安全
2025年5月 v1.0.0-alpha

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

完成

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

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

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

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

功能
2025年5月 v1.0.0-alpha

支持 Transactional Outbox 标准

完成

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

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

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

功能
2025年4月 v1.0.0-alpha

使用 Hangfire 支持后台作业

完成

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

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

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

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

功能
2025年4月 v1.0.0-alpha

使用 MassTransit 和 RabbitMQ 的消息传递

完成

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

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

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

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

功能
2025年4月 v1.0.0-alpha

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

完成

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

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

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

增强
2025年3月 v1.0.0-alpha

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

完成

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

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

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

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

功能
2025年3月 v1.0.0-alpha

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

完成

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

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

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

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

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

功能
2025年3月 v1.0.0-alpha

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

完成

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

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

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

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

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

功能
2025年2月 v1.0.0-alpha

生成项目中的多语言支持

完成

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

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

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

功能
2025年2月 v1.0.0-alpha

高性能日志记录

完成

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

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

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

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

功能
2025年2月 v1.0.0-alpha

可选支持 Strongly Typed Id

完成

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

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

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

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

功能
2025年1月 v1.0.0-alpha

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

完成

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

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

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

功能
2025年1月 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和防御性验证的集成。

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