隨筆 - 59, 文章 - 4, 評論 - 184, 引用 - 7
          數據加載中……

          重新帶J2EE項目-兼談架構模式的影響

           

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

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

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

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

          評論

          # re: 重新帶J2EE項目-兼談架構模式的影響  回復  更多評論   

          呵呵,我同意你的說法,架構層次和我聊天時說的那個先實現再重構確實不太一樣,架構設計中需要考慮系統的核心目標,根據此目標做出骨架式的架構設計,架構設計一旦出問題整個系統可以說已經決定了后果了,重構一般都是層次實現級的,而不是架構級
          2005-09-21 19:47 | Programmer's Life

          # re: 重新帶J2EE項目-兼談架構模式的影響  回復  更多評論   

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

          # re: 重新帶J2EE項目-兼談架構模式的影響  回復  更多評論   

          博主,可否請教你一個問題:
          我在測試中連續(xù)發(fā)大量請求,mina做的server端會出現只created連接,但之后卡在那里不繼續(xù)運行,這樣的問題如何解決?
          [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
          主站蜘蛛池模板: 建水县| 和硕县| 高碑店市| 突泉县| 大足县| 岳普湖县| 江源县| 玉环县| 梅河口市| 平陆县| 读书| 茶陵县| 微山县| 鄂尔多斯市| 娱乐| 察隅县| 兴化市| 宕昌县| 日土县| 阿拉善盟| 绥江县| 丰宁| 乐陵市| 安宁市| 长宁区| 衡阳县| 深水埗区| 通化县| 连平县| 洛隆县| 买车| 冀州市| 乳源| 武强县| 晋州市| 奎屯市| 双流县| 开平市| 修水县| 龙江县| 镇沅|