Posted on 2006-02-22 20:33
canonical 阅读(1143)
评论(0) 编辑 收藏 所属分类:
软件开发
Ajax: A New Approach to Web Applications http://www.adaptivepath.com/publications/essays/archives/000385.php
Ajax(Asynchronous
JavaScript +
XML)并不是一个革命性的崭新概念(也许根本就不存在突发的革命),它的技术基础在多年之前就已经牢固的建立起来了,在概念层次上的探讨也早就不是一个
新鲜的话题,只是大规模的有深度的应用似乎是最近才开始的。
从广义上说,web应用至少涉及到两个结构,
1. 后台以java语言表达的业务逻辑结构
2。前台以html语言表达的界面表现结构。
web开发很大一部分工作就是建立这两个结构之间的关系。即我们需要
html <--> java
我
们首先要意识到这两种结构之间并不一定是同构的,即后台数据的组织方式与前台展现时的结构是不同的。同样的数据可以对应于不同的展现结构。这也是所谓
MVC架构实现模型与视图分离的依据。传统上,基于Model2模式的MVC框架中,这两种结构的映射只能在很粗的粒度上进行(即整个页面的粒度上),因
此妨碍了封装和重用。为了进行细粒度的映射,我们必须要拥有细粒度的结构控制能力。而目前最强的结构控制能力存在于javascript/DHTML模型
之中,在js中html的结构可以是一段线性的文本(innerHTML和outerHTML), 可以是层级组织的节点(parentNode,
childNodes),
也可以是按照key组织起来的Map(getElementById)。在不同的情形下,我们可以根据需要选择不同的结构模型。
ajax体系很直接的一个想法就是将所有关于界面表达和控制的结构都推到前台,由控制力最强的js来控制后台数据模型与前台html模型之间的映射。
html <--> js <==> xml <==> java
在ajax
体系中,xml所扮演的角色是js与java之间的翻译通道,它将js中的结构与java中的结构对应起来,这种翻译比html/java之间的映射要简
单的多。其实它甚至可以是一种同构的映射,可以用一种通用的方式来进行,例如结合burlap与buffalo包的功能。结合webservice的一些
思想,js/java之间的映射是可以在函数调用这种细粒度上自动进行的,从而我们最终可以在概念上完成html/java之间的细粒度映射。