web開(kāi)發(fā)很大一部分工作就是建立這兩個(gè)結構之間的關(guān)系。即我們需要
html <--> java
我們首先要意識到這兩種結構之間并不一定是同構的,即后臺數據的組織方式與前臺展現時(shí)的結構是不同的。同樣的數據可以對應于不同的展現結構。這也是所謂MVC架構實(shí)現模型與視圖分離的依據。傳統上,基于Model2模式的MVC框架中,這兩種結構的映射只能在很粗的粒度上進(jìn)行(即整個(gè)頁(yè)面的粒度上),因此妨礙了封裝和重用。為了進(jìn)行細粒度的映射,我們必須要擁有細粒度的結構控制能力。而目前最強的結構控制能力存在于javascript/DHTML模型之中,在js中html的結構可以是一段線(xiàn)性的文本(innerHTML和outerHTML), 可以是層級組織的節點(diǎn)(parentNode, childNodes), 也可以是按照key組織起來(lái)的Map(getElementById)。在不同的情形下,我們可以根據需要選擇不同的結構模型。
ajax體系很直接的一個(gè)想法就是將所有關(guān)于界面表達和控制的結構都推到前臺,由控制力最強的js來(lái)控制后臺數據模型與前臺html模型之間的映射。
html <--> js <==> xml <==> java
在ajax體系中,xml所扮演的角色是js與java之間的翻譯通道,它將js中的結構與java中的結構對應起來(lái),這種翻譯比html/java之間的映射要簡(jiǎn)單的多。其實(shí)它甚至可以是一種同構的映射,可以用一種通用的方式來(lái)進(jìn)行,例如結合burlap與buffalo包的功能。結合webservice的一些思想,js/java之間的映射是可以在函數調用這種細粒度上自動(dòng)進(jìn)行的,從而我們最終可以在概念上完成html/java之間的細粒度映射。
聯(lián)系客服