dorado技術(shù)園地

          與您共同討論dorado技術(shù)及其應(yīng)用技巧

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

          dorado是一套成熟的Web應(yīng)用開發(fā)套件, 其中包含了一個完整的具有下一代Web應(yīng)用特征的表現(xiàn)層解決方案。本文著重介紹了如何利用dorado的表現(xiàn)層與目前較為流行的StrutsHibernateSpring進(jìn)行協(xié)同開發(fā)。

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

          上圖是利用dorado的表現(xiàn)層與目前較為流行的StrutsHibernateSpring進(jìn)行協(xié)同開發(fā)的總體框架圖。從此圖中我們不難看出與傳統(tǒng)的MVC的開發(fā)模式的最大區(qū)別在于View部分dorado的表現(xiàn)層實(shí)現(xiàn)。

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

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

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

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

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

          綜上5個步驟,我們不難看出doradoStrutsHibernateSpring這些產(chǎn)品進(jìn)行整合的關(guān)鍵在步驟4,即如何將VO轉(zhuǎn)換成dorado中的Dataset。而且事實(shí)上dorado的對象本身完全不需要對StrutsHibernateSpring中的任何對象進(jìn)行直接調(diào)用。這種松耦合的結(jié)合方式可以充分的保證系統(tǒng)架構(gòu)將來的靈活性和擴(kuò)展性。

          結(jié)論

          此種開發(fā)模式與傳統(tǒng)的開發(fā)模式比較,其最大的優(yōu)勢在于可以利用dorado大大的節(jié)省開發(fā)人員在開發(fā)Web應(yīng)用表現(xiàn)層式的工作量,同時又為我們的應(yīng)用提供非常友好、易用的用戶交互界面,將應(yīng)用直接升級成新一代的富客戶端網(wǎng)絡(luò)應(yīng)用(Rich Internet Application)

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

           

          工作量

          界面

          擴(kuò)展性

          傳統(tǒng)MVC

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

          最大

          簡陋

          引入doradoMVC架構(gòu)

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

          較大

          友好

          (富客戶端)

          dorado的標(biāo)準(zhǔn)開發(fā)模式

          (不包含StrutsHibernateSpring

          較小

          友好

          (富客戶端)

          較好

          Dorado除可以幫我們改善界面之外,還可以為我們提供國際化、性能分析、權(quán)限配置等等諸多實(shí)用的功能,由此可見引入dorado作帶來的好處是不言而喻的,此處不做過多累述。但是對于上表中的后兩種開發(fā)方式的取舍應(yīng)根據(jù)多方面的實(shí)際情況來決斷。一般而言,對于規(guī)模不是特別大,參與開發(fā)的人員不多且預(yù)計系統(tǒng)將來升級和擴(kuò)展不是很頻繁的項(xiàng)目,我們?nèi)酝扑]選用相對簡單且快速的第三種方式,即直接使用dorado標(biāo)準(zhǔn)的開發(fā)模式。

          與了解更多詳情請瀏覽一下網(wǎng)址:
          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技術(shù)園地 閱讀(8068) 評論(14)  編輯  收藏

          評論

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 徐州市| 萨迦县| 息烽县| 桓台县| 申扎县| 玉树县| 辽中县| 启东市| 广平县| 榆中县| 龙口市| 乌拉特中旗| 鹤峰县| 夏河县| 罗江县| 铁力市| 天门市| 沧源| 泸州市| 安图县| 东乡县| 理塘县| 玉屏| 平顺县| 云和县| 钟祥市| 嘉禾县| 西充县| 仪陇县| 弥渡县| 澄江县| 增城市| 临武县| 樟树市| 左云县| 游戏| 全州县| 赣州市| 土默特左旗| 汽车| 沙湾县|