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

  • 设置系统支持动态存储
  • 新增 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 分层架构解决方案,快速集成框架内置应用模块。

传送门

《精读 Mastering ABP Framework》

学习难度:进阶

推荐级别:★★★★

《Mastering ABP Framework》中文版,系统掌握 ABP Framework ,进阶提升。

传送门

ABP Framework 7.4 RC 新增功能简介:增强微服务架构支持的更多相关文章

  1. ABP Framework V4.4 RC 新增功能介绍

    目录 新增功能概述 启动模板删除 EntityFrameworkCore.DbMigrations 项目 CMS-Kit 动态菜单管理 Razor引擎对文本模板的支持 DbContext/Entiti ...

  2. 一. SpringCloud简介与微服务架构

    1. 微服务架构 1.1 微服务架构理解 微服务架构(Microservice Architecture)是一种架构概念,旨在通过将功能分解到各个离散的服务中以实现对解决方案的解耦.你可以将其看作是在 ...

  3. ABP Framework 5.2 RC 发布及新增功能介绍

    ABP Framework 5.2 RC 新增功能 目录 ABP Framework 5.2 RC 新增功能 单层解决方案模板 EF Core 数据库迁移 UI 和 数据库 选项 API 版本控制 源 ...

  4. ABP Framework 5.0 RC.1 新特性和变更说明

    .Net 6.0 发布之后,ABP Framework 也在第一时间进行了升级,并在一个多星期后(2021-11-16)发布了 5.0 RC.1 ,新功能和重要变更基本已经确定. 5.0版本新特性 新 ...

  5. WPF4.5 中的新增功能和增强功能的信息

    本主题包含有关 Windows Presentation Foundation (WPF) 版本 4.5 中的新增功能和增强功能的信息. 本主题包含以下各节: 功能区控件 改善性能,当显示大时设置分组 ...

  6. ABP vNext微服务架构详细教程——简介

    概述 该系列文章主要展示ABP vNext框架在微服务架构下的用法,提供一套可落地的技术实现思路,并演示各服务在Kubernetes下的部署方案. 基础概念 ABP vNext:基于ASP.NET C ...

  7. ABP vNext微服务架构详细教程——分布式权限框架

    1.简介 ABP vNext框架本身提供了一套权限框架,其功能非常丰富,具体可参考官方文档:https://docs.abp.io/en/abp/latest/Authorization 但是我们使用 ...

  8. ABP vNext微服务架构详细教程(补充篇)——单层模板

    1. 简介 在之前的<ABP vNext微服务架构详细教程>系列中,我们已经构建了完整的微服务架构实例,但是在开发过程中,我们会发现每个基础服务都包含10个类库,这是给予DDD四层架构下A ...

  9. 微服务架构及Eureka简介

    一.微服务架构 服务提供者.服务消费者.服务发现组件这三者之间的关系: 各个微服务在启动时,将自己的网络地址等信息注册到服务发现组件中,服务发现组件会存储这些信息. 服务消费者可从服务发现组件查询服务 ...

  10. ABP VNext框架基础知识介绍(2)--微服务的网关

    ABP VNext框架如果不考虑在微服务上的应用,也就是开发单体应用解决方案,虽然也是模块化开发,但其集成使用的难度会降低一个层级,不过ABP VNext和ABP框架一样,基础内容都会设计很多内容,如 ...

随机推荐

  1. 认识CPU底层原理(1)——MOSFET

    本文为B站UP主硬件茶谈制作的系列科普<[硬件科普]带你认识CPU>系列的学习笔记,仅作个人学习记录使用,如有侵权,请联系博主删除 近年来,由于国内外各种因素影响,半导体行业逐渐被推向风口 ...

  2. 创建CMDB项目

  3. vue小坑之Vetur报错:相对路径报错

    话不多说先上图 俗话说:面向百度编程,这话是没错滴,找不到相同问题的博客至少你还可以找谷歌翻译 以上图片问题就是:你导入的组件的相对路径不对.(有可能是你手动敲进去的,然后vetur这边检测不到) 解 ...

  4. Java程序设计复习提纲(上:入门语法)

    目录 上: 基本语法与编译运行 数据类型和关键字 常用语法 数组与字符串 异常处理 中: 面向对象和类 下: 图形界面 基本语法与编译运行 java没有指针没有全局变量 Java源代码文件的后缀名是& ...

  5. 文心一言 VS 讯飞星火 VS chatgpt (26)-- 算法导论5.1 1题

    一.证明:假设在过程 HIRE-ASSISTANT 的第 4 行中,我们总能决定哪一个应聘者最佳.则意味着我们知道应聘者排名的全部次序. 文心一言: 证明: 假设在过程 HIRE-ASSISTANT ...

  6. wireshark分析tcp传输之文件上传速率问题

    在网络性能问题排查思路那一节里,我提到了查看系统网络瓶颈的方法以及排查丢包问题的手段. 但就此分析网络问题还不够精细,有时网络资源并没有达到瓶颈,或者并没有丢包产生,但是网络传输速率就是很慢,或者有丢 ...

  7. Docker 镜像命令

    Docker 镜像命令 1.Docker images--列出本地镜像 命令:docker images [OPTIONS] [REPOSITORY[:TAG]] 选项 -a :列出本地所有的镜像(含 ...

  8. 2023-06-06:给你二叉树的根结点 root ,请你设计算法计算二叉树的 垂序遍历 序列。 对位于 (row, col) 的每个结点而言, 其左右子结点分别位于 (row + 1, col -

    2023-06-06:给你二叉树的根结点 root ,请你设计算法计算二叉树的 垂序遍历 序列. 对位于 (row, col) 的每个结点而言, 其左右子结点分别位于 (row + 1, col - ...

  9. 【Java学习】 Spring的基础理解 IOC、AOP以及事务

    一.简介     官网: https://spring.io/projects/spring-framework#overview     官方下载工具: https://repo.spring.io ...

  10. 使用 Sa-Token 实现 [记住我] 模式登录、七天免登录

    一.需求分析 如图所示,一般网站的登录界面都会有一个 [记住我] 按钮,当你勾选它登录后,即使你关闭浏览器再次打开网站,也依然会处于登录状态,无须重复验证密码: 本文将详细介绍在 Sa-Token中, ...