写点什么

利用简单的事件驱动组件简化系统

  • 2013-06-07
  • 本文字数:687 字

    阅读完需:约 2 分钟

在小型业务组件之间使用事件进行交互可以简化系统, Russ Miles 最近就谈到了“为敏捷软件编写简单的、事件驱动的组件”这一主题。

一个月前,Russ 在演讲中探讨了“利用事件简化系统架构”,奠定了简化系统这一理念的基础,他建议采用通过彼此合作的组件来交换事件这种架构。这次演讲正是承接上次演讲而来的。

之所以使用这种设计,Russ 的目标是让组件随应用或系统的改变而改变,避免牵一发而动全身。

在最近的演讲中,Russ 专注于组件,而且他将“简化”作为一个原则来降低组件间的耦合。一个组件是不是简单直接?有个很好的衡量标准,看看这个组件是不是容易移动。如果很难移动,就说明组件太复杂了。他把复杂的组件比作圣诞树上的灯,牵一发而动全身。

为了简化复杂的组件,他首先把关注点和副作用分离开来,将它们移动到新的、更小的组件或函数中。关于副作用有一个例子,就是将副作用与外部世界集成到一起,比如Russ 将日志看做一个应该移到基础架构中的关注点。

事件是在组件之间传递数据的机制,这就带来了位置耦合,因为发送方需要知道接收方的位置,不过通过引入一个带有事件分发器的中间事件域,可以去掉这种耦合。

事件可以是从一个组件移动到另一个组件的共享的不可变类,这是事件最简单的形式,但这也会引入耦合。为了降低复杂性,Russ 的下一步是以具名参数的形式用数据来替换该类,比如键值对的映射。

这种设计的缺点是引入了间接性。Russ 认为该设计并没有增加复杂性,但推迟了可能出现的潜在问题。解决该问题的方法就是在两个组件之间进行大量测试,其中包括单元测试和集成测试。

查看英文原文: Build Simplicity into a System with Simple Event-Driven Components

2013-06-07 10:051968
用户头像
臧秀涛 略懂技术的运营同学。

发布了 300 篇内容, 共 125.7 次阅读, 收获喜欢 33 次。

关注

评论

发布
暂无评论
发现更多内容

Fortex方达发布电子交易生态体系 与客户共享共赢

股市老人

在线文档协作工具,是提高工作效率的第一步

小炮

java培训自定义 ThreadPoolExecutor 线程池

@零度

jdk JAVA开发

API如何检测安全配置是否有错误?

百家饭隐私计算平台创业者

安全 API

子网划分不会?瑞哥带你深入理解IP地址,手把手教你子网划分!

wljslmz

网络技术 6月月更 子网划分

搜狐员工遭遇工资补助诈骗 黑产与灰产有何区别 又要如何溯源?

郑州埃文科技

网络安全 网络灰黑产 IP溯源

【网易云信】深度剖析「圈组」关系系统设计 | 「圈组」技术系列文章

网易智企

音视频 IM Discord

大数据培训Flink高频面试题分享

@零度

flink 大数据开发

“减负”,让“猪”可以飞得更高

鼎道智联

百度工程师教你玩转设计模式(单例模式)

百度Geek说

设计模式

中台:数据中台、业务中台、技术中台、应用中台、AI中台……

WorkPlus

H.265编码原理入门

百度Geek说

视频编码

深度剖析「圈组」关系系统设计 | 「圈组」技术系列文章

网易云信

音视频 IM Discord

为你推荐一款高效的IO组件——okio

HarmonyOS开发者

HarmonyOS

【网易云信】深度剖析「圈组」消息系统设计 | 「圈组」技术系列文章

网易智企

音视频 IM Discord

从“化学家”到开发者,从甲骨文到TDengine,我人生的两次重要抉择

TDengine

数据库 tdengine 开源 时序数据库

2022 年 5 月产品大事记

FinClip

对接上百个第三方 API 后的思考与沉淀

AFlymamba

经验总结 Java EE 经验分享、

Meetup回顾|DevOps&MLOps如何在企业中解决机器学习困境?

星策开源社区

开源 DevOps 算法 OpenMLDB MLOps

“易 +”开源计划丨基于 WebRTC 的低延时播放器设计和实践

网易智企

开源 IM 低延时直播

【云图说】每个成功的业务系统都离不开APIG的保驾护航

华为云开发者联盟

云计算 华为云 业务系统

利用简单的事件驱动组件简化系统_设计模式_Jan Stenberg_InfoQ精选文章