笨笨的思想片斷

          零碎片斷,雜七雜八。
          posts - 25, comments - 79, trackbacks - 0, articles - 0

          With or Without EJB?

          Posted on 2005-12-07 15:54 笨笨 閱讀(2742) 評(píng)論(2)  編輯  收藏 所屬分類: Java

          With or Without EJB?


          EJB 運(yùn)行時(shí)所享受的 J2EE 基礎(chǔ)服務(wù)

          1 參與AppServer 提供分布式事務(wù)管理(JTA,JTS)。
          2 AppServer 提供高性能通訊框架(基于RMI 或 IIOP實(shí)現(xiàn))和大并發(fā)處理。
           1) AppServer 如 WebLogic/WebSphere 替換了 Sun 標(biāo)準(zhǔn) RMI 實(shí)現(xiàn)(基于著名的多線程阻塞IO),國內(nèi)的 Apusic 4 則基于純 NIO 的 IIOP通訊協(xié)議實(shí)現(xiàn)EJB 遠(yuǎn)程通訊。
           2) AppServer 提供 EJB 實(shí)例池、請(qǐng)求隊(duì)列、執(zhí)行線程池等等服務(wù)。

          3 AppServer 提供透明 EJB 集群管理(負(fù)載均衡、故障恢復(fù)),保證應(yīng)用的處理能力能夠水平擴(kuò)展。
          4 J2EE 安全體系
          5 AppServer 特有的附加增值服務(wù)
           1) 如 WebLogic WTC EJB,可實(shí)現(xiàn)從TUXEDO Service(C語言) 高性能訪問 EJB。

           


          大型項(xiàng)目所關(guān)注的重點(diǎn)

          對(duì)于大型項(xiàng)目如全國集中這一級(jí)別而言,它所關(guān)注的重點(diǎn)風(fēng)險(xiǎn)反而是系統(tǒng)的性能、吞吐量、穩(wěn)定性、高可用性這樣的一些基本屬性,這里并非說具體的業(yè)務(wù)功能就不重要;而是與上述的基本屬性相比,業(yè)務(wù)功能可以說是相對(duì)的不重要。
          基本屬性如果有某一項(xiàng)沒有達(dá)到,直接后果就是項(xiàng)目失敗,或者運(yùn)行時(shí)存在高風(fēng)險(xiǎn)。
          業(yè)務(wù)功能則主要是堆時(shí)間、堆人、堆代碼、堆測(cè)試人員的問題,如果實(shí)在來不及了,那就放到第二期去做好了,不影響主旋律么。

          對(duì)于大型項(xiàng)目而言,采用新技術(shù)的關(guān)注點(diǎn)主要是:
          1 能否滿足基本質(zhì)量屬性,無重大運(yùn)行時(shí)風(fēng)險(xiǎn)。
          比如說,數(shù)據(jù)訪問層,從性能和穩(wěn)定性角度而言,還算直接采用 JDBC 編碼合適,最多采用SQL映射型JDO。對(duì)于帶緩沖的JDO實(shí)現(xiàn)則不宜采用,會(huì)帶來水平擴(kuò)展和穩(wěn)定性風(fēng)險(xiǎn)。

          2 項(xiàng)目組相關(guān)人員是否有此技術(shù)的經(jīng)驗(yàn),最好不要付出學(xué)習(xí)成本,避免因不熟悉所帶來的風(fēng)險(xiǎn)。

           


          EJB 和 IoC 框架如 Spring 的定位比較

          Spring IoC/Context/AOP 可以認(rèn)為是一個(gè)代碼組織(Assembler)框架,關(guān)注代碼如何組織和去耦。

          EJB 則是運(yùn)行結(jié)構(gòu),關(guān)注我們的應(yīng)用如何運(yùn)行,如何做集群,系統(tǒng)計(jì)算資源如何分配等等。
          EJB 3 的改進(jìn)主要還是從代碼組織角度做出的,對(duì)于 EJB 運(yùn)行時(shí)架構(gòu)并沒有多少變化(如果說錯(cuò)了,還請(qǐng)指正);BEA 還有過將 EJB 3的代碼翻譯為 EJB 2.1 運(yùn)行時(shí)架構(gòu)的考慮(參見 BEA 的關(guān)于 EJB 3 的一篇文章http://www.javaworld.com/javaworld/jw-08-2004/jw-0809-ejb_p.html)。

          從上述角度來看,EJB 和 Spring 是從不同的角度看待應(yīng)用,我們完全可以做到用 Spring 組織代碼實(shí)現(xiàn)EJB。


          With or Without EJB?
          從上述討論可以看出,用Spring還是用EJB并不是個(gè)問題,最終還是看用戶的實(shí)際需求而定。小Web項(xiàng)目多半不關(guān)注性能、并發(fā)、集群等等屬性,出于開發(fā)過程簡(jiǎn)單和學(xué)習(xí)成本的考慮,完全可以不用EJB;而大型項(xiàng)目可能還是得用EJB。

          Feedback

          # re: With or Without EJB?  回復(fù)  更多評(píng)論   

          2005-12-07 16:08 by Flyingis
          With or Without EJB 在《J2EE without EJB》中有詳細(xì)的討論,結(jié)論也是看用戶實(shí)際需求而定。還有很多需要向你學(xué)習(xí)!

          # re: With or Without EJB?  回復(fù)  更多評(píng)論   

          2006-03-08 21:44 by Null Lee
          Rod的觀點(diǎn)是即便從性能角度考慮也應(yīng)該without EJB。
          主站蜘蛛池模板: 榆社县| 疏附县| 洪雅县| 侯马市| 龙川县| 磐安县| 宝坻区| 江油市| 丰县| 明水县| 连城县| 公安县| 揭阳市| 勐海县| 元氏县| 昌图县| 道真| 吴桥县| 会宁县| 湾仔区| 稻城县| 资溪县| 塘沽区| 宣汉县| 诸城市| 新巴尔虎右旗| 肥城市| 丁青县| 南城县| 保山市| 盘山县| 屏南县| 大新县| 东丽区| 蓬莱市| 高密市| 夏邑县| 揭阳市| 望城县| 永兴县| 建始县|