精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-05-31
本系列由于某些原因没有继续完成,可能等过一段时间再完成。 http://qiezi.iteye.com/blog/163182的comments中提到的async_call与这里的思路有类似之处,虽然那是在讨论ErLang。 众所周知,AJAX虽然提高了用户体验,并提出了一种创新的web应用架构模式,但是也带来了一个问题,就是异步编程非常复杂。 单纯一个异步XHR调用或许还不算什么,但当多个XHR交织的时候,复杂性就指数级上升。例如,考虑这样一个人造的例子: 一个股票页面(带劲吧?) 首先从一个数据源读取当前用户所持有的股票种类和数量。 然后读取这些股票的当前价格。由于用户可能持有不同市场的股票(如中国A股、中国B股、香港股票、NADQ……),每个市场数据来自不同的xml源,其格式可能不同。 每个xml源可能使用不同的xslt来转换到html片段,比如中国股票与NADQ股票就用不同的xslt来转换。但有些可能共用相同的xslt,如A股和B股的格式差不多,所以用同样的xslt转换。又,香港股票xml源是首先用一个xslt转换成与A股和B股一样的xml格式,然后再用前述的xslt转换为html片段。 页面还会根据所有数据计算出用户的当前在每个市场上市值,以及总市值。 好了,以上这些,如果用传统的异步方式做,你会看到多少callback漫天飞舞呢? 而且我们知道,异步callback是非常难以调试和跟踪的,你经常不知道问题出在哪里,而且很多时候异步问题是很难重现的。 如果异步编程能像同步编程一样清晰,一样易于调试,那该多好! 2005年年底的时候,我突发奇想,借鉴Java 1.5新增的Future类,揉合JavaScript的特性,创造了AJAX的Future编程模式,使得可以用同步编程的编码方式进行异步编程,并可在同步和异步下自由切换,在同步状态下进行业务测试,保证业务实现的正确性,然后切换到异步,进行网络和负载的测试! 在以后的数天里,我会将这种方法与大家共享,也希望大家能共同验证这一模式的可行性! 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-05-31
所谓的Comet服务器???
|
|
返回顶楼 | |
发表时间:2007-05-31
2005年能想到这个IDEA,那么LZ也算是比较超前的人~
赞一个! 期待中 |
|
返回顶楼 | |
发表时间:2007-05-31
sp42 写道 所谓的Comet服务器???
什么是Comet服务器? :-< 我的这个模式是为JavaScript准备的,是纯JS的,与服务器端没有关系。 |
|
返回顶楼 | |
发表时间:2007-05-31
似乎你前面和后面不搭边啊
前面的例子说明的似乎是xslt太多,以及js难于调试 这些和AJAX的异步似乎关系不大,AJAX中易于出错的应该是callback的处理部分吧,这个和异步有什么关系呢?换成同步的,出错的一样是你callback部分吧? |
|
返回顶楼 | |
发表时间:2007-05-31
PS:兄弟,过去都快两年了,你才开始预告啊,我们要再等多长时间?
|
|
返回顶楼 | |
发表时间:2007-05-31
小Tips:异步变同步, 第一件事可能就是改名 Ajax的A不能再用啦
|
|
返回顶楼 | |
发表时间:2007-05-31
j5中一般用Future接口的get方法来等待并取得执行结果
但在js中,任何一个函数执行期间,整个浏览器都会没有响应。 对于执行时间短的,感觉不出来,而如果像Future那种方式来等待网络访问结果,那用户体验就会很差。 |
|
返回顶楼 | |
发表时间:2007-06-01
birdjavaeye 写道 j5中一般用Future接口的get方法来等待并取得执行结果
但在js中,任何一个函数执行期间,整个浏览器都会没有响应。 对于执行时间短的,感觉不出来,而如果像Future那种方式来等待网络访问结果,那用户体验就会很差。 所以是借鉴,而不是照搬,呵呵。 |
|
返回顶楼 | |
发表时间:2007-06-01
cherami 写道 似乎你前面和后面不搭边啊
前面的例子说明的似乎是xslt太多,以及js难于调试 这些和AJAX的异步似乎关系不大,AJAX中易于出错的应该是callback的处理部分吧,这个和异步有什么关系呢?换成同步的,出错的一样是你callback部分吧? 我说的问题大体上是这样,由于业务比较复杂,所以异步的callback增多,并存在多级互相依赖的关系(例如一个计算总市值的方法实际上要等待多个xml的异步调用结束后才能执行),这实际上导致异步编程模式影响了业务代码的书写、阅读、测试和维护。 |
|
返回顶楼 | |