首页 > 其他分享 >ABP Framework 7.4 RC 新增功能简介:增强微服务架构支持

ABP Framework 7.4 RC 新增功能简介:增强微服务架构支持

时间:2023-08-25 11:45:50浏览次数:49  
标签:设置 服务 7.4 数据库 ABP Framework 模块

该版本中发布的主要特性:

  • 设置系统支持动态存储
  • 新增 AdditionalAssemblyAttribute 特性
  • 分布式事件支持关联IDCorrelationId
  • EF Core 数据库迁移系统
  • 其他新闻

新增的四项特性其中有三项用于增强微服务架构:

  • 设置系统支持动态存储为微服务提供单点收集和获取设置的支持。
  • 分布式事件关联ID支持跟踪跨多个服务的分布式事件。
  • EF Core 数据库迁移系统对于迁移微服务的数据库特别有用。

设置系统支持动态存储

在此版本之前,微服务架构的项目中很难实现设置统一管理:在不同的微服务中定义设置,并在单个应用程序中集中管理所有设置。为了实现该功能,需要为管理微服务添加所有相关微服务的服务契约项目引用,这样才能获取所有的设置并管理它们。

在这个版本中,ABP Framework 引入了动态设置存储,这是一个重要的功能,允许从一个点收集和获取所有设置定义,简化了微服务上设置管理的问题。

注:如果要从早期版本升级并使用“设置管理”应用模块,则需要创建新数据迁移并将其应用到数据库,因为已为此功能添加了新的数据库表。

新增 AdditionalAssemblyAttribute 特性

在这个版本中,引入了 AdditionalAssemblyAttribute 特性来定义模块的附加程序集。ABP Framework 自动将模块的所有服务注册到依赖注入系统。通过扫描程序集中定义模块类的类型来查找服务类型。通常,每个程序集都包含一个单独的模块类定义,并且模块使用 DependsOn 属性相互依赖。

在某些极少数情况下,应用模块可能由多个程序集组成,其中只有一个程序集定义了模块类,其他程序集只是模块的一部分,而不是单独的模块。如果无法在目标程序集中定义模块类,或者不想依赖于某个模块的依赖项,则该特性就尤其有用。

在这种情况下,可以使用如下所示的 AdditionalAssembly 特性:

[DependsOn(...)] // 正常解析模块依赖
[AdditionalAssembly(typeof(IdentityServiceModule))] // 只解析目标程序集中的类型(在另一个程序集中)
public class IdentityServiceTestModule : AbpModule
{
    //...
}

以上示例,使用 AdditionalAssembly 特性定义目标类型 IdentityServiceModule ,ABP Framework 将 IdentityServiceModule 类所在的程序集作为 IdentityServiceTestModule 模块的附加程序集进行加载。注意,在这种情况下,不会加载 IdentityServiceModule任何模块依赖项

查看模块开发基础文档,了解更多信息。

分布式事件支持关联ID(CorrelationId)

在此版本中, CorrelationId 作为分布式应用程序中用于跟踪跨多个服务或操作请求的唯一密钥,附加到分布式事件,因此可以将事件与HTTP请求关联起来,并可以跟踪所有相关的活动。

ABP Framework 在首次操作开始时生成 correlationId ,然后将当前 correlationId 作为附加属性附加到分布式事件。例如,如果使用 ABP Framework 提供的事务发件箱或收件箱模式,则可以在带有标准 X-Correlation-Id 键的 IncomingEventInfoOutgoingEventInfo 类的额外属性中看到 correlationId

您可以查看此问题以了解更多信息。

EF Core 数据库迁移系统

在此版本中,ABP Framework 提供了基类和事件来迁移数据库结构,并在应用程序启动时为数据库播种初始数据。该系统与多租户兼容,每当创建新租户或更新租户的数据库连接字符串时,都会检查并应用新租户的数据库迁移状态。

该系统对于迁移微服务的数据库特别有用。这样,当部署新版本的微服务时,不需要手动迁移其数据库。

需要执行以下操作才能使用数据库迁移系统:

  • 创建一个从 EfCoreRuntimeDatabaseMigratorBase 类派生的类,重写并实现其 SeedAsync 方法。最后,在模块类的 OnPostApplicationInitializationAsync 方法中执行类的 CheckAndApplyDatabaseMigrationsAsync 方法。
  • 创建一个从 DatabaseMigrationEventHandlerBase 类派生的类,重写并实现其 SeedAsync 方法。然后,每当创建新租户或租户的连接字符串发生变化时,将执行 SeedAsync 方法。

其他新闻

  • 第三方引用类库升级:OpenIddict 库升级到 v4.7.0
  • 新增 Volo.Abp.Maui.Client 包,由 MAUI 移动应用程序使用。
  • AbpAspNetCoreIntegratedTestBase 类支持设置一个泛型类型参数,该参数应该是 Startup 类类型,有了这个参数就能够将 ABP 模块类类型传递给泛型类型参数,简化应用程序项目的测试。

教程推荐

《ABP Framework 极速开发》

学习难度:基础
推荐级别:★★★
从零开始搭建基于 ABP Framework 分层架构解决方案,快速集成框架内置应用模块。

标签:设置,服务,7.4,数据库,ABP,Framework,模块
From: https://www.cnblogs.com/YGYH/p/17656513.html

相关文章

  • abp-vnext-pro 实战(九,前端vue和vben学习)
    vben效果 VbenAdmin(vvbin.cn) 对应的代码在 vue-vben-admin/src/views/demo/page/form/basic/data.tsatmain·vbenjs/vue-vben-admin(github.com){field:'time',component:'RangePicker',label:'起止日期',colProps:{......
  • ABP Sqlite 级联删除、ABP EF Sqlite级联删除
    前言:  为实现在ABP中实现级联删除。  以前参照过ABP工作单元实现过一套符合公司业务要求的工作单元。1.如何实现ABPEFSqlite级联删除?  参考链接地址https://stackoverflow.com/questions/5890250/on-delete-cascade-in-sqlite3  sqlite默认是没有启用外键的,需......
  • 文心一言 VS 讯飞星火 VS chatgpt (80)-- 算法导论7.4 5题
    五、如果用go语言,当输入数据已经“几乎有序”时,插入排序速度很快。在实际应用中,我们可以利用这一特点来提高快速排序的速度。当对一个长度小于k的子数组调用快速排序时,让它不做任何排序就返回。当上层的快速排序调用返回后,对整个数组运行插人排序来完成排序过程。试证明:这一排序......
  • SignalR实战:在.NET Framework和.NET Core中如何使用SignalR?
    官网文档:ASP.NETCoreSignalR入门|MicrosoftLearnSignalR开源代码:SignalR·GitHub很多小伙伴问:在前后端分离项目中,后端是.NETCore前端是Vue如何使用SignalR?在前后端不分离项目中,.NETFrameworkMVC项目中又如何使用SignalR技术呢?那就来看看下面这篇文章吧!本文主要介绍Signa......
  • 文心一言 VS 讯飞星火 VS chatgpt (79)-- 算法导论7.4 4题
    四、请用go语言,证明:RANDOMIZED-QUICKSORT期望运行时间是Ω(nlgn)。文心一言:首先,为了证明RANDOMIZED-QUICKSORT的期望运行时间是Ω(nlgn),我们需要证明在最坏的情况下,该算法的运行时间是O(nlgn)。然后,我们需要证明在最坏的情况下,算法的期望运行时间是Ω(nlgn)。RANDOMIZED-QUIC......
  • abp-vnext-pro 实战(八,聚合根的写法,客户M:N地址)
    参考数据字典模块的写法///<summary>///地址///</summary>publicclassAddress:FullAuditedAggregateRoot<Guid>,IMultiTenant{publicGuid?TenantId{get;protectedset;}///<summary>///公司名///</summary>p......
  • VS2015项目.net-framework-4.5.2升级或新建项目无法选择framework 4.6.2(解决办法)
    VS2015里面没有.NETFramework4.6.2VS2015默认安装的目标框架最高是.NETFramework4.6.1,但是我的项目里面某些NuGet软件包更新需要依赖.NETFramework4.6.2,项目就需要升级到目标框架.NETFramework4.6.2VS2015项目无法选择framework4.6.2的解决办法:第一步:系统环境安装.NET......
  • 大厂 Framework 面试必备 Handler&Binder&AMS 面试题
    前言大家都知道现在AndroidFramework成为头部公司必不缺少的技术栈之一,尤其是熟悉Franmework源码的Android开发者,在面试中往往会占到很大的优势那我今天就带来AndroidFramework比较高刷的面试题分享,总共包含以下四大类:系统启动流程面试题解析Binder面试题解析Handler面......
  • 文心一言 VS 讯飞星火 VS chatgpt (78)-- 算法导论7.4 2题
    二、如果用go语言,证明:在最好情况下,快速排序的运行时间为Ω(nlgn)。文心一言:在最好情况下,快速排序的运行时间为Ω(nlgn)的证明如下:快速排序是一种分治算法,它将一个数组分成两个子数组,然后对这两个子数组分别进行排序。在最好情况下,每次划分都能将数组等分,即每次划分后得到的两......
  • 文心一言 VS 讯飞星火 VS chatgpt (78)-- 算法导论7.4 2题
    二、如果用go语言,证明:在最好情况下,快速排序的运行时间为Ω(nlgn)。文心一言:在最好情况下,快速排序的运行时间为Ω(nlgn)的证明如下:快速排序是一种分治算法,它将一个数组分成两个子数组,然后对这两个子数组分别进行排序。在最好情况下,每次划分都能将数组等分,即每次划分后得到的两个子......