ajax(Asynchronous JavaScript and XML)最近比较火,这几天粗略的研究了一下,通俗地描述这项技术就是用 JavaScript 向服务器获取数据,然后更新网页的局部,而不是刷新整个网页。开始感觉激动的不得了,难道对于web开发,强大的c/s开发方式到来了吗?随后我阅读了很多相关资料,也手工调试了例子,感觉并不像网上很多人说的那么神,其实它的理念也不是什么新鲜东西。对于它的原理我不想多说,网上这方面的资料很多,我这里简单总结一下对它的认识理解。
其实任何一项技术都不是万能的,运用的好就是好技术,运用得不好就不是好技术,ajax也是一样,时时和服务器交互数据,而不用刷新页面,对于解决某些问题确实很好,但我认为他不能替代目前b/s提交整个页面的模式,主要原因是:
1。网络的限制,目前广域网的传输速度和流量还决不能和局域网相提并论,如果全部使用ajax,一定会出现效率问题。
2。ajax完全依赖JavaScript脚本语言,这也是一种限制,JavaScript是基于对象而不是面向对象语言,它无法发展成象vb、dephi等真正c/s编程语言那么强大,那么对于发展胖客户端,到一定程度就是一种限制。
3。对浏览器的依赖,虽然ajax表面看上去,确实很想c/s编程模式,可以随时和服务器交互数据,但c/s是基于操作系统来开发的,而ajax是基于浏览器解析的,核心还是b/s模式向后台提交-前台解析的原理,伴随微软xaml时代的到来,当前浏览器如果被淘汰,它的未来我感觉很危险。
那么ajax能干什么呢,我认为它的使用应该是以当前的b/s的页面提交开发模式为主,以axaj为辅,即开发框架的中某些问题可以用ajax来解决,和后台交互频繁,而且数据量不是很大的就可以使用,比如web页面的grid、tree等复杂组件可以使用,避免频繁和后台交互。而框架主体部分,比如一般的数据维护、明细显示页面等,还是要使用提交页面然后显示的b/s方式。
我一直认为b/s的view层开发,组件化一定是未来的方向,甚至我认为浏览器会被淘汰的,c/s方式的胖客户端终究有一天到来,这几年的java框架的发展,也证明了这一点,比如jsf、tapsty、echo等,微软的lnghorn的推出,似乎也证明了这一点。ajax的流行说明往这个方向又迈进了一步,但我认为它只是一个过渡的技术,伴随网络和硬件的发展,最终谁能发展成为b/s编程语言的delphi、vb,还要拭目以待。