我的CRC卡片盒

zhangwen's blog

关于ajax的一些随笔

 

 

关于 MVC

 

1、  Ajax 必然会带来 Web 开发 Model2 模型的变革。

a)         MVC 的角色由服务器端向客户端靠拢,或者,干脆转为其他更合适的形式,

b)        V(View) 的角色将不再仅仅是不起眼的 jsp ,在 Web2.0 的时代,它将拥有自己独立的一套体系结构。即行为 (Java Script/ECMAScript) ,结构 (XHTML) 和样式 (CSS)

c)        M 的角色将更像 DTO ,它的形式可以由多种,比如:

                         i.              字符串

                       ii.              JS 对象

                      iii.              应用更为广泛的 XML

对应的,他们的传输协议也有多种(当然,都是基于 HTTP ):

                         i.              JSON-RPC JS 对象)

                       ii.              Burlap( 基于 XML Java 对象 )

同时,客户端 - 服务器端对象之间的转化也将成为一个必须解决的问题。目前, JSON Buffalo 已经比较好的做到了这一点。

d)        C 的角色将更为靠近客户端,它将利用 Js 的特点,发挥其快速、灵活的特点。它将取代大部分原服务器端控制器的作用。从而使服务器端的编程更加专注与业务逻辑。

服务器端的控制器层则会变得更薄,它将专注于:

                      iii.              服务器端数据验证与安全保护

                     iv.              与业务逻辑层之间联结的纽带

但是,这一层的功能一旦集成到业务逻辑层,它将失去主要的作用,很可能退出服务器端的领域。

 

 

2、  传统的 MVC 框架 ( 比如 Struts WebWork) Ajax 之间应该是竞争的关系,因为:

a)         传统的 MVC 框架在本质上,都是同步调用,而非 Ajax 提倡的异步调用。

b)        传统的 MVC 框架试图用标签来集成一部分 Ajax 应用。但这注定只能是一种过渡行为,因为:

                         i.              传统的 Tag 带来的不便正逐渐显现出来。 ( 学习成本、不利于编辑、客户端与服务器端代码的夹杂等 )

                       ii.              Tag Js 的封装有限,无法发挥 Js 强大灵活的功能

                      iii.              Tag 是服务器端生成的代码,过多的参与客户端的行为,不利于程序的分层实现。

                     iv.              使用 Tag 使得页面展现逻辑的控制变得复杂和难于理解。它将使动作与表现的分离变得困难。也使得客户端与服务器端逻辑的分离变得不可能。试想用一段代码来控制一个自己也不知道会不会生成,能生成什么样 HTML Tag

c)        基于第一部分提出的原因, Ajax 所提倡的新的 MVC 方式与传统的 MVC 框架所实现的方式已经有本质的区别,它们之间的竞争也就不可避免了。

3、  传统的 MVC 框架适用的地方( Web Request 适用):

a)         重视 URL 的应用,如新闻、论坛等

b)        重视搜索引擎优化

c)        重视用户传统习惯(后退键问题等)

实际上,上边所说的问题 Ajax 都可具有相应的解决方案,但是由于并不能显示出更多的优势。所以传统的 MVC 应用框架仍然有存在的空间。

 

另外,强烈推荐的两个 PPT

庄表伟:

http://www.ajaxcn.org/space/start/2006-03-13/1/Ajax%E6%8A%80%E6%9C%AF%E5%9C%B0%E5%9B%BE.pps

曹晓刚:

http://www.redsaga.com/down/Use-RIA-And-Metadata-In-J2EE-Enterprise-Dev.ppt

 

这个也不错,不过没完全看懂:

http://alex.dojotoolkit.org/wp-content/LowLatencyData.pdf

 

 

关于用户体验:

 

1、  更佳的用户体验是 Ajax 应用推广的原动力

a)         2006 年的 Web 开发将是注重用户体验的一年

b)        基于异步的 Web Remote 调用将给用户带来更好的用户体验

2、  交互式设计

a)         传统的设计令人恼怒,也不能提高生产率

b)        基于目标导向的交互式设计

c)        http://www.dedream.com

 

关于 Web 标准和 Web2.0

 

1、  Ajax 需要建立在 Web 标准之上,因此,学习 Ajax 必须学习 Web 标准。

2、  使用 Web 标准能给 Web 应用带来更多的好处 .

a)         具体的可以参见《网站重构》一书。 http://www.china-pub.com/computers/common/info.asp?id=18781

3、  使用 Ajax 可以实现 Web2.0 的一堆概念

 

关于 RIA (胖客户端):

1、  Ajax 是否属于 RIA 方案?

这种争论意义不大,但是 Ajax 确实带来了与其他 RIA 方案相似的用户体验。在 RIA 重新引起人们重视的今天。

2、  比较其他的 RIA 方案, (Flash\Flex Java Web Start Applet Eclipse Remote ActiveX) Ajax 更容易被 Web 开发人员所接受

3、  使用 XML Web Remote 数据传输体,可以使 Ajax 应用方便的迁徙到其他 RIA 方案。

 

其他:

 

挑战与思考:

1、  Ajax 推动的困难之一在于开发人员对 Js CSS 等表现层技术的轻视。

a)         业界需要 Web 标准、 Web 2.0 等相关技术,加强对此的研究工作

b)        需要开发人员重视用户交互、用户体验方面的研究

2、  相对不成熟的 Ajax 开源框架,目前 Ajax 开发尚没有类似 Struts WebWork 等经过多年考验成熟框架,多数 Ajax 框架还不存在 2.0 以上的发布版。而且 Ajax 开源框架质量的良莠不齐也给开发人员的选择带来困难。

a)         部分精品的 Ajax 框架( DWR Buffalo JSON 等)已经将逐步走向成熟,虽然尚缺乏大型应用的考验,但也有了长足的进步。

b)        国内优秀的 Ajax 框架 Buffalo 正逐步得到多方面的应用。

3、  Ajax 的安全问题与解决方案,

a)         Ajax 使用的 XMLHttp 技术不能跨域访问 url, 也不能在 HTTP 协议的页面访问 HTTPS 的请求。

                         i.              对于安全性不高的应用,可以使用服务器端中间页面(服务器段代理)解决此问题。

                       ii.              对于确实需要加密的应用,可以使用嵌入 HTTPS 协议的 IFrame 页面来访问 HTTPS 请求。

b)        DoS 攻击。 Ajax 使用的 XMLHttp 使用类似 POST 的方式提交数据。使得客户端可以无限制的提交大量攻击性数据。一旦攻击者采用分布式拒绝服务攻击 (DDoS) ,将对系统带来很大影响。

                         i.              除加强服务器段验证外,目前软件方面无太好的解决办法。实际上,使用 POST 方式的表单提交同样存在此问题,但是 Ajax 的应用使得服务器端的服务地址变得更易被发现。

                       ii.              使用硬件防火墙。

c)        传输数据减少,使得数据被截获后分析变得容易。

                         i.              使用数据加密技术

                       ii.              使用安全套接字层传输数据

d)        客户端代码展现在用户面前,难以保证商业项目源代码的版权。

                         i.              JavaScript 脚本进行加密( Google )。

 

4、  其他问题:

a)         缓存问题, XMLHttp 的缓存使得服务器端数据更新后,客户端不一定能立即展现出来

                         i.              使用随机码访问服务器端地址

                       ii.              通过对 XMLHttp 缓存性质的设置,牺牲部分性能来解决此问题

b)        浏览器兼容性问题:

                         i.              目前流行的 Ajax 框架均可支持大部分的浏览器

                       ii.              对于比较古老的浏览器(不支持 XMLHttp )尚没有解决的办法,但是使用这部分浏览器的访问者数量已经接近于 0

posted on 2006-06-15 12:13 不知道叫啥好 阅读(1835) 评论(15)  编辑  收藏

评论

# re: 关于ajax的一些随笔 2006-06-15 15:53 Compass

ajax应用中,表单的服务器校验怎么做?校验的错误怎么传回客户端?传统的mvc都有成熟的校验框架,可以把这些移植过去吗?  回复  更多评论   

# re: 关于ajax的一些随笔 2006-06-15 15:59 不知道叫啥好

@Compass
在我们的项目里已经有相应的方案。其实不是特别复杂,也耗费不了太大的工作量。不能太依赖于开源软件吗  回复  更多评论   

# re: 关于ajax的一些随笔 2006-06-15 17:16 Compass

@不知道叫啥好

这个方案如果仅仅适用于你们的项目对别人没什么意义,如果具有通用性,楼主可以考虑把它做成一个框架发布出来,为开源作些贡献  回复  更多评论   

# re: 关于ajax的一些随笔 2006-06-15 18:12 wolfsquare

第2点的abc三个理由都站不住脚.
  回复  更多评论   

# re: 关于ajax的一些随笔 2006-06-15 18:20 晴天娃娃

哈哈  回复  更多评论   

# re: 关于ajax的一些随笔 2006-06-15 19:10 不知道叫啥好

@wolfsquare
呵呵,能说详细点吗?
  回复  更多评论   

# re: 关于ajax的一些随笔 2006-06-15 20:38 wolfsquare

AJAX框架出来了,才是Strust,Webwork们的竞争对手,不过,难道只有AJAX框架才能AJAX?WW们更容易达到这点吧,AJAX也许建立在既有的框架中,才是最好的出路.  回复  更多评论   

# re: 关于ajax的一些随笔 2006-06-16 13:35 google

..............  回复  更多评论   

# re: 关于ajax的一些随笔 2006-06-16 14:36 foxty

Ajax和struts,ww怎么会是竞争关系呢? 不太赞同这个观点,个人认为2者结合起来使用是很不错的。
  回复  更多评论   

# re: 关于ajax的一些随笔 2006-06-16 15:31 不知道叫啥好

@foxty
我认为,ajax试图使用js来代替传统mvc框架中controller的地位,所以说它们是竞争关系  回复  更多评论   

# re: 关于ajax的一些随笔 2006-06-16 18:18 xy.qin

ajax和这些表示层框并不存在什么冲突,也不可能在一个项目中完全应用ajax,表示层框架还是需要的,2者结合是最好的方式。  回复  更多评论   

# re: 关于ajax的一些随笔 2006-06-16 18:34 不知道叫啥好

@xy.qin
这种说法当然简单又保险。不过有点类似和稀泥了。据我所知有好多完全应用ajax的项目,更有n多不用mvc的烂项目。

在我习惯了ajax的远程调用方式后,我发现很难再回到struts\ww那种页面调用方式。不管是代码量、可维护性、OO程度、可测性,ajax都要好于struts\ww。空口无凭~有机会偶会来证明一下~
  回复  更多评论   

# re: 关于ajax的一些随笔 2006-06-16 23:47 google

个人觉得AJAX会对传统的STRUTS开发有很大的冲击  回复  更多评论   

# re: 关于ajax的一些随笔 2006-06-17 01:08 Guest

AJAX哪里来的数据,还不是得靠从Server端采集数据。Server 端还不是得 JSP/PHP/ASP etc(当然别的方式也行,这些比较常见) 来做吗?AJAX只是在View的一个很少的方面有优势而以,在MC基本上什么都没有。况且AJAX的Implementation都是透明的,所有的Business Logic怎样隐藏?


AJAX 跟Struts, WW等根本不存在竞争关系。AJAX只是Struts/WW View层的一个小小的应用而已。

  回复  更多评论   

# re: 关于ajax的一些随笔 2006-06-17 10:50 不知道叫啥好

@Guest
我觉得这是因为您还没有尝试大规模ajax的开发。ajax当然要从server端采集数据,但这时的数据已经不是来自于controller(action),而是来自于ajax框架自动封装过的service layer或者domain layer。
传统的mvc有一个原则,就是c这一层一定是很薄的一层,只包括对service layer的调用。而ajax则说,既然你如此之薄,那我就用js来实现吧!就是这样,ajax完成了对Struts/WW的接替~

"AJAX的Implementation都是透明的,所有的Business Logic怎样隐藏?
"
介个,我曝漏的只不过是需要view需要用到的方法名和参数,谈何透明之说?  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航:
 

导航

<2006年6月>
28293031123
45678910
11121314151617
18192021222324
2526272829301
2345678

统计

常用链接

留言簿(2)

随笔档案(3)

文章分类

Programmer

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜