posts - 176, comments - 240, trackbacks - 0, articles - 7

              web開(kāi)發(fā)這個(gè)領(lǐng)域是很有意思的。首先,web的興起是在軟件業(yè)發(fā)展到一定階段才發(fā)生的,它必然吸收了軟件業(yè)最優(yōu)良的思想,必然有其本質(zhì)上先進(jìn)的地方。另 一方面,web的應(yīng)用畢竟是時(shí)日較短的事情,造成很多基礎(chǔ)架構(gòu)方面也是薄弱的,原始的。
              具體來(lái)說(shuō),前臺(tái)html的展現(xiàn)模型本身是非常先進(jìn)的。xhtml+css+js實(shí)現(xiàn)了結(jié)構(gòu)(structure), 表現(xiàn)(presentation)和行為(behavior)的分離。xhtml本身是簡(jiǎn)單的文本文件,通過(guò)工具的支持可以做到結(jié)構(gòu)上的"所見(jiàn)即所得" (WYSIWYG)。 在js中操縱html結(jié)構(gòu)具有多種方式:可以通過(guò)id直接訪問(wèn)html片斷,可以直接操縱dom的層次結(jié)構(gòu),可以將html作為線性文本處理,可以應(yīng)用 xml相關(guān)的技術(shù)對(duì)dom結(jié)構(gòu)進(jìn)行變換,可以動(dòng)態(tài)切換html元素的css風(fēng)格等。dom結(jié)構(gòu)的訪問(wèn)方式是高度統(tǒng)一的,通過(guò)parentNode, childNodes, setAttribute, getAttribute等少數(shù)幾個(gè) API函數(shù),我們可以通過(guò)一種簡(jiǎn)潔一致的方式操縱所有的節(jié)點(diǎn)和相關(guān)屬性(當(dāng)然,IE這方面的bug不少)。html相關(guān)技術(shù)中所顯示的結(jié)構(gòu)控制能力遠(yuǎn)遠(yuǎn)超 越了傳統(tǒng)桌面程序中組件技術(shù)所能達(dá)到的程度。
              但另一方面,html也是原始的,缺乏現(xiàn)代應(yīng)用程序所必需的標(biāo)準(zhǔn)控件,典型的如Tree控件和Tab控件等。每個(gè)開(kāi)發(fā)商都不得不實(shí)現(xiàn)并維護(hù)自己的界面庫(kù)。 通過(guò)web界面調(diào)用后臺(tái)業(yè)務(wù)邏輯的方式更是很粗糙的。基礎(chǔ)的servlet只提供了基于IO的有限狀態(tài)機(jī)模型,對(duì)于后臺(tái)功能缺乏有效的組織,而對(duì)于前臺(tái)界 面也缺乏合適的抽象手段,僅僅作為文本輸出。MVC框架建筑在servlet模型之上,將后臺(tái)邏輯功能以一種統(tǒng)一的組織方式向外暴露。而tag技術(shù)在前臺(tái) 界面中的應(yīng)用,使得我們可以有效的識(shí)別并分離出我們所關(guān)心的結(jié)構(gòu)。這些技術(shù)的發(fā)展都是web開(kāi)發(fā)模型逐漸精細(xì)化的必然結(jié)果。
              為了在服務(wù)器端獲得足夠強(qiáng)的結(jié)構(gòu)控制能力,有些人求助于桌面程序的歷史開(kāi)發(fā)經(jīng)驗(yàn),希望通過(guò)java語(yǔ)言中的結(jié)構(gòu)表達(dá)能力來(lái)擴(kuò)展web開(kāi)發(fā)的模型,于是便有 了echo2, tapestry這樣的組件化web開(kāi)發(fā)框架。坦率的說(shuō),我并不看好這類強(qiáng)類型建模的框架。除了性能上的原因之外,我反對(duì)這類框架的一個(gè)主要原因是 java語(yǔ)言直接表達(dá)的結(jié)構(gòu)一般無(wú)法達(dá)到用xml文本表達(dá)的結(jié)構(gòu)的統(tǒng)一性和靈活性,從而很難應(yīng)對(duì)界面的快速變化。實(shí)際上,對(duì)web界面進(jìn)行組件化的分解并 不一定需要一種強(qiáng)類型語(yǔ)言支持的組件模型。通過(guò)自定義標(biāo)簽的使用,我們完全可以實(shí)現(xiàn)將頁(yè)面分解為多個(gè)子部分的目的,這一點(diǎn)已經(jīng)由witrix平臺(tái)中的 tpl模板技術(shù)所證實(shí)。

              web開(kāi)發(fā)是個(gè)既先進(jìn)又落后的領(lǐng)域。很多人面對(duì)這種矛盾的情況,難免思想上會(huì)出現(xiàn)混亂。關(guān)鍵是要認(rèn)清技術(shù)的本質(zhì)而不要被OO是否必需等抽象的討論所迷惑。

          Feedback

          # re: [導(dǎo)入]既先進(jìn)又落后的web開(kāi)發(fā)領(lǐng)域  回復(fù)  更多評(píng)論   

          2006-05-29 15:42 by 老鼠
          呵呵,受教:):)
          主站蜘蛛池模板: 北宁市| 静乐县| 大足县| 西乡县| 治多县| 乌兰浩特市| 德江县| 丰宁| 手游| 桃园市| 通辽市| 建湖县| 凤凰县| 闽侯县| 浦东新区| 东辽县| 钟山县| 溆浦县| 环江| 明溪县| 岗巴县| 仙居县| 玉屏| 襄樊市| 岚皋县| 香河县| 淮滨县| 文山县| 阿克苏市| 上饶市| 沙坪坝区| 富平县| 富蕴县| 枣强县| 滦平县| 扎赉特旗| 东阳市| 桦甸市| 呼伦贝尔市| 岢岚县| 商都县|