dorado技術園地

          與您共同討論dorado技術及其應用技巧

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            8 隨筆 :: 0 文章 :: 37 評論 :: 1 Trackbacks

          dorado是一套成熟的Web應用開發套件, 其中包含了一個完整的具有下一代Web應用特征的表現層解決方案。本文著重介紹了如何利用dorado的表現層與目前較為流行的StrutsHibernate、Spring進行協同開發。

          mvc2.gif
          圖表
          1基于MVC模式的總體框架圖

          上圖是利用dorado的表現層與目前較為流行的StrutsHibernate、Spring進行協同開發的總體框架圖。從此圖中我們不難看出與傳統的MVC的開發模式的最大區別在于View部分dorado的表現層實現。

          1.             發起請求 從瀏覽器發出請求開始(如圖中的1號箭頭)。該請求首先將被StrutsActionServlet接受,然后ActionServlet會根據用戶的Struts配置確定應觸發哪一個具體的Action

          2.             調用業務邏輯 Action的主要任務是調用某一個業務邏輯對象BO(Business Object)已完成相應的業務操作。由于我們在此框架考慮引入了Spring,因此Action將不必直接創建具體的BO。而是通過Spring框架利用反向注入的原理(Ioc)來得到BO的實例。
          BO當中我們應當通過數據訪問對象DAO(Data Access Object)來實現對數據的訪問操作。由于我們考慮在開發模式中引入Spring。因此,此處具體使用的DAO實例也應通過Spring來獲取。
          為了更好地實現業務邏輯的面向對象化,我們還可以考慮利用Hibernate來作為DAO的具體實現方式。如此便有的了上圖中所展示的Model層的架構。最終在整個系統中DAO成為了唯一的數據庫訪問途經。通常我們可以將此圖中的DAOHibernate統稱為數據持久層。
          另外,在某些情況我們也可以考慮簡化此處的持久層設計。由于Hibernate本身就可以作為獨立的持久層實現,因此也可以將此處的DAO對象省去,直接在BO中利用Hibernate完成數據訪問。
          當我們的Action完成了對BO的調用之后,我們應當將業務邏輯個直接結果存入到上下文對象(Context)當中,以便于稍后的View能夠得到這些數據并用于界面的繪制和展現。在通常模式下BO的執行結果都是以VOValue Object)的方式返回的。VO既可以可以獨立的JavaBean也可以是JavaBean的集合(Collection, 例如:List Set) 。

          3.             轉發請求 Action完成上述操作之后Struts應根據BO的執行結果和用戶的配置將請求轉發給某個具體的JSP來實現界面的展現。由于此處引入了dorado的表現層,因此JSP的作用已被弱化為了單一的對視圖模型(ViewModel)中的各種可視化對象進行布局。
          視圖模型是一種用戶描述視圖邏輯的對象。例如我們將表格要如何顯示、單擊按鈕后要完成什么動作、下拉框如何進行賦值等信息都歸納為視圖邏輯。視圖模型只負責聲明和描述對象,而不負責對象具體的擺放位置。視圖模型無法獨立的訪問View層之外的數據,視圖模型只能引用在數據模塊(Module)中定義的數據。
          數據模塊是dorado的表現層中專門用于訪問外部數據的一種對象。例如在此處的開發模式當中我們就利用數據模塊來訪問BO返回的執行結果。

          4.             值對象(VO)的傳遞    由于我們不能把數據模塊的激活和BO的調用看作是一個同步的過程。因此數據模塊無法直接得到BO返回的執行結果,而只能通過上下文對象來獲取BO返回的VO。此處的上下文對象一般是指Request對象的Attributies屬性集。
          數據模塊在得到VO之后需要自動將VO中包含的信息反射成dorado中的數據集(Dataset)。由于此種數據轉化在某些極端的情況是非常復雜的(例如VO的多級集合嵌套),因此我們必要定義一些描述信息來輔助dorado按照正確的方式進行數據轉換。值得慶幸的是doradoStudio可以自動生成絕大部分的描述信息。我們只需要根據實際情況的在必要的時候對這些描述信息做少量的調整就可以了。

          5.             反饋 VO的信息被正確的轉化到Dataset中之后,doradoModuleViewModel將按照其標準的方式運行,并最終通過JSP將視圖信息反饋給瀏覽器。此處,dorado的表現層之所以需要數據模塊、視圖模型和JSP的協同工作是為了更好的實現代碼的重用。

          綜上5個步驟,我們不難看出doradoStruts、Hibernate、Spring這些產品進行整合的關鍵在步驟4,即如何將VO轉換成dorado中的Dataset。而且事實上dorado的對象本身完全不需要對Struts、Hibernate、Spring中的任何對象進行直接調用。這種松耦合的結合方式可以充分的保證系統架構將來的靈活性和擴展性。

          結論

          此種開發模式與傳統的開發模式比較,其最大的優勢在于可以利用dorado大大的節省開發人員在開發Web應用表現層式的工作量,同時又為我們的應用提供非常友好、易用的用戶交互界面,將應用直接升級成新一代的富客戶端網絡應用(Rich Internet Application)。

          此種開發模式與標準的dorado的開發相比將會帶來開發工作量的明顯加大,不過同時在開發模式上的標準化也可以在另外一些方面為我們帶來好處。例如可以系統架構具有更好的擴展性,使得將來在需要的時候引入其他框架類產品的變得相對容易。

           

          工作量

          界面

          擴展性

          傳統MVC

          (使用上述開發模式中除dorado外的所有技術)

          最大

          簡陋

          引入doradoMVC架構

          (使用本文介紹的開發模式)

          較大

          友好

          (富客戶端)

          dorado的標準開發模式

          (不包含Struts、Hibernate、Spring

          較小

          友好

          (富客戶端)

          較好

          Dorado除可以幫我們改善界面之外,還可以為我們提供國際化、性能分析、權限配置等等諸多實用的功能,由此可見引入dorado作帶來的好處是不言而喻的,此處不做過多累述。但是對于上表中的后兩種開發方式的取舍應根據多方面的實際情況來決斷。一般而言,對于規模不是特別大,參與開發的人員不多且預計系統將來升級和擴展不是很頻繁的項目,我們仍推薦選用相對簡單且快速的第三種方式,即直接使用dorado標準的開發模式。

          與了解更多詳情請瀏覽一下網址:
          http://61.151.239.187/doradosample/hibernate2.show.d
          http://61.151.239.187/doradosample/hibernate3.show.d

          posted on 2005-08-29 16:49 dorado技術園地 閱讀(8067) 評論(14)  編輯  收藏

          評論

          # re: Dorado與Struts、Hibernate、Spring的集成開發模式 2005-08-30 16:38 Hut
          這東西和我準備做的東西很像,其實大部分的頁面操作時頁面邏輯,謝謝提供資料。  回復  更多評論
            

          # re: Dorado與Struts、Hibernate、Spring的集成開發模式 2006-03-27 18:53 pear
          厲害,算我長見識了。。  回復  更多評論
            

          # re: Dorado與Struts、Hibernate、Spring的集成開發模式 2006-04-19 19:34 henry
          請問如何處理BO拋出的異常消息?如果要在前端用消息窗口顯示異常消息,該如何做?  回復  更多評論
            

          # re: Dorado與Struts、Hibernate、Spring的集成開發模式 2006-04-20 08:58 waterspirits
          dorado系統默認會將該異常信息在客戶端作為消息窗口顯示,另外dorado系統還提供了一些客戶端的事件機制,便于開發人員定制提示信息!
          詳細內容可以參考:
          http://61.151.239.187/bbs/forum/index  回復  更多評論
            

          # re: Dorado與Struts、Hibernate、Spring的集成開發模式 2006-07-28 16:57 親切
          什么垃圾理論,我看這個什么快魚簡直就是垃圾,到什么時候國際化了再用吧  回復  更多評論
            

          # re: Dorado與Struts、Hibernate、Spring的集成開發模式 2006-09-13 09:57 路過
          請問您是否清楚開發的層次架構,DAO和Hinbernate ,bo 和SPRING之間的關系是什么?  回復  更多評論
            

          # re: Dorado與Struts、Hibernate、Spring的集成開發模式 2006-10-21 17:56 atom
          觀注中.,...  回復  更多評論
            

          # re: Dorado與Struts、Hibernate、Spring的集成開發模式 2006-10-21 18:14 william[匿名]
          現已提供marmot實現以上開發集成。

          http://61.151.239.187/bbs/forum/listthreads?forum=20  回復  更多評論
            

          # re: Dorado與Struts、Hibernate、Spring的集成開發模式 2007-07-21 18:50 yzjyzj
          這是一個好框架  回復  更多評論
            

          # re: Dorado與Struts、Hibernate、Spring的集成開發模式 2007-09-02 22:22 niukai_2000
          不錯的工具,希望多多交流  回復  更多評論
            

          # re: Dorado與Struts、Hibernate、Spring的集成開發模式 2008-03-09 15:34 bear
          好東西,就是不會用
          關注中  回復  更多評論
            

          # re: Dorado與Struts、Hibernate、Spring的集成開發模式 2008-12-10 21:01 ffff
          誰用誰知道有多爛!  回復  更多評論
            

          # re: Dorado與Struts、Hibernate、Spring的集成開發模式 2009-06-03 17:21
          最討嫌的是該框架的視圖模型配置文件,在該文件中寫上一段不完全像javaScript也不像Java的腳本則簡直是該框架的敗筆。另外作為一個框架應該是幫我們解決原先不好解決的問題,但該框架的策略是,你跟我吧,用我的套路包你打遍天下無敵手。導致我們辛苦積累多年的經驗在該框架上幾乎無用武之地。唉!。。。。還是Spring框架好啊,幫我們做那么多事,但從不強迫我要跟他走。  回復  更多評論
            

          # re: Dorado與Struts、Hibernate、Spring的集成開發模式 2015-09-01 12:03 javaercoder
          用過這個框架,覺得這個dorado框架非常非常的垃圾。完全不能滿足一些個性化需求,而且樓上說的沒錯該框架的策略就是讓你跟著我的套路去開發。堅決抵制如此爛的框架!  回復  更多評論
            


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 集安市| 忻城县| 安塞县| 南岸区| 卢氏县| 昌宁县| 成安县| 清远市| 景泰县| 徐闻县| 湘乡市| 绍兴县| 永和县| 博乐市| 华容县| 米易县| 三明市| 密云县| 新津县| 清水河县| 汕尾市| 穆棱市| 荃湾区| 无棣县| 新竹县| 上蔡县| 尼木县| 扶余县| 诏安县| 惠来县| 临潭县| 满洲里市| 长兴县| 固始县| 大埔县| 巴青县| 揭东县| 襄城县| 大安市| 丰台区| 广南县|