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

          [導入]銳道dorado

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

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

          Feedback

          # re: [導入]銳道dorado  回復  更多評論   

          2006-04-02 21:47 by BlueDavy
          同意canonical的看法:
          "實際上借助于xml格式的規范性和簡單性, 我們完全可以提供更加強大的結構組件, 并把組件封裝的能力開放給普通程序員"

          在此之上封裝一些項目中使用的通用組件,那么就很爽了,其實也就是說象Dorado這樣的東西重要的一個問題就在于缺乏一種擴展機制的設計,而在評判一個框架時,擴展性是其基本要素..

          # re: [導入]銳道dorado  回復  更多評論   

          2006-04-04 09:13 by wfeng007
          我們公司有個部門 就使用這個作為界面基礎的。。。。不過。。。性能好像有點問題。。。
          主站蜘蛛池模板: 正镶白旗| 聂荣县| 南涧| 连南| 兖州市| 准格尔旗| 荔波县| 亚东县| 百色市| 兰考县| 怀集县| 郧西县| 登封市| 聊城市| 双辽市| 林西县| 玉溪市| 临夏市| 蕉岭县| 扎兰屯市| 阿坝县| 丹寨县| 偏关县| 双牌县| 大埔区| 北宁市| 河南省| 惠州市| 班戈县| 芦山县| 镇原县| 中卫市| 翼城县| 苏尼特右旗| 炉霍县| 扶沟县| 农安县| 亚东县| 思南县| 石首市| 五原县|