Ajax优于JSF的几个原因讨论

开发 后端
本文介绍Ajax优于JSF的几个原因讨论,包括JSF的设计思路有点模仿VB,组件化的开发这个方向是没错的,Ajax开发将来也会走这条路。

Sun为什么会搞出一个JSF,JSF为什么会是现在这个样子,我想原因是这样的:首先,基于组件的Web开发将来会是一个趋势。自包含的组件便于IDE的处理,可以提高开发效率。

就是说JSF优于Struts/WebWork这类MVC框架的优势,在于它可以与IDE结合来自动生成代码。而传统的纯手工编写的MVC框架,影响了开发效率。因为Java技术在客户端并没有明显的优势。Applet已经被抛弃掉,Java的强项在服务器端。Sun不可能跑去使用 JavaScript,因为在传统开发者眼里,JS只配做一点很琐碎的任务。

于是在他们设计的这个架构中,所有的用户事件都放在了服务器端来处理,这个决策造成了JSF致命的缺点。它把事件处理模型绑死在服务器上,限制了响应性更加灵敏的交互设计。随之而来的网络延迟会毁掉软件的可用性。这也是Ajax在JSF的架构中无法充分发挥作用的原因。

JSF的设计思路有点模仿VB,组件化的开发这个方向是没错的,Ajax开发将来也会走这条路。但是JSF与VB***的差别是VB的事件模型都是位于本地来处理的。这是一种本质上的差别,所以如果JSF确实想模仿VB,那也是东施效颦。而且在JSF的设计阶段,同步的请求/响应是主流,他们的思路仍然牢牢束缚在基于页面的开发方式上。根本就没有思考过其他的可能。

异步请求/响应是Ajax与传统开发方式***的差别,异步带来了更好的交互设计。

GoogleMaps中当用户滚动地图时,获取新的地图图片,由于是异步请求的,因此不会打断用户的操作流程。而在传统的地图服务,每次滚动可能都需要刷新页面。用一下微软的那个地图服务就可以感觉到明显的差距,它甚至根本就不允许用户滚动地图。

以前我说GoogleMaps不是Ajax,因为没有使用XMLHttpRequest,这样说看来理解有些狭隘。GoogleMaps请求地图的图片,采用的是修改动态创建的img元素的src属性的方式,这样的请求不会打断用户的操作,因此就是异步的。我们在AjaxinAction中看到作者将 GoogleMaps当作Ajax应用,而在PragmaticAjax中作者说GoogleMaps不是严格意义上的Ajax,两种说法都有道理。

JSF其实如果和Applet结合,可能更好些。Applet是多线程的,可以捕获用户的操作事件,采用异步方式发送到服务器。这样就不会打断用户的操作了。但是这样一来设计的这个架构就复杂了。而且Applet是已经决定抛弃的东西。JSF和JavaWebStart结合也可以,不过JWS设计用来建造一类完全不同的Web应用,即RichClient,而不是设计用来建造运行于浏览器之内的RIA应用。所以JSF最多只是一种过渡方案,在 Ajax/Flash的竞争下早已风光不在。

未来基于浏览器的RIA开发,Ajax、Flash是两种最有前途的技术。

按照泽欣的判断可能是三分天下,Ajax、Flash/Flex/Laszlo、还有M$的Atlas。Atlas是M$开发的类似于Flash的一种技术,目前还只是一个vaporware,没有看到其庐山真面目。JavaWebStart相比之下只能局限于一些内部应用。

 

【编辑推荐】

  1. JSF理解组件和客户端标识符
  2. 过渡技术的Ajax及Apusic JSF
  3. ESRI为什么选择JSF
  4. 浅析对JSF项目的单元测试
  5. 构建Ajax JSF事件驱动
责任编辑:佚名 来源: cnblogs
相关推荐

2011-07-21 17:11:09

AjaxJSF

2009-06-25 14:05:08

Ajax JSF

2009-06-25 11:21:36

JSF流行名词

2009-06-26 13:20:50

JSF和Ajax

2009-06-23 10:17:09

Ajax事件和错误JSF2

2011-05-10 15:14:28

SEO

2010-06-09 09:15:58

JSF 2Ajax组件

2023-03-01 10:20:13

2009-06-23 15:02:56

JSF和AJAX

2012-03-28 09:14:38

JavaICEfaces

2009-06-23 14:55:43

AJAX和JSF

2009-06-23 18:11:02

JSF的生命周期Ajax处理

2009-06-26 11:24:15

Seam Remoti

2021-06-16 12:03:49

WindowsLinux游戏

2009-06-25 11:11:25

控制JSF切入点

2011-07-04 16:40:39

QT 串口 QML

2011-03-30 16:52:43

RichFaces

2009-09-23 17:56:45

JSF入门

2009-06-22 16:42:26

JSF的工作方式

2009-06-23 13:21:26

JSF和Spring
点赞
收藏

51CTO技术栈公众号