Chinaunix首页 | 论坛 | 博客
  • 博客访问: 14728
  • 博文数量: 13
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 170
  • 用 户 组: 普通用户
  • 注册时间: 2013-08-20 11:02
文章分类
文章存档

2014年(3)

2013年(10)

我的朋友

分类: 其他平台

2013-08-31 11:18:24

  

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

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

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

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

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

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

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

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

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


本文由虫虫软件发出:
阅读(294) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~