隨著軟件系統的規模和復雜性的增加 ,軟件體系結構的選擇成為比數據結構和算法的選擇更為重要的因素 ,三層客戶/服務器體系結構為企業資源規劃的整 合提供了良好的框架 ,是建立企業級管理信息系統的最佳選擇。隨著體系結構 的發展,軟件框架結構方面也在不斷發展,目前在多層應用結構方面出現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應用系統。另外在實現上還可以加強, 比如進一步研究自動創建和撤銷新的數據庫操作線程的條件。