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

          [導(dǎo)入]銳道dorado

          Posted on 2006-04-02 14:57 canonical 閱讀(2184) 評(píng)論(2)  編輯  收藏 所屬分類(lèi): 軟件開(kāi)發(fā)
          http://www.bstek.com/
          ??? 上海銳道的Dorado框架號(hào)稱(chēng)是一個(gè)基于構(gòu)件技術(shù)的、面向B/S和多層架構(gòu)體系的web應(yīng)用開(kāi)發(fā)平臺(tái), 其前身稱(chēng)為Extra。從具體功能來(lái)看,如果將其看作是一個(gè)全功能的web應(yīng)用開(kāi)發(fā)平臺(tái), 那它現(xiàn)在的功能集顯得就太單薄了一些, 其主要部分還是提供了一些前臺(tái)的界面控件, 其他如web框架部分,很像是struts的一個(gè)簡(jiǎn)化版,沒(méi)有什么特異之處。
          ??? Dorado的技術(shù)特點(diǎn)是大量采用ajax技術(shù)來(lái)實(shí)現(xiàn)前臺(tái)控件. 其前后臺(tái)交互采用了自定義的基于xml格式的rpc方式, 而數(shù)據(jù)綁定使用了xml數(shù)據(jù)島,例如
          ??? <xml id="__datasetEmployee" >
          ??? <records>
          ??? <record isCurrent="true"? state="none" >
          ??? <new>,~73~73~73~73~73,~68~68,~44~31~32,true,true,295113600000,2034.0,,</new>
          ??? </record>
          ??? </xml>
          ??? record內(nèi)部使用的是Dorado私有的編碼/解碼規(guī)則, 大概是為了壓縮數(shù)據(jù)量吧.
          ??? 從Dorado目前提供的界面來(lái)看還是比較豐富的,基本滿(mǎn)足了一般信息系統(tǒng)開(kāi)發(fā)的需求, 但是其可擴(kuò)展性似乎并不是很好. 它雖然號(hào)稱(chēng)是組件式開(kāi)發(fā),但是其前臺(tái)和后臺(tái)引擎似乎都沒(méi)有提供完善的組件模型支持, 只是實(shí)現(xiàn)了一些既定的界面組件而已.
          ??? 1. 其前臺(tái)的js函數(shù)中存在著大量針對(duì)數(shù)據(jù)類(lèi)型的switch語(yǔ)句,似乎其所能夠支持的控件類(lèi)型已經(jīng)內(nèi)置在前臺(tái)引擎中, 如果我們要增加一種新的界面組件大概需要在各處修改引擎代碼, 缺乏一種抽象機(jī)制.
          ??? 2. 后臺(tái)ViewModel模型似乎是想構(gòu)造出一個(gè)Component架構(gòu)來(lái), 但這個(gè)模型目前看起來(lái)明顯沒(méi)有Echo2這樣的組件模型精致, 似乎缺乏一種一致的組件重組機(jī)制.? Dorado的ViewModel是有狀態(tài)的, 通過(guò)RPC機(jī)制, 它實(shí)際上可以獨(dú)立于系統(tǒng)web層與前臺(tái)控件交互.
          ??? 3. Dataset是Dorado中最重要的數(shù)據(jù)供體接口, 從它所提供的方法 getField,deleteRecord, insertRecord, movePrev, moveNext, getPageSize等可以看出, 這明顯是綁定到了可分頁(yè)表格的數(shù)據(jù)模型上. 實(shí)際上整個(gè)系統(tǒng)設(shè)計(jì)似乎都隱含假定了一個(gè)Table模型, 例如Validator接口中具有一個(gè)函數(shù) ViewField getField(), 這里明確假定了validate只能針對(duì)單個(gè)字段進(jìn)行, 而不是屬于某個(gè)整體組件的.
          ??? 4. Dorado中所有組件的界面代碼生成都是以程序方式進(jìn)行的, 沒(méi)有模板機(jī)制. 因而增加新的控件的實(shí)現(xiàn)時(shí), 需要在后臺(tái)通過(guò)java代碼輸出一部分界面, 在前臺(tái)通過(guò)js腳本動(dòng)態(tài)更新界面, 工作量相當(dāng)大.
          ??? 5. Dorado中界面輸出應(yīng)該是通過(guò)Outputter接口來(lái)進(jìn)行
          ????? public interface Outputter{
          ??????? public String getStartOutput(HttpServletRequest req, Object o)throws Exception;
          ??????? public String getEndOutput(HttpServletRequest req, Object o) throws Exception;
          ????? }
          ????? 這里一方面與web層形成了綁定,另一方面它必須在內(nèi)部完整的生成界面代碼之后一次性傳入response, 這無(wú)疑加重了后臺(tái)的內(nèi)存壓力. 輸出分成了StartOutput和EndOutput大概是為了支持布局組件等容器類(lèi)組件, 相當(dāng)于是組件內(nèi)部可以有一個(gè)洞, 這與Jsp Tag模型是匹配的, 但是這種方式很難以高效率實(shí)現(xiàn)界面上的結(jié)構(gòu)融合.
          ??? 7. Dorado似乎沒(méi)有直接提供組件的再封裝機(jī)制, 在現(xiàn)有組件中作局部修正往往需要通過(guò)代碼方式來(lái)進(jìn)行.例如表格中的性別字段需要顯示圖片而不是文字, 則需要在Column的onRefresh事件中寫(xiě)入下代碼,
          ??????????? if (record.getValue("sex")){
          ??????? cell.innerHTML = "<img src='images/man.gif'>";
          ??????? }
          ??????? else{
          ??????? cell.innerHTML = "<img src='images/woman.gif'>";
          ??????? }
          ??? 這明顯已經(jīng)不是可配置的內(nèi)容了. 如果我所需要增加的代碼是一個(gè)復(fù)雜的組件, 這里就很難進(jìn)行處理了.
          ??? 6. Dorado的技術(shù)綁定在了IE瀏覽器上, 無(wú)法兼容其它瀏覽器, 這有些偏離目前的標(biāo)準(zhǔn)化方向.

          ??? 目前的快速開(kāi)發(fā)平臺(tái)的一個(gè)共同特點(diǎn)是集中在單表的CRUD(Create Read Update Delete)上, 可以快速完成單表或主從表的增刪改查. 這本也是正確方向,畢竟目前系統(tǒng)開(kāi)發(fā)中的大量工作都是重復(fù)性的簡(jiǎn)單勞動(dòng), 但是一般系統(tǒng)設(shè)計(jì)中為了支持單表操作而在建模的時(shí)候引入了對(duì)表格模型過(guò)強(qiáng)的依賴(lài),? 大大降低了系統(tǒng)的可擴(kuò)展性. 另外現(xiàn)在一般web組件框架的設(shè)計(jì)往往是模仿桌面開(kāi)發(fā)領(lǐng)域的組件模式, 希望提供完全黑箱式的組件調(diào)用方式, 這其實(shí)是放棄了web開(kāi)發(fā)的優(yōu)勢(shì).? 實(shí)際上借助于xml格式的規(guī)范性和簡(jiǎn)單性, 我們完全可以提供更加強(qiáng)大的結(jié)構(gòu)組件, 并把組件封裝的能力開(kāi)放給普通程序員.

          Feedback

          # re: [導(dǎo)入]銳道dorado  回復(fù)  更多評(píng)論   

          2006-04-02 21:47 by BlueDavy
          同意canonical的看法:
          "實(shí)際上借助于xml格式的規(guī)范性和簡(jiǎn)單性, 我們完全可以提供更加強(qiáng)大的結(jié)構(gòu)組件, 并把組件封裝的能力開(kāi)放給普通程序員"

          在此之上封裝一些項(xiàng)目中使用的通用組件,那么就很爽了,其實(shí)也就是說(shuō)象Dorado這樣的東西重要的一個(gè)問(wèn)題就在于缺乏一種擴(kuò)展機(jī)制的設(shè)計(jì),而在評(píng)判一個(gè)框架時(shí),擴(kuò)展性是其基本要素..

          # re: [導(dǎo)入]銳道dorado  回復(fù)  更多評(píng)論   

          2006-04-04 09:13 by wfeng007
          我們公司有個(gè)部門(mén) 就使用這個(gè)作為界面基礎(chǔ)的。。。。不過(guò)。。。性能好像有點(diǎn)問(wèn)題。。。
          主站蜘蛛池模板: 灵台县| 连山| 调兵山市| 莱芜市| 贺兰县| 买车| 诸城市| 凤山市| 长治市| 视频| 威信县| 石阡县| 易门县| 垦利县| 丰县| 古交市| 揭西县| 仪陇县| 稷山县| 沙雅县| 临安市| 斗六市| 静安区| 澳门| 交城县| 徐汇区| 梁河县| 辉南县| 淮北市| 茶陵县| 库伦旗| 郑州市| 丹凤县| 普格县| 台南县| 佛坪县| 库伦旗| 泸水县| 周口市| 苏尼特左旗| 清徐县|