Paip.Php Java 异步编程。推模型与拉模型。响应式(Reactive)”编程FutureData总结... 1

 

Paip.Php  Java 异步编程。推模型与拉模型。响应式(Reactive)”编程FutureData总结... 1

1.1.1       异步调用的实现以及角色(:调用者 提货单) FutureData. 1

1.1.2       异步编程接口设计(,回调函数, 事件触发)1

1.1.3       异步编程的优缺点... 2

1.1.4       推模型与拉模型... 2

1.1.5       “响应式(Reactive)”编程。响应式框架... 2

1.1.6       异步同步化... 2

1.1.7       img标签异步... 3

1.1.8       Php异步调用fscok,popen()函数, CURL扩展, fscokopen()3

1.1.9       Java的异步实现... 3

1.1.10     JavaScript的异步编程模式... 3

 

 

Paip.Php Java 异步编程。推模型与拉模型。响应式(Reactive)”编程FutureData总结

 

作者Attilax 艾龙,  EMAIL:1466519819@qq.com
来源:attilax的专栏
地址:http://blog.csdn.net/attila

1.1.1  异步调用的实现以及角色(:调用者 提货单) FutureData

,实现异步调用的角色有如下三个角色:调用者 提货单真实数据

一个调用者在调用耗时操作,不能立即返回数据时,先返回一个提货单.然后在过一断时间后凭提货单来获取真正的数据.去

Java多线程实现异步调用_数据库_开发_比特网.htm

1.1.2          异步编程接口设计(回调函数, 事件触发)

 

 

W3C原生接口的设计经常采用回调函数和事件触发形式,前者在调用异步函数时直接传入回调函数作为参数,后者在原始对象上绑定事件处理函数,异步函数出错时一般不会抛出异常,而是通过调用错误回调函数或触发错误事件。从语义上看,回调函数形式是为了获取某一个函数的运行结果,而事件触发形式通常会用于表示某些状态变化(加载、出错、进度变化、收到消息等等)。个人或团队开发小型项目时可以参考这两种形式的接口设计

 

1.1.3          异步编程的优缺点

异步编程的优点是显而易见的,异步编程你可以实现前面例子中一边运行一边更新的效果;或是利用异步IOUI运行更加流畅,比如通过XMLHTTPRequest的异步接口获取网络数据,在获取完成后再更新界面,在异步获取数据的时候不会阻碍UI的更新。在众多HTML5设备API设计中都充分采用了异步编程模式,例如W3CFile System APIFile APIIndexed Database APIWindows 8APIPhoneGap API,服务端脚本Node JS API等等。

异步编程也有一些缺点,造成深度嵌套的函数调用,破坏了原有的简单逻辑,让代码难以读懂。

1.1.4  推模型与拉模型

平时我们使用最多的便是“交互式(Interactive)”的编程方式,采用的是组件之间的相互调用来表现逻辑。例如,对象A向对象B请求数据并等待返回,待对象B完成并返还数据之后A才继续进行后面的操

交互式(Interactive)”的编程方法,采纳的是组件之间的互相挪用来表现逻辑。比方,工具A向工具B哀求数据并期待返回,待工具B实现并返还数据以后A才继承进行背面的操纵。

1.1.5   响应式(Reactive)”编程。响应式框架

 

交互式编程对应的便是响应式(Reactive)”编程

响应式编程是一种基于“改变”的编程方式。例如在交互式编程中,A = B + C这样的表达式意味着将B与C之和赋给A,而此后B与C的改变都与A无关。而在响应式编程中,A会去“响应”B或C的变化,即一旦B或C改变之后,A的值 也会随之变化。响应式编程的一个典型应用便是GoF23中的观察者(Observer)模

在之前的.NET框架中并没有对这样一种编程模型指定“标准化(Formallized)”接口,不过在.NET 4.0的基础类库中增加了IObservable及IObserver接

异步编程与响应式框架 -initphp的代码世界,专注PHP,Java,Android开发 - 博客频道 - CSDN.NET.htm

1.1.6          异步同步化

第三方的异步接口一定程度上解决了代码逻辑与执行顺序不一致的问题,但是仍然有些情况下,让代码难以读懂。我们还以1.1节中的代码为例,updateAsync即使采用PromisesAPI并不会更好理解,而代码实现的功能其实就是一个很简单的循环+更新的功能。这时候就需要一些异步同步化来帮助实现。

所谓异步同步化顾名思义就是采用同步形式的语法实现异步调用。这里简单地介绍一下老赵的Jscex,它是一个纯JavaScript实现的库,可以在任何浏览器或JavaScript环境中运行

1.1.7          img标签异步

嵌入一个img标签,src指向要执行的耗时脚本。
这种方法最简单,也最快。服务器端不用做任何的调用。
但是缺点是,一般来说Ajax都应该在onLoad以后触发,也就是说,用户点开页面后,就关闭,那就不会触发我们的后台脚本了。
而使用img标签的话,这种方式不能称为严格意义上的异步执行。用户浏览器会长时间等待php脚本的执行完成,也就是用户浏览器的状态栏一直显示还在load。
当然,还可以使用其他的类似原理的方法,比如script标签等等

1.1.8          Php异步调用fscok, popen()函数, CURL扩展, fscokopen()

使用fscok实现异步调用PHP _ 风雪之隅.htm

PHP异步调用实现方式 - PHP教程_PHP编程_PHP开发技术文章 - 红黑联盟.htm

PHP如何实现异步数据调用 -- 简明现代魔法.htm

1.1.9          Java的异步实现

:ZynapticReaction 是一款灵活的Java异步编程框架,

 

异步加载数据的三种实现- JAVA编程语言程序开发技术文章- 红黑联盟.htm

 

1.1.10 JavaScript的异步编程模式

于内嵌函数的介绍请看JavaScript世界的一等公民-函数),然后调用了updateLater,在这个函数中先是更新output结点的内容为i,然后通过setTimeoutupdateLater函数异步执行。这个函数的运行后,你会看到UI界面上从0999快速地更新过程,这就是异步执行的结果。

可见,在JavaScript中异步编程甚至是一种必要的编程模式。

 

 第三方异步接口设计

采用回调函数形式的接口写代码,会带来比较严重的函数嵌套问题,就像著名的LISP一样,引入大量有争议性的括号,让本来是前后顺序执行的代码段形式上变成了一层套一层的结构,影响了JavaScript代码逻辑的清晰性。解决这个问题,要让逻辑上的先后顺序执行的代码,在形式上也是顺序的,而不是嵌套的,这就需要更好的异步接口设计方案。

CommonJS是一个著名的JavaScript的开源组织,目标是设计与JS环境无关的

 

 

JavaScript异步编程 - 扈亚楠(Java) - 博客频道 - CSDN.NET.htm

 

posted @ 2014-01-21 23:08  attilaxAti  阅读(300)  评论(0编辑  收藏  举报