BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

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

| 作者 Jan Stenberg 关注 29 他的粉丝 ,译者 臧秀涛 关注 2 他的粉丝 发布于 2013年6月8日. 估计阅读时间: 2 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

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

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

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

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

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

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

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

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

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

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT