论坛首页 Web前端技术论坛

UI展现技术总结

浏览 58286 次
该帖已经被评为精华帖
作者 正文
   发表时间:2009-04-15   最后修改:2009-04-15
我个人工作中有过web、RCP、RIA等方面的经历,对图形界面技术以及其趋势,有过深入的思考,这里写下我的见解,欢迎大家讨论。

下面我们将讨论CS ajax RCP RIA等

一、过去技术总结

CS技术:CS技术的C部分,本质上是用某种语言,调用本地widget作为图形用户显示界面,并用某种语言相应事件处理和业务处理。
BS技术:BS技术的B部分,本质上是用HTML,调用(通过HTML解释器)容器内的widget作为图形用户界面,并且用某种语言相应事件处理和业务处理。

CS技术的缺陷是C部分庞大,部署麻烦,并且平台兼容性不好。BS的缺陷是B部分信息展示能力太弱,并且(通用的JS语言的)事件和业务处理语言功能太弱。比如随着企业的业务发展,SAAS已经是一种实际市场:一方面是众多中小企业,需要便宜强大的企业信息服务平台,而同时不必负担开发费用,维护费用,服务器费用等等。另外一方面阿里软件、浪潮软件等公司已经对此市场进行了很多投入。但是BS模式不能满足企业级应用复杂的信息表现形式、不能满足操作的快捷性、软件的强壮性等。

二,AJAX技术的缺陷

A,BS软件不适合复杂的页面表现形式
首先,最简单的树在BS里面都是一个不简单的问题,还有各种各样的表格,以及表格的排序、可编辑表格。。。。等等数据表现形式
其次,多个widget或者页面之间数据互相关联,有一定业务联系,在BS上表现这种关系的时候,可以实现,但是编程量比较大。
B,BS不能满足操作的快捷性
BS也可以实现快捷键,但是限于简单的数据表现能力,很多业务不得不通过比较笨拙的方式表达出来,限制了快速便捷的操作,这些对操作熟练度比较高、操作速度比较快的企业需求,也有些不满足。
C,BS软件的强壮性差
如果用BS软件实现了AB,那么需要其业务和事件语言操作比较大量的数据,进行比较复杂的业务运算。另外,还需要此语言对HTML的进行很多“修改”操作。在我过去实际的应用中,我发现JS语言的能力实在是相当有限,首先是大量数据的操纵能力他不行,其次复杂的运算能力他也不行,第三过多的HTML操作,导致内存问题很严重,浏览器容易崩溃。

三、富客户端技术

面对这些缺陷,很多人思考了:我们需要一个有BS和CS优点的图形技术——跨平台的、快速部署的、有强悍的展现能力和强大的业务事件语言。
在我的想象中
1,要实现跨平台,这种UI技术必须将widget组件包含在一个容器中提供出来,这个容器要么在任何操作系统人都有,要么随URL请求一起被下载过去。
2,要实现快速部署,这种UI的表现形式最佳是文本,UI类似HTML那样被分割成很多HTML(JSP/ASP/PHP/....)文件,这个UI被请求以后,在容器内被解释和展现。事件脚本随之被下载,到客户端执行。
3,要有强悍的展现能力,他的widget必须丰富
4,要有强大的业务能力,他的客户端事件和业务语言必须强大。另外,这种语言也必须随容器提供或者OS上具有。

IBM提出了RCP概念,ADOBE提出了FLEX,SUN提出了webstart,微软提出了XAML和银光。

1,RCP
RCP是一种伪富客户端技术,他其实和过去的CS技术没有区别。他相对之唯一的优势就是跨平台。基本上就是CS+widget容器
2,FLEX
基本符合所有要求
3,XAML和银光
XAML不跨平台,基本符合所有要求。鉴于此,微软提出了银光这个东西
4,webstart
对于条件1,通过装虚拟机实现
对于条件2,webstart将所有UI打包到一个文件中,第一次使用的时候一次性下载过去,对网速要求很高。现在的网络条件用起来非常不爽——这种方式,UI同步的技术大家要注意:是全部同步还是差异同步,我并没有研究过。
对于条件3,已通过1实现,没问题
对于条件4:已通过1实现,没问题


四、另外

事实上,几乎所有的比较好的方案,都要求客户预先安装一个包,这个包提供了widget容器,UI解释器,以及强大事件和业务语言。因此我将上面这些方案和下面几种技术比较,

发现下面几种技术也有可取之处,这几种解决方案的思路都是一样的:widget容器我不提供,我提供一些解释不同widget的解释器,提供事件和业务语言。

python、ruby等的UI解决方案,通过一些对别的widget库的调用,来展现UI,UI的表现形式通常是DSL似的文本,另外通过语言本身提供业务和事件相应。这种解决方案和webstart类似。


按照上面我列出来的几个标准来看,我个人认为最好最成熟的就是flex(但我个人并没有FLEX方面的实际开发经验,有人说FLEX的组件太少,而且收费),其次是银光。

一个真正好的RIA,商业上的推广策略也是很重要的。因此银光也值得大家关注。
   发表时间:2009-04-16  
同样看好Flex,其实Flex还有一个至关重要的概念楼主没有提到:Flex + AIR的应用中,已经基本抹平了B/S、C/S的鸿沟。微软真正看重也是这个理念,.Net + SilverLight的组合具有同样的特性,09版MSN UI端就是SilverLight + .Net 3.5。

Flex和SilverLight对比来说,微软最大的优势就是PC上OS平台的绝对垄断,XP sp3后的Windows都是默认内置.Net 3.5,也就是说几乎所有Windows PC上都有.Net运行时环境,这是Adobe的AIR没法比的。Adobe创造性的推出了AIR运行时理念,却被微软彻底模仿,超越也仅仅是时间问题。

AJAX受限于js语言,虽然可能在企业应用上走不远,但互联网应用领域必然是轻量级AJAX框架的理想使用场合。

还有一个JavaFX,纯粹是先发后至的Sun炒冷饭的作品,注定成不了气候。JWS仍然还是Java平台C/S技术的简单改进,绝对不会成为RIA技术的主流。

对于RIA技术的选择,在企业应用领域,两年内跟着Flex走是明智的;互联网应用领域,jquery类轻量级框架和Flex技术应兼顾。
7 请登录后投票
   发表时间:2009-04-16  
应该找到一种能够跨越不同技术,不同语言,不同框架的解决方案.
否则语言一升级,平台一升级,以前的工作全废掉了,推倒重来.
再也不能干这种没有积累的事情了.
0 请登录后投票
   发表时间:2009-04-16  
ms在os上的垄断,对于应用系统来说,未必一定是优势.
因为人们会把操作系统的bug和应用系统的bug混在一起,事情反而不明显了.
0 请登录后投票
   发表时间:2009-04-16  
Flex要及早做好应对策略啊. 要不,慢慢要被silveright给商业了就麻烦了.

0 请登录后投票
   发表时间:2009-04-17  
fight_bird 写道
同样看好Flex,其实Flex还有一个至关重要的概念楼主没有提到:Flex + AIR的应用中,已经基本抹平了B/S、C/S的鸿沟。微软真正看重也是这个理念,.Net + SilverLight的组合具有同样的特性,09版MSN UI端就是SilverLight + .Net 3.5。

Flex和SilverLight对比来说,微软最大的优势就是PC上OS平台的绝对垄断,XP sp3后的Windows都是默认内置.Net 3.5,也就是说几乎所有Windows PC上都有.Net运行时环境,这是Adobe的AIR没法比的。Adobe创造性的推出了AIR运行时理念,却被微软彻底模仿,超越也仅仅是时间问题。

AJAX受限于js语言,虽然可能在企业应用上走不远,但互联网应用领域必然是轻量级AJAX框架的理想使用场合。

还有一个JavaFX,纯粹是先发后至的Sun炒冷饭的作品,注定成不了气候。JWS仍然还是Java平台C/S技术的简单改进,绝对不会成为RIA技术的主流。

对于RIA技术的选择,在企业应用领域,两年内跟着Flex走是明智的;互联网应用领域,jquery类轻量级框架和Flex技术应兼顾。


这个文章的核心理念是我2年前总结的,当你提到AIR的时候,我过去看了一下,另外试用了一下EBAY桌面和FINS的JE CHAT。感觉这个东西类似WEBSTART。都需要客户端一次性下载一个比较大的客户端。

这,不是0部署。

我希望真正RIA,是HTML++,增加了很多WIDGET控件,数据展现能力加强到和CS相当,JS语言强壮到和PYTHON RUBY  JAVA。。。。等语言相当。同时保持HTML按需获取UI和数据的特质。
0 请登录后投票
   发表时间:2009-04-17   最后修改:2009-04-17
bonny 写道
fight_bird 写道
同样看好Flex,其实Flex还有一个至关重要的概念楼主没有提到:Flex + AIR的应用中,已经基本抹平了B/S、C/S的鸿沟。微软真正看重也是这个理念,.Net + SilverLight的组合具有同样的特性,09版MSN UI端就是SilverLight + .Net 3.5。

Flex和SilverLight对比来说,微软最大的优势就是PC上OS平台的绝对垄断,XP sp3后的Windows都是默认内置.Net 3.5,也就是说几乎所有Windows PC上都有.Net运行时环境,这是Adobe的AIR没法比的。Adobe创造性的推出了AIR运行时理念,却被微软彻底模仿,超越也仅仅是时间问题。

AJAX受限于js语言,虽然可能在企业应用上走不远,但互联网应用领域必然是轻量级AJAX框架的理想使用场合。

还有一个JavaFX,纯粹是先发后至的Sun炒冷饭的作品,注定成不了气候。JWS仍然还是Java平台C/S技术的简单改进,绝对不会成为RIA技术的主流。

对于RIA技术的选择,在企业应用领域,两年内跟着Flex走是明智的;互联网应用领域,jquery类轻量级框架和Flex技术应兼顾。


这个文章的核心理念是我2年前总结的,当你提到AIR的时候,我过去看了一下,另外试用了一下EBAY桌面和FINS的JE CHAT。感觉这个东西类似WEBSTART。都需要客户端一次性下载一个比较大的客户端。

这,不是0部署。

我希望真正RIA,是HTML++,增加了很多WIDGET控件,数据展现能力加强到和CS相当,JS语言强壮到和PYTHON RUBY  JAVA。。。。等语言相当。同时保持HTML按需获取UI和数据的特质。

html++的东西需要依赖功能更强大的浏览器来实现,也只有微软有能力推广开(只是有能力,并非肯定行得通),微软也是打算这样做,ie8已经是微软最后一个ie版本,未来微软浏览器是什么样子?RIA容器+基本的网页浏览器,到那个阶段,B/S、C/S的界限已经基本消失了,但那是3年或5年后的未知数,目前来说,不会出现百分百0部署的RIA技术,也没有必要追求0部署的理念,js目前的发展还仅仅是在浏览器沙箱内性能的提升,未来突破浏览器沙箱的可能性倒是也有,但从浏览器技术纷争的状态来看,突破的可能性很小,微软会第一个反对。

AIR比你目前了解的要强大和先进,AIR和JWS在自动更新等方面有些理念类似,但两者有巨大的区别,两者设计的出发点不同,举个简单的例子:一个Flex、Ajax或标准dhtml方式开发的功能复杂、UI交互复杂的B/S结构企业应用,只要重新编译、打包,无须改变任何代码,立即可以发布为一个AIR应用,装到Windows或Linux的客户机上去,从而获得更好的本地应用程序性能和更大的操作本地机器资源的能力,这个应用也就成了一个标准的c/s应用,JWS是不可能做到的,而这就是adobe想做的事情,微软也看到了这其中诱人前景,SilverLight就是跟进Flex后的产物,09版MSN是第一个成功产品,腾讯同样基于SilverLight的web版QQ也是这种理念的一个实践,我相信3.0后SilverLight将开始接近并超越Flex,但微软没有打算借鉴AIR特性集的全部,目前仅仅是Flex,因为微软有OS和浏览器上的垄断资源。
0 请登录后投票
   发表时间:2009-04-24  
SL比AIR下的东西要小似乎,3之后,前景应该很光明吧,组件再多点,鼠标右键再加上,Ora‘Sun。
0 请登录后投票
   发表时间:2009-04-24  
我写了篇web UI技术回顾,
比lz的全面,因为要发到xx杂志~~,所以,暂时不发到网上了。

:(
0 请登录后投票
   发表时间:2009-04-24  
kimmking 写道
我写了篇web UI技术回顾,
比lz的全面,因为要发到xx杂志~~,所以,暂时不发到网上了。

:(


考费赚完再发:-)
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics