⚡模型即服务 - Wow 框架 v5.25.5 发布!🏗️
领域驱动 | 事件驱动 | 测试驱动 | 声明式设计 | 响应式编程 | 命令查询职责分离 | 事件溯源
官方文档:
https://wow.ahoo.me/
🚀 Wow v5.25.5 震撼发布!全面升级测试体验与核心架构
本次更新带来了革命性的测试规范升级,同时优化了核心架构与异常处理机制,为开发者提供更强大、更灵活的编程体验!
🔥 重磅亮点:全新测试规范登场
🧩 革命性 AggregateSpec 聚合测试框架
class CartSpec : AggregateSpec<Cart, CartState>({ on { // 模拟初始化场景 whenCommand(addCartItem) { expectEventType(CartItemAdded::class) // 事件类型断言 expectState { items.hasSize(1) } // 状态断言 fork { // 分支测试 whenCommand(removeCartItem) { expectEventType(CartItemRemoved::class) } } fork { // 嵌套分支测试 whenCommand(DefaultDeleteAggregate) { expectStateAggregate { deleted.isTrue() } } } } } })
- 多分支测试:支持
fork
嵌套测试复杂业务流程 - 智能状态验证:
expectState
/expectStateAggregate
精准断言聚合状态 - 链式操作:事件→命令→状态的全链路验证
🌟 全新 SagaSpec 流程测试引擎
class CartSagaSpec : SagaSpec<CartSaga>({ on { // 场景1:购物车下单流程 whenEvent(OrderCreated(fromCart=true)) { expectCommandType(RemoveCartItem::class) // 命令类型断言 expectCommand { body.productIds.first() == orderItem.productId // 命令内容验证 } } } on { // 场景2:非购物车订单 name("NotFromCart") // 自定义测试名 whenEvent(OrderCreated(fromCart=false)) { expectNoCommand() // 空命令断言 } } })
- 多场景覆盖:支持多个
on
块定义不同业务流程 - 精准命令验证:
expectCommand
可深度校验命令内容 - 命名测试场景:
name()
方法提升测试报告可读性
✨ 核心功能升级
🛠 架构优化
- 全新PrepareKey机制:自动发现注册
PrepareKeyProxyFactory
,支持自定义扫描包路径 - 注解迁移:
wow-api
统一管理注解,弃用wow-spring
旧版注解 - 服务容器增强:
ServiceProvider
新增serviceNames
属性,实现Copyable
接口
⚡ 性能与稳定性
- 异常处理升级:增强错误信息与原因链追踪,优化
CommandExchange
错误处理 - 等待策略优化:重构
wait
机制,简化等待条件判断 - 代码生成改进:引入
GeneratedFile
类统一管理生成文件
🔒 安全与维护
- 依赖全面升级:
- OpenTelemetry 仪表库 v2.18.1
- Mockk v1.14.5
- Angular v20.1.2
- ng-zorro-antd v20.1.0
- CoSec增强:新增请求ID提取能力
🧪 测试体系全面进化
- DSL语法革新:
given
→on
语义优化,更符合行为驱动开发 - 验证阶段增强:
VerifiedStage
新增expect()
断言方法 - 智能错误处理:优化聚合状态验证的错误反馈机制
- 动态测试构建:
DynamicTestBuilder
移至根包提升可用性
💡 立即体验新一代测试规范,让复杂业务逻辑的验证变得前所未有的简洁高效!建议开发者重点关注
AggregateSpec
和SagaSpec
的DSL设计模式,将大幅提升测试代码的可读性和可维护性。
+ 本次更新重点优化了测试基础设施 + 强烈推荐查看CartSpec和CartSagaSpec示例代码 + 体验新一代声明式测试范式的强大威力!
🎯 为现代化微服务而生,让领域驱动设计触手可及!
简介
Wow 是一个基于领域驱动设计和事件溯源的现代响应式 CQRS 微服务开发框架,历经多年生产环境验证。
旨在帮助开发者构建现代化的、高性能且易于维护的微服务应用程序,充分发挥领域驱动设计和事件溯源等模式优势的同时降低应用的复杂性以及实践成本。
值得一提的是,领域驱动设计和事件溯源并非微服务架构的专属,Wow 框架不仅适用于微服务开发,同样也可用于构建基于领域驱动设计的单体应用程序。
快速开始
使用 Wow 项目模板快速创建基于 Wow 框架的 DDD 项目
特性概览
架构图
背景
随着业务的发展和复杂性的增加,传统的架构和开发方式逐渐显露出瓶颈。领域驱动设计和事件溯源等理念在提高系统设计的灵活性和可维护性方面表现出色,但在实践中常常需要面对复杂性和学习曲线的挑战。
Wow 框架的目标是以简单易用的方式将领域驱动设计和事件溯源等理念融入到微服务应用开发中,降低开发者的学习成本,提高开发效率。 通过提供现代响应式的 CQRS 架构和相关组件,Wow 框架旨在让开发者更专注于业务逻辑的实现,而不必过多关心底层技术细节。
经过多年的实践和不断的演进,Wow 框架在生产环境中得到了验证,积累了丰富的经验。这些经验和反馈不仅丰富了框架的功能和性能,也为持续的改进和优化提供了宝贵的指导。
对于开发者而言,Wow 框架意味着什么?
我曾告诫我的团队:如果我们过于依赖数据驱动设计而忽视领域驱动设计,我们最终将沦为 CRUD 工程师。
CRUD 工程师的竞争力和可替代性可想而知,这或许是为何会有 35 岁效应,企业显然更倾向于招募没有太多生活羁绊、更加廉价的 25 岁 CRUD 工程师。
业务价值
软件系统的核心价值体现在业务价值上,研发人员不应只关注技术实现上,而是应该更多地关注业务价值的实现。 这其中的好处显而易见,当你开发完一个业务系统之后,你将变成一个业务专家,甚至比跟你合作的领域专家还要专业,因为你需要洞察业务细节。
使用 Wow 框架,意味着你将关注点放在围绕领域模型设计上,与业务专家一起探索业务领域,而不是关注于技术实现上。 你仅需编写领域模型,即可完成服务开发,Wow 框架自动为你准备好 OpenAPI 接口。
在《实现领域驱动设计》一书中,作者 Vaughn Vernon 提到:核心域才值得投入精力进行领域驱动设计, 但如果你使用 Wow 框架,你将发现,因为低廉开发成本、快速的开发效率,即使是次要的支撑子域也值得 DDD。
性能与伸缩性
随着业务的发展,你需要开始思考系统的性能和伸缩性问题。 在传统架构中,这牵扯到数据库关系模式、分片规则等复杂问题,同时你还需要处理因数据库分片导致的跨分片事务问题。 这时,你不得不修改你的业务代码,以适应水平拆分后的数据库架构。
然而,如果你选择使用 Wow 框架,你将不再需要过多关注数据库关系模式、分片规则等问题。你的业务代码无需变更,系统能够轻松实现水平伸缩。
你可以在这里了解更多关于 Wow 框架的性能。
读写分离与同步延迟
读写分离是一种极为普遍的性能优化架构模式。 然而,同步延迟问题常伴随而来,事务执行成功后写库落库成功,但读库同步延迟,用户刷新页面后无法获取最新数据,从而对用户的体验产生影响。例如:
- 用户发起下单事务,写库执行成功,但由于某种原因,读库同步延迟,用户刷新页面后发现订单未成功创建。
- 商家编辑完商品后,同步到 Elasticsearch 索引库,但由于某种原因,同步延迟,导致商家刷新页面后搜索不到该商品。
通常,大家采用最简便的方法,等待 1 秒后刷新页面。 虽然这种方式能解决大多数数据同步延迟的问题,但效率不够高。 因为大多数情况下,同步在 100 毫秒内就已完成,剩余的 900 毫秒成了浪费。 然而,有时 1 秒无法完成同步,这就导致用户获取的数据变得无效。
使用 Wow 框架,你可以通过等待 PROJECTED 信号完成,然后再将结果返回给用户,以更为优雅和高效的方式处理数据同步延迟的问题。
工程质量
单元测试是确保代码质量且符合预期业务需求的重要手段,但在传统架构中,单元测试往往是一项相当困难的任务,因为你需要考虑数据库连接、事务管理、数据清理等问题。
使用 Wow 框架,你将会发现基于 Given->When->Expect 模式的测试套件,使得单元测试变得异常简单。 你只需关注领域模型是否符合预期,而无需为数据库连接等问题烦恼。
在实际应用中,我们将领域模型的单元测试覆盖率下限阈值设置为 85%,也是可以轻松实现的。
在没有刻意要求的情况下,开发人员甚至自觉地将覆盖率提升至 95%。
因此,每次提交代码都变得轻松自在,因为你确信你的代码经过了充分的测试,并且真正意义上从单元测试中获得了收益。
在研发同级别的项目中,我们的测试团队在系统 API 测试中发现,基于 Wow 框架的项目,其 BUG 数仅为传统架构项目的 1/3。
你可以在这里了解更多关于 Wow 单元测试套件。
对于企业而言,Wow 框架意味着什么?
商业智能
商业智能是企业决策的关键支持,而数据则是商业智能的分析原料。业务数据越为丰富有价值,商业智能的分析结果越准确,决策也就更加可靠。
与传统架构有着显著差异,Wow 提供了实时聚合根状态事件(StateEvent
)和聚合命令(Command
)作为数据分析的数据源,同时极大降低了实时 ETL(Extract
, Transform
, Load
)的难度。
在传统架构中,实现实时 ETL 通常需要经过繁琐的流程,包括 DB->CDC->Process->DB
,而在 Wow 框架中,仅需一段简单的 SQL 脚本即可完成这一过程。
另外,在传统架构中,使用 CDC(MySql Binlog
)数据仅记录数据的变化,缺乏明确的业务语义。进行业务分析时,需要基于数据状态的变化推断出业务语义,这往往需要进行大量的数据处理。 相较之下,Wow 框架直接提供了聚合根状态事件和聚合命令作为数据分析的数据源,极大降低了数据处理的难度。
Wow 提供的实时同步机制将数据实时同步至数据仓库(ClickHouse),为实时数据分析提供了极大的便利。这种方法为商业智能提供了强有力的支持,构建了一个实时数据分析系统,使决策制定能够基于及时而准确的信息。
你可以在这里了解更多关于 Wow 商业智能。
操作审计
操作审计是企业中保障安全性和合规性的重要组成部分,同时也是对系统操作进行监控和追踪的关键手段。Wow 框架在这方面为企业带来了显著的优势。
通过记录聚合命令(Command
)作为操作审计的数据源,Wow 框架能够详细追踪系统中的各种操作。 这些记录不仅包含了操作本身的内容,还涵盖了操作触发的副作用(领域事件),为审计提供了更为全面和准确的数据基础。
相较于传统审计方法,Wow 框架的操作审计的数据源具备更加明确的业务语义,以及操作后产生的明确领域事件。
此外,Wow 框架提供的实时数据同步机制也为操作审计带来了便利,确保了审计数据的及时性和一致性。
了解更多关于 Wow 操作审计。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
字节 AI 编程助手 Trae 发布 2.0
字节跳动旗下 AI 编程助手 Trae 正式发布 2.0 版本。 据介绍,Trae 2.0 拥有全新的视觉设计,并加入了新的 SOLO 模式。据悉,SOLO 模式为一个具备上下文工程能力的系统,可基于完整信息进行任务规划和执行,支持从代码编写到功能交付的端到端开发流程。 具体来看,SOLO 模式能够处理从 PRD 风格的需求文档、技术设计,到浏览器内容和终端输出等丰富的上下文信息,全面覆盖规划、编码、测试、部署等完整的开发周期。 据了解,SOLO 的设计充分考虑了上下文工程。它首先理解用户的知识架构,帮助用户思考和规划,然后将复杂的工作分解成逻辑步骤以便于实施。 目前,SOLO 模式仅面向 Trae 国际版 Pro 用户开放体验,并且需要通过 SOLO Code 进行解锁;中国版用户则还需等待。定价方面,Trae 首月仅需 3 美元,后续价格为 10 美元起步。
- 下一篇
FileZilla 3.69.2 发布
FileZilla 是一个免费和开源的跨平台 FTP 应用程序,由 FileZilla Client 和 FileZilla Server 组成。客户端可用于 Windows、Linux 和 macOS,服务器仅可用于 Windows。服务器和客户端都支持 FTP 和 FTPS(FTP over SSL/TLS),而客户端还可以连接到 SFTP 服务器。 FileZilla Client 3.69.2正式发布,更新内容包括: 修复漏洞: 官方二进制文件现已链接到 GnuTLS 3.8.10 错误修正和细微更改: FTP:如果在被动模式下建立数据连接失败并出现 EADDRINUSE,则从不同的源端口重试 更多详情可查看:https://filezilla-project.org/
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Hadoop3单机部署,实现最简伪集群
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS关闭SELinux安全模块
- CentOS8编译安装MySQL8.0.19