带镣铐的舞者:从两方面看AJAX与B/S
http://tech.ddvip.com 2007年08月16日 社区交流
内容摘要:近来遇到了这样的一个应用场景,某企业多年以来一直使用PowerBuilder开发的系统,随着公司的发展,决定将老的信息系统由C/S转为流行的B/S架构
AJAX使用以下这种的方法来“摸拟”出模式窗体:将主窗体与对话框“合二为一”,对话框在HTML中就是一个div元素,平时是隐藏的,需要时再显示它。微软的AJAX Control Toolkit中甚至为这一功能设计了一个控件。诸如此类的小伎俩,在B/S开发中不胜枚举。
可以看到,许多在C/S轻而易举就可实现的功能,在B/S中要实现则大费周章。
(2) 特殊的运行环境——浏览器
B/S系统的前端运行环境是浏览器,这就带来了诸多的限制,不能干许多事,比如直接访问硬件(例如打印机),也无法充分利用硬件的资源。例如,现在的新电脑都是双核的,你能直接用JavaScript加HTML写出一个多线程程序以充分利用这两颗“奔腾的芯”?
而C/S系统则直接运行在OS(操作系统)之上,可以调用OS提供的所有功能,这种限制就不存在了。
(3)尴尬的Web客户端编程语言——JavaScript
传统的C/S程序,可以使用为数众多的各种开发语言,尤其是象C++,Java,C#之类主流面向对象语言,功能强大,使用方便,各种开发工具齐备,已非常成熟。
与此相反,B/S前端所使用最多的编程语言JavaScript,不仅不让人喜欢,甚至让许多程序员“恨之入骨”,将“用JavaScript编程”看成是件苦差事。
让我们来看看JavaScript的两大硬伤。
首先,缺乏清晰而统一的编程模型。
JavaScript虽然名字中有一个Java,并采用了类似的语法,但与真正的Java并无关系。唉,她本身是一只丑小鸭,总想着攀上天鹅这门亲,却没想到别人并不买账。
JavaScript用到了许多对象,但说它是面向对象的吧,又实在难以令人信服(面向对象编程的基本单元是类),比如它没有类似于C#等主流面向对象语言的关键字class,到处是一个个的函数,这就使所有的代码难于以类的方式清晰界定;同时,它又不是结构化的(结构化编程的基本单元是函数),因为浏览器在解析HTML文档时,是采用流式解读方式,从而导致一些JavaScript代码被放在函数之外,在解析HTML文档时直接执行,而另一部分放到函数中的代码,则多采用事件驱动的方式运行,这就带来了复杂的程序执行流程,远不如纯结构化编程中统一采用函数调用的编程方式简洁。
来源:天极 作者:金旭亮 责编:豆豆技术应用