👨‍💻 niltor    📆 2026-09-03 17:04

10.0 主要变更说明

10.0 版本是一个全新的版本,是一个新起点。它不仅包含了大量的新特性和改进,还对底层架构进行了重构,以提升性能和可维护性。

解决方案模板

为了提供一个开箱即用的开发体验,对模板进行了重构。最主要的特点是简化和规范,尽可能移除各种特定的开发模式和习惯,采用更通用的方式来满足大多数开发场景。

简化框架基础包

  • 将原Ater.Web.Core和Ater.Web.Convention合并成Perigon.AspNetCore,并移除非必要的功能。
  • 将原Ater.Web.Extensions调整为Perigon.AspNetCore.Toolkit,用于承载邮件、对象存储、Excel等工具能力;具体功能是否启用由配置和业务代码决定。

简化DbContext

之前会区分CommandDbContext和QueryDbContext,在开发时,会增加心智负担,且当不需要读写分离,或读写分离可能是不同的数据库时,它并不能很好地支持。

现在,默认只提供一个DefaultDbContext,作为应用的主要数据访问上下文,简化开发。

如果想实现只读DbContext,可以通过继承抽象类ReadonlyDbContext实现。

重构 ManagerBase

ManagerBase经过重构,更轻量,更灵活。现在作为抽象类,不管是否需要数据库操作,都可以继承它。

ManagerBase<TDbContext, TEntity>内部方法进行了简化和优化。现在提供的方法可查看 Manager 业务处理最佳实践文档。

本地化

默认模板已经支持多语言本地化,生成的控制器都会默认注入Localizer,以便进行本地化字符串处理。

此外,源代码生成器能够根据资源文件自动生成常量定义,无需手动定义,可直接在代码中使用。

全面拥抱 Aspire

随着 Aspire 自身的功能完善和体验增强,模板已经将 Aspire 作为核心依赖,并通过实践让它在开发过程中发挥更多作用。

模板全面使用 Aspire 集成包,缓存和数据库默认具备可观测能力。

规范

统一的异常处理中间件

现在通过中间件提供统一的异常处理,你可查看GlobalExceptionMiddleware,并在其中添加自己的逻辑。

RESTful 风格的接口设计

现在生成的控制器接口将更符合 RESTful 风格。

接口 过去 现在
Filter 使用 POST 使用 GET
Add 返回 200 返回 201
Update - 返回 200,并携带更新后实体内容
Delete - 返回 204

性能

现在对于简单的添加、更新、删除操作,默认不再先查询数据,而是直接执行相关 SQL 操作,根据返回结果来判断是否存在相关的数据。

Note

对于更复杂的逻辑,仍然需要先查询,比如权限判断、前置条件检查等。

其他

Hybrid Cache

模板支持基于 HybridCache 的缓存使用方式。

Swashbuckle.AspNetCore 10.0

主要影响是Microsoft.OpenApi包,以及 OpenAPI 规范版本升级到 3.1.0。