10.0 版本是一个全新的版本,是一个新起点。它不仅包含了大量的新特性和改进,还对底层架构进行了重构,以提升性能和可维护性。
为了提供一个开箱即用的开发体验,对模板进行了重构。最主要的特点是简化和规范,尽可能移除各种特定的开发模式和习惯,采用更通用的方式来满足大多数开发场景。
Ater.Web.Core和Ater.Web.Convention合并成Perigon.AspNetCore,并移除非必要的功能。Ater.Web.Extensions修改成Perigon.AspNetCore.ToolKit,作为可选组件包提供,不再作为默认依赖。之前会区分 CommandDbContext和QueryDbContext,在开发时,会增加心智负担,且当不需要读写分离,或读写分离可能是不同的数据库时,它并不能很好地支持。
现在,默认只提供一个DefaultDbContext,作为应用的主要数据访问上下文,简化开发。
如果想实现只读DbContext,可以通过继承抽象类ReadonlyDbContext实现。
ManagerBase经过重构,更轻量,更灵活。现在作为抽象类,不管是否需要数据库操作,都可以继承它。
ManagerBase<TDbContext, TEntity>内部方法进行了简化和优化。现在提供的方法可查看Manager业务处理
默认模板已经支持多语言本地化,生成的控制器都会默认注入Localizer,以便进行本地化字符串处理。
此外,源代码生成器能够根据资源文件自动生成常量定义,无需手动定义,可直接在代码中使用。
随着Aspire自身的功能完善和体现增强,模板已经将Aspire作为核心依赖,并通过探索实践,让它在开发过程中发挥更多的作用。
全面使用Aspire集成包,缓存/数据库默认具备可观测能力。
针对不同情况,提供文档示例,方便开发者快速上手。
现在提供中间件的方式提供统一的异常处理,你可查看GlobalExceptionMiddleware,并在其中添加自己的逻辑。
现在生成的控制器接口将更符合 Restful 风格。
| 接口 | 过去 | 现在 |
|---|---|---|
| Filter | 使用POST | 使用GET |
| Add | 返回200 | 返回201 |
| Update | - | 返回200,并携带更新后实体内容 |
| Delete | - | 返回204 |
现在对于简单的添加/更新/删除操作,默认不再先查询数据,而是直接执行相关的SQL操作,根据返回结果来判断是否存在相关的数据。
Note
对于更复杂的逻辑,仍然需要先查询,比如一些权限判断,前置条件等。
主要影响是Microsoft.OpenApi包,以及OpenApi规范版本升级到3.1.0。