• [2008-09-13]我们真的需要事件驱动架构么?


  • 采用事件驱动架构(EDA)的软件系统是建立在以事件作为系统中最重要元素的基础上的。事件产生于系统中并在系统中处理完成。此框架的价值所在:可以很容易的将已经存在的生成或者要处理的事件添加到已有系统中。当然你可以按照你的设计来添加新事件。

    是的,这相当伟大。如果你要从头开始,没有什么理由不采用这种设计。然而,着眼于事件并不是你仅仅能做的事情。

    除此以外,你应当创建一个拥有组件或者称为服务的框架,在组件之间拥有一些“通道”。通过通道,事件可以从一个组件(事件产生者)流到另一个组件“事件处理者”。 这些组件松散组合并能够分布的共存。任何一个注册了事件的一方都可以收到你广播的消息。

    因此,不要把设计局限于事件驱动,这样不能真正省钱。让事件驱动成为拥有通道的组件吧。我所提及的这个通道已经早在1982年的通信标准SDL中被采用了。在事件驱动设计中,这仅仅作为代理事件的一种机制。在OMG组织的CORBA标准,从19世纪90年代早期,被称为“事件服务”。多巧!事实上认知事件驱动框架概念上就和CORBA是一样的,不过是在网络世界罢了。

    最有趣的组件是服务。同时你也得到了面向服务设计,或者更多。

    然而,读者中的一些人(还没有完成家庭作业)可能还认为内容这些太新。EDA这三个字母和SOA一样对你们来说都是新的。我们也有一些新的不错的平台来更加容易的实现这些想法。

    过去的年月里,在组件世界里,我曾经看到过,相对于通道(也有事件),人们更看重组件的趋势,有些是否又是相反的。然而,绝对没有理由去选择。两者都应当允许被选择。但我们不需要的是更多的术语。这些对我们来说没有帮助。

    总结一下,大家应当寻求一种没有这种的组件框架。这就是30年前使得爱立信AXE系统如此成功的原因。多亏了它的设计框架,他可能仍然是世界上最好的这类在卖产品了。 然而,爱立信还得将其既有的管理组件加上当时没有的通道。

    当然,这些对于以前没有开发过组件设计框架的人来说是新了一些。因此,你们需要加快速度跟上来。实践会使你的学习事半功倍!
PHP项目开发,JAVA项目开发,.NET项目开发