黑武士的領地
          ——黑武士是反微軟的JAVA陣營的流氓JAVA程序員
          posts - 26,comments - 4,trackbacks - 0
           隨著軟件系統的規模和復雜性的增加 ,軟件體系結構的選擇成為比數據結構和算法的選擇更為重要的因素 ,三層客戶/服務器體系結構為企業資源規劃的整合提供了良好的框架 ,是建立企業級管理信息系統的最佳選擇。隨著體系結構的發展,軟件框架結構方面也在不斷發展,目前在多層應用結構方面出現Java技術和.net技術的實現的不同的解決方案,二者各有優缺點,分別適用于不同規模的系統的要求。 本文將結合電信計劃建設管理信息系統的實現,說明三層模式的體系結構,介紹基于三層模式的應用系統的分布式組件技術 ,闡述應用J2EE框架結構來實現應用系統的實現方法。

             一、系統結構的選擇

             1、 傳統兩層C/S結構的缺點

            傳統的兩層客戶/服務器模式比較適合于小規模、用戶較少、單一數據庫且在安全、快速的網絡環境下 (例如局域網 )運行 。但是,隨著應用系統的規模不斷擴大 ,復雜性越來越高在多用戶、多數據庫且非安全的網絡環境下(例如:Internet) ,這種兩層結構的應用模型將無法適應 。而且傳統的兩層結構還存在以下缺陷:

            (1)它是單一服務器且以局域網為中心的 ,所以難以擴展至大型企業廣域網或 Intranet;

            (2)受限于供應商,程序的升級維護必須由供應商重新開發擴展;

            (3)軟、硬件的組合及集成能力有限;在軟件上呈現出胖客戶端,用戶必須在客戶端安裝特定的客戶端應用程序,而且企業的業務邏輯都寫在客戶端應用程序中,程序維護困難,程序升級需要每個客戶端都要安裝新的客戶端應用程序,同時,對于程序開發商來說,程序模塊的重用性差,各個模塊相對獨立;

            (4)C/S模式很難管理大量的客戶機。

            基于以上原因,傳統的C/S模式已經不能適應發展的需要,隨著網絡技術的普及和用戶需求的進一步提高,三層WEB模式應運而生。

            2、 三層WEB結構的優點

            三層客戶/服務器模式 (以下簡稱三層模式 )在兩層模式的基礎上,增加了新的一級。這種模式在邏輯上將應用功能分為三層:客戶顯示層、業務邏輯層、數據層。客戶顯示層是為客戶提供應用服務的圖形界面,有助于用戶理解和高效的定位應用服務。業務邏輯層位于顯示層和數據層之間,專門為實現企業的業務邏輯提供了一個明確的層次,在這個層次封裝了與系統關聯的應用模型,并把用戶表示層和數據庫代碼分開 。這個層次提供客戶應用程序和數據服務之間的聯系,主要功能是執行應用策略和封裝應用模式,并將封裝的模式呈現給客戶應用程序。數據層是三層模式中最底層,他用來定義、維護、訪問和更新數據并管理和滿足應用服務對數據的請求。

            三層模式的主要優點為 :

            ①良好的靈活性和可擴展性。對于環境和應用條件經常變動的情況,只要對應用層實施相應的改變,就能夠達到目的。

            ②可共享性。單個應用服務器可以為處于不同平臺的客戶應用程序提供服務,在很大程度上節省了開發時間和資金投入;

            ③較好的安全性。在這種結構中,客戶應用程序不能直接訪問數據,應用服務器不僅可控制哪些數據被改變和被訪問,而且還可控制數據的改變和訪問方式 。

            ④增強了企業對象的重復可用性。“企業對象”是指封裝了企業邏輯程序代碼,能夠執行特定功能的對象。隨著組件技術的發展,這種可重用的組件模式越來越為軟件開發所接受。

            ⑤三層模式成為真正意義上的“瘦客戶端”,從而具備了很高的穩定性、延展性和執行校率。

            ⑥三層模式可以將服務集中在一起管理,統一服務于客戶端,從而具備了良好的容錯能力和負載平衡能力。







          三層體系結構

            電信計劃建設管理信息系統是由省電信公司對下屬地市電信公司進行統一管理,所有業務邏輯都集中在省公司管理和制定,地市公司負責數據的錄入和查詢統計,用戶的分布廣泛,數據集中處理,因此在設計時充分考慮各種體系結構的優缺點,選擇三層WEB模式進行開發實現。



            二、體系架構的選擇

            1、 DCOM分布式技術和CORBA分布式技術

            Microsoft的分布式COM(DCOM)技術是將組建對象模型技術COM大大進行了擴展,是對在局域網、廣域網甚至是Internet上計算機對象之間的通信提供了完全的支持。通過使用DCOM用戶的應用程序就可以在任何網絡位置上達到真正的分布性,從而滿足客戶應用的需要。整體結構如下圖所示:







            由OMG提出的公共對象請求代理結構CORBA對象是目前比較流行的一種中間件規范,也是一種構件實現規范,主要目標是使對象在分布式環境中可重用、可移植和可互操作,CORBA的整體結構如下圖所示:







            以上兩種分布式結構可以實現在統一特定的環境下的應用,對于局域網中的實現比較流行,但是針對不同平臺的應用和Internet上的應用,二者缺少靈活性。

            2、 J2EE體系結構介紹

            J2EE體系結構分為三個層次,分別是客戶表示層、中間邏輯層和數據管理層及應用系統。本結構具有跨平臺的特性,結構中的三個層次可以處于不同的平臺下進行協作應用;因為客戶表示層可以使用不同的客戶端程序,因此具有很好的分布性,可以適應分布式管理的要求;在后臺的應用系統集成中,可以把企業不同的應用系統集成到該結構中,因此可以有效的保護現有的資源不被破壞。基于J2EE來實現的WEB服務的核心框架如下圖所示:









            用基于J2EE的體系結構開發的WEB服務還具有以下的優點:

            ① 可以跨越中間防火墻進行通信。因為WEB服務是利用HTTP最為傳輸媒介,中間層使用WEB服務的話,可以從客戶界面直接調用中間層組件,而不必建立頁面。

            ② 應用系統的集成。要把企業里不同語言寫成的,運行于不同平臺上的各種程序集成起來必然會花費很大的開發力量。通過WEB服務可以使用標準的方法把功能和數據暴露出來,供其他程序使用。

            ③ 所有的企業邏輯和服務都集成封裝在可重用、可移植的EJB組件中,因此系統維護性和可重用性好。

            ④中間件代碼可以集中在處理業務邏輯上,無需考慮數據表示。

            因為本次電信計劃建設管理信息系統的業務邏輯和數據處理規則都是由集團公司和省公司統一管理,數據和程序集中在統一的服務器上,并且服務器運行平臺與客戶端的運行平臺不同,因此采用J2EE的框架結構解決比較合適。


            三、系統設計和實現

            通過對各種解決方案和框架結構的比較,選擇JAVA技術作為本次系統設計的應用技術,我們對系統的設計如下:

            前臺用戶顯示層使用jsp和servlet在瀏覽器上實現,中間使用EJB組件實現企業業務邏輯,后臺數據庫使用Sybase數據庫。具體的企業應用結構如下所示:







            其中中間件使用Bea公司的Weblogic7.0,開發工具使用JBuilder9.0,數據庫使用SYBASE數據庫。

            在用戶登錄過程中,因為在整個客戶端使用的用戶比較多,因此在連接上我們使用連接池進行處理。具體的連接池實現如下:





          class DBConnectionPool
          {
           public DBConnectionPool(String name, String URL, String user, String password)
           {
            this.name = name;
            this.URL = URL;
            this.user = user;
            this.password = password;
            this.maxConn = maxConn;
           }
           private void createPools(Properties props)
           {
            private Hashtable pools = new Hashtable();
            String poolName = props.getProperty("poolname").trim();
            String url = props.getProperty(poolName+".url").trim();
            String user = props.getProperty(poolName + ".user");
            String password = props.getProperty(poolName + ".password");
            String maxconn = props.getProperty(poolName + ".maxconn", "0");
            int max;
            DBConnectionPool pool=New DBConnectionPool(poolName, url, user, password);
            Utility.log(pool.toString());
            pools.put(poolName, pool);
            Utility.log("成功創建連接池" + poolName);
           }
          }

            為了使用SessionBean進行登錄確認處理,同時利用Bean的監聽功能對用戶的登錄時間進行監聽,超過一定時間,自動切斷用戶登錄連接,讓用戶進行重新登錄。在應用系統中,用戶登錄后的權限控制是一個重點,我們在使用J2EE框架結構的過程中,使用SERVLET的過濾功能來實現權限的控制,具體的實現結構如下:




            過濾器的定義標記如下:






          <web-app>
           <filter>
            <filter-name>IE Filter</filter-name>
            <filter-class>com.ibm.devworks.filters.IEFilter</filter-class>
           </filter>
          </web-app〉



            在業務邏輯處理上,我們對各個業務進行相應的分解,然后針對每個業務邏輯應用EJB組件進行實現。客戶做出請求后,使用SERVLET處理后調用各個業務模塊處理邏輯,EJB組件訪問數據庫后將處理后的結果集返回給SERVLET,再匯集到客戶端進行顯示,供用戶進行查詢和使用。

            四、總結

            本文提出的B/S模式的系統結構已應用電信計劃建設管理信息系統中,由于實際需要,在請求處理層中還增加了一個設備接口線程,用于通過SNMP協議獲取網絡設備的信息。與傳統的CGI模式相比,本系統結構有明顯的優勢,具有較高系統效率,尤其適合于構造功能復雜的Web應用系統。另外在實現上還可以加強,比如進一步研究自動創建和撤銷新的數據庫操作線程的條件。


          posted on 2005-08-04 11:16 黑武士 閱讀(199) 評論(0)  編輯  收藏 所屬分類: JAVA技術
          主站蜘蛛池模板: 东海县| 汤阴县| 德州市| 德阳市| 隆安县| 大田县| 东光县| 洪泽县| 东安县| 页游| 丹阳市| 澄江县| 灵石县| 沂源县| 潢川县| 鲁山县| 黑龙江省| 北票市| 青田县| 通化市| 囊谦县| 黑水县| 漯河市| 木兰县| 疏勒县| 岑溪市| 化隆| 冷水江市| 旌德县| 麻江县| 葫芦岛市| 吉木乃县| 宁明县| 吴江市| 洛阳市| 雅江县| 旬阳县| 准格尔旗| 广宁县| 临湘市| 长宁县|