请问有人了解基于事件的编程吗?

尼克徐 发布于 2014年03月07日
无人欣赏。

基于事件的编程,又称为 event based programming,是一种编程范式,据称对模块之间的解耦合有很大好处。
请问国内这方面资料哪里有?或者谁在这方面了解很深?能介绍一下吗?
我查了一下当当也没有这方面的书。

共11条回复
dream0411 回复于 2014年03月08日

没仔细了解过,之前看node.js用的libuv库倒是单线程异步事件,楼主要不参考一下

sycx 回复于 2014年03月08日

Wikipedia的 Event-driven programming , 下方 External links 有些参考文章

贵人 回复于 2014年03月08日

nodejs就是

tinyfool 回复于 2014年03月08日

想了解一个概念还是要说清楚你在哪里看到的。事实上基于事件在很早期的Windows编程里面就有,后来在现在的网络库里面都有,基本理论不复杂,但是这两类基本上是完全不同的应用场景要学和研究的也完全不同。

我怀疑你还是遇到了学而不思则惘的问题,以某本书上讲的某个东西为指导去学习是相对来说不好的学习路径(在你自己能达到一定高度,看得明白中间的来龙去脉和结构之前),你可能需要从某个实际出发,某个需求出发,然后去实践,在这个过程中,寻找书和资料来帮助你达到某个结果。以这个为路径的话,可能对你会好一些。

尼克徐 回复于 2014年03月08日

 谢谢楼上的参考资料,特别感谢tinyfool的提醒。
现在提供一下背景: 我现在正在设计一套框架,目标是一个所见即所得的,可以有着复杂的业务逻辑的应用app生成系统,而这需要对模块间的解耦合问题,以及如何综合处理和管理事件和状态,进行比较精细的设计。
在做这套框架之前,我已做过类似的几套框架了,应用后都挺成功的。 但都没有这个框架涵盖的范围大。
目前正在开始看Event-Based Programming: Taking Events to the Limit 这本书,似乎很有参考价值。
另一本参考书:
Practical UML Statecharts in C/C++: Event-Driven Programming for Embedded Systems (second edition)

blackzwei 回复于 2014年03月08日

Jdon 解道上面有一些比较易懂的资料
简单比喻就类似于监听器那样的 你要负责的部分是事件的具体处理 而传入参数 返回类型等都已经定义好了

tinyfool 回复于 2014年03月09日

5楼 @尼克徐 对你的框架不懂,不过有什么类似的框架可以参考么?

zieaziea 回复于 2014年03月09日

这让我想到了java的NIO,以及netty.....

尼克徐 回复于 2014年03月09日

回复7楼@tinyfool:
我简单说一下我做过的东西,供参考:

1,一个ipad上的pdf表单生成器。
可以所见即所得的在ipad上为pdf添加文本框,单选/多选。还可所见即所得加入enable/disable,和表单验证。
表单生成后,保存成xml,和pdf一起被调用,供用户在ipad上填写和保存表单。
我们要维护五六十个类似表单,还要经常更新。没有这个之前,我们编程实现一个在ipad上的多页表单,大概需要两天时间,而且这个表单还不能太复杂,否则开发时间更长。
由于我们的程序还有windows版本,结果同一个表单还要在windows上实现一遍.
现在时间缩短到一天可以做三到五个表单的样子。
这个表单生成好后,可跨平台使用。做好一个表单后,把xml和pdf引入windows上的程序中,读取和显示即可。
这套表单引擎,由于用起来很爽,目前已经被应用于多个国家的子公司类似项目里。

2,ipad上的report engine.
有些类似缩微版本的Jasper Report,可以在ipad上,所见即所得的设计report。添加表头,表尾,添加表格,文本,把程序的数据映射到report内,并内嵌表达式引擎,可以进行简单的数学和逻辑运算并显示结果,可以根据运算结果,显示或隐藏某行/列或某文本,或者是否显示某一页等等。
以前的report engine,是把位置信息保存在plist里,编程来绑定数据并显示report,可以想象吗,每个report都有一大堆代码,最后堆砌出近万行代码,垃圾如山几乎无法维护...还有在做report时,为了对齐和稍微修改一下位置,不断的编译和运行代码...

3, 数据计算引擎。
我所在的是一家保险公司,经常推出新险种。每推出一个,就会有一套excel,用来根据年龄,性别,以及选择的plan和保额,来计算保费和相关保险利益。而公司的app(ipad上和windows上),就得添加这个险种,并根据excel,来写程序,把保费计算出来,把数据显示到report里去。
这个计算保费和相关数据的模块,在我们这里就叫做quotation calculate engine.
根据保险产品的复杂程度不同,excel有时候只是单页sheet,有时会很大,多个sheet,每个sheet七八百行。
以前的这个计算引擎是纯手工编程计算,或者是把计算结果直接存在数据库里调用。做一个复杂产品的开发,需要近一周到两周时间。
我近期已经做完的版本,是把excel直接生成xml,并在ipad上,解析excel里的表达式并求值。已经成功完成多个product,完成一个平均一天到两天时间。
这个计算引擎是用c写的,也是跨平台的,共用于windows和ios平台上。
当然,实际产品还要复杂一些,需要考虑数据的输入输出,和验证等等。还有一些扩展就不多说了。

以上完成的东西,有以下特点:
1, 在ipad上,拖拖拽拽,就可以实现基本功能。那个计算引擎,也有一个类似excel的编辑界面,用于编辑公式和数据。
2, 不懂编程的同志,经过简单培训后,也可以用这个来做东西,然后email给我xml就可以了。例如表单生成器,曾经忙的时候,我们找了测试组的同志来帮着做表单,讲一讲就会用了。

附言:
我不喜欢写程序,我希望有更多的人,不需要懂得编程,但能帮我写程序。
理想是,稍微懂一点excel的人,经过一到两天的培训后,在咖啡厅拿着一个ipad,对着设计文档,就可以把一个app的90%的开发工作都做了(这里不包括美工)。我只设计核心模块,用来支持这种作业方式。
那样,我岂不是找几个实习大学生,用很小的代价,就可以赚钱了吗......

tarlight 回复于 2014年03月10日

。。。我觉得学个js或者ios之类的客户端开发应该就能有了解了。。?

我觉得《深入浅出nodejs》里似乎就有些部分可以作为参考看,此外还有一本《javascript异步编程》,也挺好看的

尼克徐 回复于 2014年03月10日

谢谢楼上的回复!看来nodes.js是可以弄来琢磨一下的了...

在这里隆重推荐这本书:Event-Based Programming: Taking Events to the Limit (Ted Faison)
该书是写event base programming和component based programming的经典之作,我只看了20多页,对模块间耦合的理解就超过了以前的认识总和。虽然是本老书,但是太值得读了!
参考amazon上的评价:
I have over 100 books about many aspects on computer science and software development. I've acquired this book years ago; in that moment it had transformed the way I wrote code. Never read nothing better about couple and cohesion.
Before the rising of parallel frameworks (.net) the methodology Ted Faison brings in this book made me write quicker and so readble algorithms with threads, etc. Still contemporary I mean...
I poetically would say it is fair read this one!

alt text

本帖有11个回复,因为您没有注册或者登录本站,所以,只能看到本帖的10条回复。如果想看到全部回复,请注册或者登录本站。

登录 或者 注册
相关帖子

[顶 楼]
|
|
[底 楼]
|
|
[首 页]