事件驱动编程

事件驱动编程是以事件为第一驱动的编程模型,提到事件,可能有很多容易混淆的概念,这里的事件是指一种异步并发的消息模型,而普通的观察者模式则没有这个强调,观察者和被观察者之间通讯可以是同步机制。

同步机制的最大问题是会发生堵塞,不但导致性能大幅度降低,无法充分利用CPU潜力,浪费硬件投资,更重要造成软件模块的铁板化,紧耦合,无法切割,不利于日后扩展和变化。

异步并发的概念非常符合日常生活中事件的定义,也应该是事件语义的重要核心,实际生活中,事件的触发是无序且不可控的,对事件的响应当然要做到即时处理,如果用传统线程机制同步处理响应,可能因锁争夺发生堵塞,结果导致大量事件未及时处理,非常没有效率。

从客户端和服务器概念来看,客户端发出大量事件到服务器(如通过ajax等),服务器应该是多线程响应,但是如果每个线程内部处理业务时发生堵塞,线程再多也没有用,也就不能发挥服务器高并发处理的能力。

所以,我们不只是在服务器后端要选择事件驱动的socket架构,如Node.js或Vert.x,还要用事件驱动的编程模型将我们的业务落地到它们上面运行。这样才能在后端形成从底至上彻底的事件驱动架构。

业务的事件驱动编程,实际上是将node.js的前后端socket事件驱动机制搬迁到业务领域模型和技术架构之间,正如浏览器或Iphone客户端发出大量事件交由服务器处理,领域模型也能发生大量事件需要技术架构响应处理,比如大量同时读写数据库等等。这两者的机制应该是一样。

下面这个PPT是从服务器的底层Socket的事件驱动架构上升到最高层业务逻辑的事件驱动编程,提出了聚合根的业务模型与Actor模型非常吻合的天然衔接。

事件驱动编程PPT下载

在线PPT

开源力量公开课第十九期- Java事件编程视频

完整视频下载:http://pan.baidu.com/share/link?shareid=3706618000&uk=2365734848
[该贴被admin于2013-09-18 14:46修改过]

已报名,还没见过活的banq =.=!

可以给软件开发者指明正确的方向,非常有意义,。

2013-05-26 09:35 "@banq
"的内容
开源力量公开课第十九期- Java事件编程视频 ...

视频只有一半,另一半呢?

2013-06-06 22:16 "@chanball
"的内容
视频只有一半,另一半呢 ...

可能太长,主办方剪辑了。

相关文章:
你的SOA使用了EDA和CQRS了吗?
http://www.jdon.com/45467

2013-06-08 12:03 "@banq
"的内容
可能太长,主办方剪辑了。 ...

可惜了,才刚正式进入主题就没了,呵呵,不知道哪里有得下,付费也没问题?

2013-06-08 12:44 "@chanball
"的内容
呵呵,不知道哪里有得下,付费也没问题? ...

好了,我联系到主持人,得到完整视频在这里:http://pan.baidu.com/share/link?shareid=3047664762&uk=741026074
前一个是你看到的视频,后一个是你没看到的。

[该贴被banq于2013-06-08 17:53修改过]

2013-06-08 12:54 "@banq
"的内容
好了,我联系到主持人,得到完整视频在这里:http://pan.baidu.com/share/link?shareid=3047664762&uk=741026074
前一个是你看到的视频,后一个是你没看到的。
...

太感谢了,可以下,而且还免费的,呵呵。

是事件编程还是传统编程方式的改变,其根本原因来自于业务的复杂度,特别是大比例结构的业务,别忘了Evans DDD的书名:DDD-软件复杂度应对之道

新技术,新思想不是凭空出现,而是为了解决特定的领域问题而出现的

2013-06-08 12:54 "@banq
"的内容

好了,我联系到主持人,得到完整视频在这里:http://pan.baidu.com/share/link?shareid=3047664762&uk=741026074
前一个是你看到的视频,后一个是你没看到的。
...


Hi 楼主,你给的网盘地址已经失效了 ,能否在提供一个可用下载地址?! 或者是发我邮箱(hanqian200705@163.com)也可。 万分感谢!

2013-05-26 09:35 "@banq
"的内容
开源力量公开课第十九期- Java事件编程视频完整视频下载:http://pan.baidu.com/share/link?shareid=3047664762&uk=741026074 ...

请问这个视频现在哪里还可以下载得到?谢谢。
看到新的地址了,谢谢。
[该贴被Jeanvixue于2013-09-18 14:46修改过]