tekynet 阅读(870) 评论(0)

从97年左右开始,分布式软件分化为B/S和C/S这两种泾渭分明的设计架构。B/S架构的软件的用途主要是一些Internet应用,而C/S架构的软件用途则主要是一些企业应用。但那时候B/S应用还比较少,大量的分布式应用依然还是C/S架构。而到了2000年以后,随着Internet的普及,B/S应用软件的发展速度越来越快。因为B/S程序有一些天生优势,比如无须大规模部署客户端,导致很多企业应用也纷纷转向采用B/S架构。那时候B/S架构一度成为先进技术的代名词。而在近一到两年来,一个新名词在B/S软件开发中慢慢升温直到大红大紫,那就是Ajax。很多人觉得Ajax是新瓶装旧酒,因为Ajax所采用的技术早在几年前就有人使用,只是那时候还没有这样一个响亮的名字而已。但我觉得,不应该站在技术的角度去看待Ajax现象,Ajax的流行不是因为出现了一个什么新技术,而是代表了用户对体验需求的提升,用户已经不满足于有这个功能就可以,而是还要求要用得舒服。

从软件架构的发展趋势来看,以前纯B/S结构的应用程序,由于客户对体验的需求提高,导致客户端越来越复杂,各软件开发商都在想方设法的增加客户端的处理量,Ajax技术的流行正是这个结果。而从纯C/S结构的应用来看,由于受到客户对无须部署的要求和一些开发上的限制,导致客户端越来越瘦,除了完全转换到B/S的开发商以外,剩下的也慢慢转成了C/S/S这样的结构(比如SmartClient技术)。

如果说B/S代表了Internet应用,而C/S代表了企业应用(其实企业应用对Internet的依赖也慢慢增加)。则近十年来的发展趋势可以证明,无论是互联网应用还是企业应用,其实大家都在向着同一个中间点靠拢:RIA。

RIA的全称是Rich Internet Application,直接翻译过来就是富互联网应用。这里的富其实是一个专有词,相对于Thin(瘦)来说的,指的是应用软件客户端的复杂程度。我认为一个可以被称之为RIA的应用必须具有以下几个特点:

1、零部署

客户无须安装任何专用的软件,可以用一个通用解释程序负责界面的展现和程序的执行,比如浏览器可以展现HTML,并可以执行JS脚本。

2、良好的用户体验

要求在大部分情况下能达到和桌面应用差不多的客户端体验。包括操作便捷性,响应速度等。除了无全屏刷新这种基本要求外,对流媒体,矢量图形,即时动画等支持也是很必要的。

3、最好能跨平台

如果能支持Windows的话,这个要求不是必须。但是如果能支持多种操作系统,则可以应付将来可能会发生的关于操作系统的变化。

其实总而言之,RIA也就是在保留B/S架构的所有优势情况下,尽量提升瘦客户端的处理能力,以达到和桌面应用差不多的效果。

再来看看到底有那些技术符合这几项要求。

SmartClient:微软在2002年大力推广的技术,的Winform,后台不直接连数据库,而是通过远程调用(比如WEB SERVICE)连接应用服务器。优点是可以完全达到桌面级的用户体验,但是主要缺点是需要安装客户端,虽然客户端可以通过自动更新等机制完成部署,但是终归是没有零部署爽快。 Framework,也很难跨平台(但不是没有可能)。

Ajax:Ajax可以看成是普通的B/S应用的增强版,继承了所有B/S应用的优点,天生跨平台。但是,即便是最近Ajax大红大紫,但是我觉得Ajax还是有很致命的缺陷。那就是受限制于HTML和Javascript。HTML起初是为浏览静态文档而设计的,并不适合于提供内容丰富、交互性强和数据驱动的应用程序,而且Javascript开发复杂,运行速度慢,无法适应未来对更复杂的软件应用要求。

WPF:如果除去对客户端操作系统的要求,我觉得WPF可能是最好的RIA平台。她无与伦比的界面展现能力,让任何人看了都会心动。但因为她对客户端的要求太高,只有可能会是下下一代的RIA主流,而在近三年内都无法成为RIA的首选平台。

Flex+Flash:Flex是Adobe在收购Dream Weaver之后推出的以Flash为核心的RIA整体架构。Flex拥有成熟的技术,庞大的体系和数量众多的Flash设计人员作为后盾。但我觉得Flex成也萧何,败也萧何。Flash是二进制的,如果整个应用完全用Flash来搭建的话,那么搜索引擎无法搜索到里面的任何内容。当然,这个缺点对企业应用来说无所谓。

Silverlight:原名是叫做WPF/E,也就是WPF的一个精简版。虽然Silverlight和WPF都是采用XAML作为界面描述语言。但是他们的体系有很大不同, 3.0来进行解释和执行代码。而Silverlight则是专门由一个只有4M大小的浏览器插件来进行绘图和运行程序。虽然Silverlight体积不大,但是功能却很强,不仅可以将XAML表述为高质量的图形和动画,运行时,支持VB,PYTHON,RUBY等动态语言,还支持LINQ等高级特性。而且还是跨平台的。

就目前来说,我觉得Flex和Silverlight是目前最有前途的两个RIA平台。Flex的优势是成熟的Flash技术和大量的设计人员,而Silverlight的优势是更先进的技术和大量的开发人员。未来或许是一场设计人员vs开发人员的对决。

下面预测一下未来软件开发架构的趋势。

1、虽然RIA将会成为未来的最主要的软件使用方式,但桌面应用依然存在。对于一些比较特殊的需求,比如对于需要极大数据量的传输,需要极高的操作响应速度,需要客户端进行极其复杂的数据处理等领域,却不得不交给专门开发的的客户端来进行处理。所以,我觉得未来依然会有SmartClient这样的软件生存机会。Adobe不是也还要推出Apollo吗?这是Adobe向桌面领域进攻的一个标志。

2、由于客户端处理能力变强了,所以服务器端慢慢向功能单一化发展。WEB服务器不再过多考虑如何展现数据,而是专注于如何提供数据。Web服务会大行其道,而像REST这样的纯资源服务也将会慢慢多起来。

3、整个Internet会变成一个巨大的应用服务器。提供各种各样的标准格式的数据管理接口,接口趋向于稳定和高效率。

4、动态语言作为使用方便,高效率的黏合器,会运行在各种各样的客户端上。而动态语言的无须编译,开发方便,灵活的特性将得到极大的发挥。

5、HTML和Ajax面临淘汰。


发表评论
切换编辑模式