Blogs
📆 2026-01-04 15:08

10.0 主要变更说明

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

解决方案模板

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

简化框架基础包

  • 将原Ater.Web.CoreAter.Web.Convention合并成Perigon.AspNetCore,并移除非必要的功能。
  • 将原Ater.Web.Extensions修改成Perigon.AspNetCore.ToolKit,作为可选组件包提供,不再作为默认依赖。

简化DbContext

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

现在,默认只提供一个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

Swashbuckle.AspNetCore 10.0

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