ABP Framework 7.4 RC 新增功能简介:增强微服务架构支持
- ABP Framework 版本号:
7.4.0-rc.1
发布时间:2023.8.16
- 阅读原文:ABP.IO Platform 7.4 RC Has Been Published
- 翻译:
iEricLee
- 原文首发: 知识乐 ABP Framework 专题
该版本中发布的主要特性:
- 设置系统支持动态存储
- 新增
AdditionalAssemblyAttribute
特性 - 分布式事件支持关联ID(
CorrelationId
) - 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
键的 IncomingEventInfo
或 OutgoingEventInfo
类的额外属性中看到 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 新增功能简介:增强微服务架构支持的更多相关文章
- ABP Framework V4.4 RC 新增功能介绍
目录 新增功能概述 启动模板删除 EntityFrameworkCore.DbMigrations 项目 CMS-Kit 动态菜单管理 Razor引擎对文本模板的支持 DbContext/Entiti ...
- 一. SpringCloud简介与微服务架构
1. 微服务架构 1.1 微服务架构理解 微服务架构(Microservice Architecture)是一种架构概念,旨在通过将功能分解到各个离散的服务中以实现对解决方案的解耦.你可以将其看作是在 ...
- ABP Framework 5.2 RC 发布及新增功能介绍
ABP Framework 5.2 RC 新增功能 目录 ABP Framework 5.2 RC 新增功能 单层解决方案模板 EF Core 数据库迁移 UI 和 数据库 选项 API 版本控制 源 ...
- ABP Framework 5.0 RC.1 新特性和变更说明
.Net 6.0 发布之后,ABP Framework 也在第一时间进行了升级,并在一个多星期后(2021-11-16)发布了 5.0 RC.1 ,新功能和重要变更基本已经确定. 5.0版本新特性 新 ...
- WPF4.5 中的新增功能和增强功能的信息
本主题包含有关 Windows Presentation Foundation (WPF) 版本 4.5 中的新增功能和增强功能的信息. 本主题包含以下各节: 功能区控件 改善性能,当显示大时设置分组 ...
- ABP vNext微服务架构详细教程——简介
概述 该系列文章主要展示ABP vNext框架在微服务架构下的用法,提供一套可落地的技术实现思路,并演示各服务在Kubernetes下的部署方案. 基础概念 ABP vNext:基于ASP.NET C ...
- ABP vNext微服务架构详细教程——分布式权限框架
1.简介 ABP vNext框架本身提供了一套权限框架,其功能非常丰富,具体可参考官方文档:https://docs.abp.io/en/abp/latest/Authorization 但是我们使用 ...
- ABP vNext微服务架构详细教程(补充篇)——单层模板
1. 简介 在之前的<ABP vNext微服务架构详细教程>系列中,我们已经构建了完整的微服务架构实例,但是在开发过程中,我们会发现每个基础服务都包含10个类库,这是给予DDD四层架构下A ...
- 微服务架构及Eureka简介
一.微服务架构 服务提供者.服务消费者.服务发现组件这三者之间的关系: 各个微服务在启动时,将自己的网络地址等信息注册到服务发现组件中,服务发现组件会存储这些信息. 服务消费者可从服务发现组件查询服务 ...
- ABP VNext框架基础知识介绍(2)--微服务的网关
ABP VNext框架如果不考虑在微服务上的应用,也就是开发单体应用解决方案,虽然也是模块化开发,但其集成使用的难度会降低一个层级,不过ABP VNext和ABP框架一样,基础内容都会设计很多内容,如 ...
随机推荐
- MySql的数据存储之B+树(浅谈)
一.MySql的实际存储位置 B+树是MySql数据结构的主流存储方式,包括InnoDB和MYISAM引擎,它们的默认存储结构都是B+树 了解B+树前,我们先要知道MySql 的实际存储位置在哪? 有 ...
- vue全家桶进阶之路26:Vue.js 3.0与Vue.js 2.x 的比较和注意事项
Vue.js 3.0 是 Vue.js 框架的最新版本,于 2020 年 9 月正式发布.Vue.js 3.0 主要的改进和新特性包括: 更好的性能:Vue.js 3.0 使用了更快的虚拟 DOM 实 ...
- drf——序列化之source(了解)、定制字段的两种方式(重要)、多表关联反序列化保存、反序列化字段校验、ModelSerializer使用
1 序列化高级用法之source(了解) # 1.创建了5个表(图书管理的5个) # 2.对book进行序列化 # 总结:source的用法 1.修改前端看到的字段key值--->source指 ...
- Hackathon 代码黑客马拉松采访复盘
AIGC Hackathon 2023 北京站 我参加了选手采访提纲,这里我感觉有些点可以分享给大家.之前复盘的链接: 下面是采访我的回答内容: 1. 请向大家简单介绍一下自己吧? 子木,社区名称为程 ...
- 技术招聘漫谈 | 正在招Golang工程师的你,赶快收藏这份识人秘籍!
各位技术面试官,欢迎来到新一期的技术招聘漫谈专栏. 在前两期的专栏中,我们解析了前端工程师以及 Java 工程师 这两个常见技术岗位的招聘技巧. 今天,我们想把目光聚焦在一个前景与"钱&qu ...
- Anaconda 使用的一些体验与困惑
Channels 使用 需要注意的是做生信分析的童鞋使用 conda 环境时一定要特别注意 conda channels 的设置,滥用 channels 很有可能会导致你的软件升降级(甚至环境)错乱. ...
- 记一次BootCDN被黑产挂马导致站点跳转博彩网站的问题
近期发现公司某些站点出现偶尔跳转博彩网站的现象,经过排查发现该现象为供应链投毒攻击,BootCDN上的静态资源无一例外均被污染, 当外站引入BootCDN的静态资源时,如果请求携带的Referer头为 ...
- A First course in FEM —— matlab代码实现求解传热问题(稳态)
这篇文章会将FEM全流程走一遍,包括网格.矩阵组装.求解.后处理.内容是大三时的大作业,今天拿出来回顾下. 1. 问题简介 涡轮机叶片需要冷却以提高涡轮的性能和涡轮叶片的寿命.我们现在考虑一个如上图所 ...
- EnhancingDecisionTreeswithGeographicInformationSystemsa
目录 引言 在计算机科学领域,地理信息系统和( geographical information systems, GIS)已经成为了一个非常受欢迎的工具.GIS 可以用来处理和存储大量的地理数据,支 ...
- Python编程和数据科学中的大数据分析:如何从大量数据中提取有意义的信息和模式
目录 <Python编程和数据科学中的大数据分析:如何从大量数据中提取有意义的信息和模式> 引言 大数据时代已经来临,随着互联网和物联网的普及,海量数据的产生和存储已经成为一种普遍的现象. ...