快速业务通道

冒号课堂§3.4:事件驱动 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
式啊[7]。此外,聊天时不等对方回答,就可与另一网友交谈,这就是会话切换带来的异步效果。不过同样是聊天,改用电话就稍有不同了。”

冒号扫了 众人一眼,果见有人皱起了眉头。

“当你正用座机通话时,手机响了。你会怎么做?”冒号提示。

逗号本能地回答:“要么挂掉电话再接手机,要么让打手机的人迟些打来。”

句号听出了门道:“这说明电话的通话过程是同步而非异步的,原因是打电话双方的交流是连贯的、非堵塞式的(non-blocking),与QQ聊天正好相反。”

冒号点头称许。

虽然早已过了下课时间,引号仍是好学不倦:“我觉得观察者模式与事件驱动式很像啊。”

“你开始不是还举了订阅杂志和RSS的例子吗?出版/订阅(publish-subscribe)模式[8]正是观察者(observer)模式的别名,一方面可看作简化或退化的事件驱动式,另一方面可看作事件驱动式的核心思想。该模式省略了事件管理器部分,由事件源直接调用事件处理器的接口。这样更加简明易用,但威力有所削弱,缺少事件管理、事件连带等机制。著名的MVC(Model-View-Controller)模型正是它的一个应用。”冒号长舒了一口气,准备收工,“事件驱动式的应用极广,变化极多,还涉及到框架、设计模式、架构、以及其他的编程范式,本身也可作为一种架构模型。今天我们仅仅是蜻蜓点水,更深入更具体的内容只能留后探讨了。时候不早,你们也该饿了,赶快回家吧!范式可不能当饭吃哦。”

众人笑作鸟兽散。

冒号课堂§3.4:事件驱动(8)

时间:2011-06-25 BlogJava xyz98

,插语

[1] 许多基于事件驱动的系统都提供了createEvent之类的API,授权编程者自行产生事件。

[2] 更准确地说,Windows先把所有的硬件事件存入系统消息队列(system message queue),然后再放入应用程序消息队列(application message queue)。

[3] 比如可以这样从msg中得到窗口过程: (WNDPROC)GetWindowLong(msg.hwnd, GWL_WNDPROC)。

[4] 后面的论述同样适用于其他形式的软件分层结构。

[5] 指事件处理器在处理过程中又产生新的事件,从而再次触发事件处理器。

[6] 比如套接字(socket)中的accept函数。

[7] 真正的P2P网络是不需要中心服务器的,此处P2P指聊天双方是不分主客的对等关系。

[8] 有人将出版-订阅模式视为事件驱动设计的同义词,这是有道理的:在实际生活中,处于出版商与订阅者之间的邮局可作为事件管理器。

。总结

事件是程序中令人关注的信息状态上变化。在基于事件驱动的系统中,事件包括内建事件与用户自定义事件,其中内建事件又分为底层事件和语义事件。此外,事件还有自然事件与合成事件之分。

Callback指能作为参数传递的函数或代码,它允许底层模块调用高层模块,使调用者与被调者从代码上解耦。异步callback在传入后并不立即被调用,使调用者与被调者从时间上解耦。

控制反转一般通过callback来实现,其目的是降低模块之间的依赖性,从而降低模块的耦合度和复杂度。

在框架设计中,控制反转增强了软件的可重用性、柔韧性和可扩展性,减少了用户的负担,简化了用户的代码。

控制反转、依赖反转原则和依赖注射是近义词,它们的主题是控制与依赖,目的是解耦,方法是反转,而实现这一切的关键是抽象接口。

事件驱动式编程的三个步骤:实现事件处理器;注册事件处理器;实现事件循环。

异步过程在主程序中以非堵塞的机制运行,即主程序不必等待该过程的返回就能继续下一步。异步机制能减少随机因素造成的资源浪费,提高系统的性能和可伸缩性。

独立是异步的前提,耗时是异步的理由。

事件驱动式最重要的两个特征是被动性和异步性。被动性来自控制反转,异步性来自会话切换。

观察者模式又名出版/订阅

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号