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

          [導(dǎo)入]tag技術(shù)

          Posted on 2005-12-02 22:59 canonical 閱讀(850) 評(píng)論(2)  編輯  收藏 所屬分類: 軟件開發(fā)

              tag在國(guó)內(nèi)java社區(qū)并不算流行,這在很大程度上是因?yàn)閖sp tag的設(shè)計(jì)失誤造成的。但在整個(gè)開發(fā)業(yè)界內(nèi),tag已經(jīng)成為一種廣泛應(yīng)用的技術(shù)。微軟的dotNet服務(wù)器端極端依賴tag技術(shù),而在瀏覽器端IE的 behaviour, htc也獨(dú)立的發(fā)展起來(lái)。Longhorn的XAML, Firefox的XUL無(wú)一例外的依賴于可自定義的tag。java社區(qū)的JSF, SiteMesh, Tiles 等等,不可盡數(shù)。有些人在前臺(tái)通過給html原有元素增加自定義屬性,然后通過javascript去解釋的做法,也是一種element enhance概念的變種。至于FreeMarker這種模板語(yǔ)言,明明類似于tag技術(shù),偏偏不采用xml語(yǔ)法,簡(jiǎn)直是自找麻煩。
              這里最關(guān)鍵的地方就是自定義tag可以實(shí)現(xiàn)抽象層次的提升,是一種類似于函數(shù)封裝的機(jī)制,從而實(shí)現(xiàn)概念的分離和明確化。基于tag可以實(shí)現(xiàn)頁(yè)面元素的組件 化,加上xml語(yǔ)法的可理解性,表達(dá)能力以及無(wú)與倫比的集成能力,使得tag技術(shù)可以超越VB等組件開發(fā)環(huán)境(想想集成別人的組件代碼難還是集成別人的 xml描述文件難)。自定義tag提供的抽象能力不僅僅是面向?qū)ο蟮?,而且是類似AOP的,這些都極大的輔助了我們的思考和設(shè)計(jì)。

              cocoon使用管道技術(shù)也構(gòu)造了某種tag機(jī)制,但是它的效率很成問題。從數(shù)學(xué)上說多個(gè)處理函數(shù) g, h, k可以通過函數(shù)組合(composition)構(gòu)成新的函數(shù)f

              f(data) = g * h * k(data) 

          這是所謂函數(shù)式語(yǔ)言強(qiáng)大能力的源泉。cocoon處理的時(shí)候從k(data)開始,處理完畢之后調(diào)用h, 即函數(shù)是從右向左結(jié)合的。如果我們保證處理函數(shù)滿足左結(jié)合律,則g*h*k就可以預(yù)編譯為f, 從而解決性能問題,這正是witrix平臺(tái)中tpl技術(shù)所采用的方案。

          Feedback

          # re: [導(dǎo)入]tag技術(shù)  回復(fù)  更多評(píng)論   

          2005-12-03 18:40 by calvin
          能不能展開論述jsp tag失敗在哪里呢

          # re: [導(dǎo)入]tag技術(shù)  回復(fù)  更多評(píng)論   

          2005-12-03 22:12 by canonical
          jsp tag最核心的設(shè)計(jì)問題在于它所假設(shè)的模型是動(dòng)態(tài)io處理,而缺乏對(duì)于xml結(jié)構(gòu)的充分利用。對(duì)于具體的表現(xiàn), 我已經(jīng)在一篇blog中作了評(píng)述。
          http://canonical.blogdriver.com/canonical/572201.html
          主站蜘蛛池模板: 滦平县| 江门市| 台中县| 鄂州市| 彝良县| 前郭尔| 攀枝花市| 新巴尔虎右旗| 苗栗市| 松原市| 永宁县| 民县| 定兴县| 油尖旺区| 商城县| 营口市| 双流县| 张家川| 卫辉市| 庄浪县| 余干县| 通江县| 北宁市| 慈溪市| 合江县| 察隅县| 石景山区| 遂平县| 宁陕县| 北京市| 塔城市| 瑞丽市| 班玛县| 安宁市| 潜江市| 德兴市| 延寿县| 阿图什市| 雷波县| 姜堰市| 佛学|