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格式的規范性和簡單性, 我們完全可以提供更加強大的結構組件, 并把組件封裝的能力開放給普通程序員.
??? 上海銳道的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格式的規范性和簡單性, 我們完全可以提供更加強大的結構組件, 并把組件封裝的能力開放給普通程序員.