隨筆 - 59, 文章 - 4, 評(píng)論 - 184, 引用 - 7
          數(shù)據(jù)加載中……

          重新帶J2EE項(xiàng)目-兼談架構(gòu)模式的影響

           

          寫了幾個(gè)月的通訊中間件,再次帶領(lǐng)一個(gè)J2EE項(xiàng)目,使用WebWork、Spring、Hibernate,感覺寫J2EE項(xiàng)目就像在休假,要考慮的事情少之又少,無論是效率、異常處理、線程調(diào)度、架構(gòu)模式,一切都不再那么重要,無需考慮那么多,只要語義清晰,溝通流暢就好了。
          想起一周前跟Jerry聊天,說起因?yàn)閁nixware下JDK1.3的notify語義的不穩(wěn)定問題而一天內(nèi)重新編寫了三次通訊框架,最后采用了完全非框架的過程化寫法,Jerry說應(yīng)該先寫出一個(gè)實(shí)現(xiàn),然后在之上重構(gòu),就像爬山一樣,不可能一下子攀登到頂峰,當(dāng)時(shí)雖然心里感覺不是這樣,但竟一時(shí)語塞,不知從何說起,再次回到J2EE開發(fā),才恍然明白那天的感覺,框架開發(fā)和業(yè)務(wù)開發(fā)的不同就在于,很難重構(gòu),尤其是通訊框架,架構(gòu)通常決定了它的幾個(gè)重要指標(biāo)。

          架構(gòu)模式不同于設(shè)計(jì)模式,設(shè)計(jì)模式的問題可以通過重構(gòu)解決,而架構(gòu)模式幾乎只能重新做(當(dāng)然也有例外),架構(gòu)一旦確定,很多東西就無法再加入,所以為什么很多開源的J2EE框架在大版本升級(jí)后不得不拋棄向后兼容。這也是為什么國產(chǎn)通訊框架Cindy的作者想在其中加入FilterChain,而最終放棄的原因,因?yàn)檫@對(duì)基礎(chǔ)庫的改動(dòng)實(shí)在太大。

          而MINA的架構(gòu)就足夠靈活,它屏蔽了不同通訊方式和通訊底層事件機(jī)制的差異,就像在如同Cindy和Netty2這種基于NIO的reactor模式之上的框架,要想重構(gòu)到BIO,就幾乎要全部重寫,不過Netty2要好一些,畢竟有Netty1作為鋪墊,所以在NIO的reactor的路上走的不是很遠(yuǎn)(NIO的reactor實(shí)現(xiàn)真是的不咋個(gè)),而MINA則只需要在SocketIoProcessor中使用Helf Sync/Helf Async模式替換掉reactor之上的事件處理即可,當(dāng)然,最好還要提供線程池以便進(jìn)行overload shield,在向Apache LDAP團(tuán)隊(duì)提交了MINA的JDK1.3核心庫時(shí)也曾想提起該問題,可惜后太忙,忘記了。不過我想以Trustin的聰明,一定會(huì)想到這個(gè)問題。

          posted on 2005-09-21 17:47 fisher 閱讀(1521) 評(píng)論(3)  編輯  收藏 所屬分類: Programing

          評(píng)論

          # re: 重新帶J2EE項(xiàng)目-兼談架構(gòu)模式的影響  回復(fù)  更多評(píng)論   

          呵呵,我同意你的說法,架構(gòu)層次和我聊天時(shí)說的那個(gè)先實(shí)現(xiàn)再重構(gòu)確實(shí)不太一樣,架構(gòu)設(shè)計(jì)中需要考慮系統(tǒng)的核心目標(biāo),根據(jù)此目標(biāo)做出骨架式的架構(gòu)設(shè)計(jì),架構(gòu)設(shè)計(jì)一旦出問題整個(gè)系統(tǒng)可以說已經(jīng)決定了后果了,重構(gòu)一般都是層次實(shí)現(xiàn)級(jí)的,而不是架構(gòu)級(jí)
          2005-09-21 19:47 | Programmer's Life

          # re: 重新帶J2EE項(xiàng)目-兼談架構(gòu)模式的影響  回復(fù)  更多評(píng)論   

          本來是想說最近很輕松的,說著說著就跑題了:)
          2005-09-21 20:02 | flyingbug

          # re: 重新帶J2EE項(xiàng)目-兼談架構(gòu)模式的影響  回復(fù)  更多評(píng)論   

          博主,可否請(qǐng)教你一個(gè)問題:
          我在測(cè)試中連續(xù)發(fā)大量請(qǐng)求,mina做的server端會(huì)出現(xiàn)只created連接,但之后卡在那里不繼續(xù)運(yùn)行,這樣的問題如何解決?
          [SocketAcceptorIoProcessor-0.0] INFO handler.CommunicatorServerSessionHandler - [/192.168.0.166:40775] CREATED
          [SocketAcceptorIoProcessor-0.0] INFO handler.CommunicatorServerSessionHandler - [/192.168.0.166:40776] CREATED
          2007-05-23 16:04 | itVincent
          主站蜘蛛池模板: 谢通门县| 上高县| 西畴县| 桂林市| 定南县| 南漳县| 弥渡县| 堆龙德庆县| 太仆寺旗| 广平县| 吉安县| 徐州市| 清水河县| 渭源县| 余江县| 辽宁省| 习水县| 保德县| 祁阳县| 车致| 宜黄县| 图木舒克市| 奉节县| 景谷| 松江区| 崇阳县| 志丹县| 洪洞县| 建昌县| 灵璧县| 安吉县| 深圳市| 江北区| 龙陵县| 昭觉县| 河源市| 诸城市| 乐平市| 搜索| 合水县| 孟津县|