OC

Knowledge OS
登录 注册
全部话题 移民 创业 iOS Mac Objective-C Swift Android 招聘 求职

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

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

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

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

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

2楼 ·
sycx 回复于 2014年03月08日

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

3楼 ·
贵人 回复于 2014年03月08日

nodejs就是

4楼 ·
tinyfool 回复于 2014年03月08日

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

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

5楼 ·
尼克徐 回复于 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)

6楼 ·
blackzwei 回复于 2014年03月08日

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

7楼 ·
tinyfool 回复于 2014年03月09日

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

8楼 ·
zieaziea 回复于 2014年03月09日

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

9楼 ·
尼克徐 回复于 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%的开发工作都做了(这里不包括美工)。我只设计核心模块,用来支持这种作业方式。
那样,我岂不是找几个实习大学生,用很小的代价,就可以赚钱了吗......

10楼 ·
tarlight 回复于 2014年03月10日

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

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

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

AltStyle によって変換されたページ (->オリジナル) /