第三次浪潮:面向应用的计算模型的变革 - Blogn - 记录个人历史

来源:百度文库 编辑:神马文学网 时间:2024/05/01 20:19:49
第三次浪潮:面向应用的计算模型的变革
作者:左轻侯  4771字节 点击:287  回复:0  所属分类:技术随笔
创建时间:2006-07-28 00:39:33  最后修改时间:2006-07-28 00:39:33
第三次浪潮:面向应用的计算模型的变革
左轻侯
2005.9.12
在过去的5年中,我使用得最多的语言是Delphi和Java,也就是说,我的大部分时间都在和面向应用的系统打交道。在对这些年来的技术革新进行回顾后,我认为,在这些技术革新中,最主要的一条线索就是计算模型的变革,它主导着编程语言、数据库、组件技术以及其它方面的技术革新。
这条线索可以被总结为如下几个阶段:
 第一次浪潮:从单机向Client/Server的转变
最早的应用系统模型是单机的,也就是说,数据库和应用软件位于同一台机器上。事实上,这一模型的一个明显特征就是数据库和编程语言是混然一体的。这个时代最流行的数据库系统是dBase/FoxBase/FoxPro系列,在“真编译”的FoxPro出现之前,应用程序的代码必须在dBase/FoxBase的环境中被解释执行。
随着企业内部网络的逐渐流行,多机共享数据库的要求也日益强烈。在这种情况下,原有的单机数据库出现了一些新的变化:将数据库文件放在网络的某个共享目录下,并通过某种加锁机制(最常见的是增加一个记录加锁状态的索引文件)来解决并发访问引起的冲突。FoxBase/FoxPro的后期版本,以及当时另外一个流行的数据库Paradox,都是通过这种方式实现了简单的网络数据库功能。
当然这只是一种过渡方式,随后的大型关系型数据库的普及,最终成功地完成了单机模型向Client/Server模型的转变。关系型数据库通过复杂的加锁和缓冲机制,解决了密集并发访问的问题,通过对事务处理的支持,保证了企业必需的关键业务的可靠性。同时,关系型数据库通过Socket方式向外提供访问接口,从而彻底地将应用软件从数据库中独立出来。
这个时代最著名的数据库,是我们今天耳熟能详的Oracle、DB2、Sybase、MS SQLServer、InterBase等等。Delphi是这一时代最成功的构建应用系统的编程语言。而Intranet的普及,是Client/Server模型必不可少的条件。
 第二次浪潮:从Client/Server向Brower/Server的转变
随着应用系统的复杂性的增长,尤其是另一个重要的条件——Internet的普及——的成熟,应用系统的模型出现了新的变化。应用软件又开始分离为两个层次,即表现层和逻辑层。加上数据库,我们就看到了著名的三层架构的划分:负责UI的表现层,负责业务逻辑的逻辑层,以及负责数据持久性的数据层。Borland的MIDAS(Middle-tier Distributed ApplicationServices,从Delphi6开始改名为DataSnap)技术是这种模型的典型代表。
但是,真正成为主流的是另一种意义上的三层架构,即Brower/Server模型。在B/S模型中,表现层不是由专门的瘦客户端(ThinClient)来实现,而是由Web Brower+WebServer来实现。B/S模型实现了更加彻底的零客户端,易于发布,易于维护,而且理论上可以跨越任何网络,因此迅速地占领了应用系统的大部分市场。
在这里,我们可以回顾一下一桩著名的公案。当Netscape在浏览器市场上占据绝对优势时,Microsoft不惜动用业务低潮储备金,投入无数资源打造IE,并最后驱逐了Netscape。是什么使得Microsoft如此紧张?因为在B/S主宰的市场中,应用软件跟操作系统已经无关。如果Microsoft不能占领浏览器市场,它在操作系统上的优势就会被架空。从这里,我们可以看到计算模型的变化对上一个时代的霸主造成的致命影响。
在这一时代,传统的关系型数据库仍然占据数据层,Microsoft的IE则在浏览器市场占据了决定性的优势。在逻辑层这一市场中,基于J2EE的解决方案以惊人的速度成长,成为这一时代的明显特征。而Microsoft虽然也推出了基于DCOM/COM+的解决方案,但始终未能占有主导权。这一时代最成功的编程语言当然是Java。
 第三次浪潮:从Brower/Server向RIA的转变
B/S架构的缺陷从一开始就体现出来了:基于Html的表现层能力有限,而且Http是一种非连接的协议。因此,B/S并没有能够完全取代C/S架构,在很多场合,我们仍然需要一个在本地运行的客户端。彻底解决这一问题的答案是RIA。
RIA(Rich InternetApplication)似乎并不是一个正式的名称,但在本文中,我将它作为这种模型的通称。RIA本质上是B/S的改进,不同之处在于,RIA不但可以通过解释Html(或其他脚本)来创建用户界面,而且可以提供已编译的客户端应用程序的运行环境。换言之,客户端可以拥有本地应用程序的能力,同时又象Web一样易于发布和维护。目前,Macromedia的Flash/Flex和Mozilla的XUL都是RIA解决方案,但更令人期待的似乎是来自Microsoft和IBM的解决方案。
Microsoft的Longhorn(已经正式命名为WindowsVista)是一个雄心勃勃的计划。Microsoft定义了一种新的标记语言XAML,XAML可以内嵌程序代码,或引用外部的程序代码。XAML和相应的程序代码被下载以后,由图形引擎Avalon重建一个本地的用户界面。Microsoft宣称,Longhorn应用程序将完全建立在XAML的基础之上,不论它们来自本地还是远程机器。这样就彻底模糊了本地应用和远程应用之间的界限。
RCP(Rich ClientPlatform)是IBM基于Eclipse的解决方案。事实证明,Eclipse决不仅仅是一个供开发人员使用的IDE,它还是一个强大的客户端平台。在RCP架构中,Eclipse可以从远程机器上下载XML格式的界面文件和Java代码,由SWT引擎重建本地界面,其机制与Longhorn类似。IBM正在着手将著名的Lotus全部转移到RCP架构上,这个名为Workplace的新产品也许是有史以来最大的RIA产品。
RIA之战最吸引人的地方在于,它正在进行中,有许多问题悬而未决。例如,RIA和B/S模型的一个明显区别是,B/S基于一些平台中立的标准,例如http和html标准都不是私有的。但Longhorn和RCP似乎是不可调和的,因为无法在Eclipse中执行.NET代码,就象无法在Avalon中执行Java代码一样。这会导致软件界的彻底分裂吗?Microsoft的计划是最宏伟的,但是步伐缓慢,而低调的IBM已经通过Eclipse的繁荣悄悄占领了先机。不过,Microsoft的长处是后来居上。这一次还会重演Windows 和OS/2战争的结果吗?