ABP Platform 10.0 RC 已发布

我们很高兴发布 ABP 10.0 RC 1。本文将介绍该版本的新特性和重要变更。

欢迎试用并反馈,帮助我们发布更稳定的 ABP v10.0 正式版!提前感谢你的支持。

开始体验 10.0 RC

你可以查看
https://abp.io/get-started 页面 了解如何开始使用 ABP。你可以下载 ABP Studio(如果你偏好更友好的桌面 GUI 应用,推荐)或使用 ABP CLI。

默认情况下,ABP Studio 使用稳定版来创建解决方案。因此,如果你想使用预览版创建解决方案,需要先创建一个解决方案,然后在 ABP Studio 的 UI 中将解决方案切换到预览版本:

迁移指南

本版本包含一些可能影响你应用的破坏性变更。如果你从 v9.3 或更早版本升级,请务必仔细阅读迁移指南:ABP Version 10.0 Migration Guide。

https://abp.io/docs/10.0/release-info/migration-guides/abp-10-0

ABP v10.0 有哪些新内容?

本节将介绍本次发布的一些主要特性。以下是后续小节将展开的要点列表:

升级到 .NET 10.0

我们已将 ABP 升级到 .NET 10.0,如果你想使用 ABP 10.0,需要将你的解决方案迁移到 .NET 10.0。

由于 .NET 10 的稳定版尚未发布,我们将 ABP 升级到 .NET v10.0-rc.1。稳定版 .NET 10 计划作为 长期支持(LTS)版本在 2025 年 11 月 11-13 日举行的 .NET Conf 2025 上发布。一旦官方 .NET 10 正式发布,我们会尽快更新 ABP Platform 到 .NET 10。

升级到 Blazorise v1.8.2

我们将 Blazor UI 所使用的 Blazorise 库升级到了 v1.8.2。如果你将项目升级到 v10.0 RC,请确保你应用中所有与 Blazorise 相关的包都使用 v1.8.2,否则可能会因版本不兼容而报错。

新模块:Elsa 工作流

ABP 现已内置工作流模块,集成了 Elsa Workflows,可在你的 ABP 解决方案(单体或微服务)中构建可视化、长事务、事件驱动的工作流。它与 ABP 的身份认证/授权、分布式事件总线、持久化、后台处理无缝集成,并通过 Elsa Studio 支持混合 UI。

想要上手实践并查看跨服务的端到端订单/支付工作流示例,请参考示例:
https://abp.io/docs/10.0/samples/elsa-workflows-demo

新对象映射器:Mapperly

ABP 模块现在将 Mapperly 作为默认的对象映射器。Mapperly 是一种编译期、基于源码生成的映射器,消除了运行时反射,具备更高性能与更易维护的优势。

Volo.Abp.AutoMapper包仍可用于向后兼容。你可以在你的解决方案中继续使用 AutoMapper,但若需要许可证,你需要自行获取并管理。升级指导与实践步骤请参考迁移指南:
https://abp.io/docs/10.0/release-info/migration-guides/AutoMapper-To-Mapperly

本地化:JSON 文件中的嵌套对象支持

ABP 现在支持在 JSON 本地化文件中使用嵌套对象(以及数组),允许你以层次结构组织翻译内容,并通过双下划线(__)分隔符来访问。这有助于在大型资源文件中提升可维护性,并使查找方式与熟悉的键路径保持一致。

声明(嵌套对象)

{
"culture": "en",
"texts": {
"MyNestedTranslation": {
"SomeKey": "Some nested value",
"SomeOtherKey": "Some other nested value"
}
}
}

使用

L["MyNestedTranslation__SomeKey"];
L["MyNestedTranslation__SomeOtherKey"];

声明(数组)

{
"culture": "en",
"texts": {
"Menu": {
"Items": ["Home", "About", "Contact"]
}
}
}

使用

L["Menu__Items__0"]; // 主页
L["Menu__Items__2"]; // 联系

仓储支持 EF Core 共享实体类型

ABP 仓储现在支持 EF Core 的共享类型实体(shared-type entity),可在执行操作前为仓储设置自定义实体名称。内部通过 EF Core 的DbContext.Set来定位相同 CLR 类型对应的正确DbSet/表,从而实现诸如按租户分表、归档表或分区等场景,并且可以在运行时切换目标。参见 PR:
https://github.com/abpframework/abp/pull/23588 以及 EF Core 文档:
https://learn.microsoft.com/en-us/ef/core/modeling/entity-types?tabs=
data-annotations-type-entity-types。

示例

// 在执行仓储操作前设置共享实体名,使其指向指定表
var repo = serviceProvider.GetRequiredService
repo.SetCustomEntityName("MyEntity_TenantA");
var list = await repo.GetListAsync;

// 在同一实例上切换到另一个共享实体名
repo.SetCustomEntityName("MyEntity_Archive");
await repo.InsertAsync(new MyEntity { /* ... */ });

为 InboxProcessor 增加失败重试策略

InboxProcessor现在支持针对每个事件配置失败处理策略:Retry(默认;在下一个周期中重新处理)、RetryLater(跳过当前失败事件并在稍后以指数退避重试;可配置退避因子与最大重试次数)以及Discard(丢弃失败事件)。这可避免单个失败的处理程序阻塞后续事件,提升系统弹性。

迁移到基于 Esbuild 的新 Angular 构建器

我们已将 ABP Angular 模板与包迁移至 Angular 新的 esbuild 构建系统(在 Angular 17+ 引入,并在 Angular 20 中得到完整支持),以带来更快的构建速度、现代 ESM 支持、内置 SSR/预渲染能力以及更好的开发体验。此变更对现有应用是非破坏性的。参见跟踪 issue 与 PR:Angular - Migrate to New Esbuild-based Angular Builder、feat: Update Angular templates to Angular 20 new build system。

模板/配置关键更新

更多 Angular 更新

警示

Angular SSR 支持

ABP Angular 模板现已通过 Angular Application Builder 支持服务端渲染(SSR),实现混合渲染(SSR + CSR),以提升首屏渲染、SEO 与感知性能。内容包括 SSR 安全的平台检查(避免直接使用 window/location/localStorage)、通过基于 Cookie 的存储实现 OIDC 认证兼容、以及使用TransferState避免水合期间重复的 HTTP GET 请求。实现要点与用法(包括如何运行 SSR 开发服务器以及transferStateInterceptor)请参见 issue 与 PR:Angular SSR、Hybrid Rendering & Application Builder。

有关混合渲染(预渲染 + SSR + CSR)的更多细节,请参见 Angular 官方指南:Angular SSR,以及构建器迁移指南:Angular build system migration。

总结

该版本带来了若干新特性,并对现有功能进行了大量增强。你可以查看路线图文档,了解后续版本的发布计划和计划中的特性。欢迎试用 ABP v10.0 RC,并反馈问题与建议,帮助我们发布更稳定的版本。

感谢你一直以来对社区的支持!

展开阅读全文

更新时间:2025-10-08

标签:数码   版本   工作流   对象   实体   解决方案   嵌套   事件   指南   数组   模块

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020- All Rights Reserved. Powered By 71396.com 闽ICP备11008920号
闽公网安备35020302034903号

Top