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

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

           

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

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

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

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

          評論

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

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

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

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

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

          博主,可否請教你一個問題:
          我在測試中連續(xù)發(fā)大量請求,mina做的server端會出現(xiàn)只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
          主站蜘蛛池模板: 绵竹市| 全椒县| 广饶县| 华蓥市| 珲春市| 桑日县| 清河县| 浦江县| 邹平县| 孟州市| 淮北市| 灵宝市| 平舆县| 德兴市| 苏尼特右旗| 齐河县| 栖霞市| 乌兰察布市| 沿河| 邵阳县| 沙河市| 大渡口区| 中牟县| 化隆| 谷城县| 银川市| 淅川县| 固原市| 溧水县| 荣昌县| 花莲市| 昆山市| 通许县| 商南县| 西盟| 石台县| 鹰潭市| 汉寿县| 仪陇县| 个旧市| 阿合奇县|