孫小淋
(煙臺職業學院,煙臺264670)
會話外觀模式在業務邏輯集成中的應用
孫小淋
(煙臺職業學院,煙臺264670)
在J2EE應用系統中會話外觀模式應用在企業應用集成的業務邏輯集成層中,可以有效地解決隨著客戶端和服務器端之間的交互增加,而導致系統整體網絡性能大幅下降的問題。通過會話外觀模式來對業務組件調用,這樣虛擬組件層管理著大量業務組件之間的交互,從而完成對業務邏輯的重新整合,它同時向客戶端提供高度統一、透明的接口以簡化客戶端的調用。通過系統測試,表明在企業應用集成中應用會話外觀模式后,應用服務器對來自客戶端請求的響應時間將大大縮短,本次測試中該性能指標提高將近41.8%。
企業應用集成;設計模式;業務流程
業務邏輯集成也許是企業應用集成中最為重要的一部分,因為企業應用集成絕大部分的需求都來自于該部分,應該說對企業內部業務邏輯的集成是企業應用集成產生的源動力。在企業應用集成中,業務邏輯集成是通過對舊有系統或企業間系統的應用接口進行重新設計,并共享及重組業務流來完成的,這主要是通過提供一個高層虛擬組件層來實現的。這個虛擬組件層根據業務需求提供接口,它反映的是高層業務方法[2]。虛擬組件層對客戶端是透明的,客戶端可以通過它所提供的接口對企業內部或企業間各個應用系統的業務邏輯進行訪問。通過這些接口,原有系統和新系統就可以被捆綁、集成在一起[3]。在企業應用集成的各個集成層次中,業務邏輯集成層所處的環境最為復雜,因為不同企業內部的業務邏輯千差萬別,而且各自對該層的需求也是各種各樣,并且具備不斷變化的趨勢。同時,業務邏輯集成也非常重要,而且越是在信息化早期投入大的企業,對這項需求也就更為迫切。J2EE設計模式在業務邏輯集成層的應用也主要圍繞如何構建虛擬組件層來展開,并通過它將分散的業務邏輯重新進行整合,為客戶端或其它系統調用提供接口,從而達到業務邏輯集成的目的。本文對J2EE設計模式的業務層模式中的會話外觀模式如何在業務邏輯集成層中應用進行了研究。
在傳統的基于多層體系架構的系統中,客戶端需要訪問業務組件對象以完成各項功能,滿足用戶需求。客戶端之所以可以與這些業務對象交互,原因在于這些業務組件向客戶端暴露其接口,供其調用[4]。然而,客戶端和業務組件之間的直接交互會導致它們之間的緊密耦合,并潛在地導致客戶端對業務組件實現的直接依賴。并且客戶端為了完成某項特定功能,必須自己管理所有參與這項功能中的業務組件之間的調用關系和執行順序,這也增加了客戶端代碼的復雜度。此外當客戶端直接管理所有參與工作的業務組件之間的交互時,網絡性能問題也隨之產生[5]。當客戶端按照傳統方式調用服務器端的業務組件時,每個調用都潛在地是一個遠程方法的調用。如果對業務組件的每個方法調用都是細粒度的,那么該類遠程方法調用的數量也會隨之增加。而隨著遠程方法調用數量的增加,客戶端和服務器端之間的交互也就隨之增加,這將導致系統整體的網絡性能大幅下降。
把會話外觀模式應用在企業應用集成的業務邏輯集成層中,可以有效地解決以上討論的問題。會話外觀模式是J2EE設計模式中業務層模式中的一個,也是當今企業級系統開發中應用最廣泛的設計模式之一[6]。會話外觀通過封裝參與業務流程組件對象之間的交互,向客戶端提供統一的粗粒度虛擬組件層,因此向客戶端隱藏了業務組件之間復雜的交互活動,也就滿足了業務邏輯集成層要將分散的業務邏輯重新整合的需求。同時,會話外觀會根據業務流程的需要對組件進行創建、查詢、刪除等操作,并管理這些參與者的生命周期,也解決了前面討論的關于事務的問題。
圖1是在業務邏輯集成層中應用會話外觀模式前后,客戶端對服務器端業務組件調用狀況發生的變化。

圖1 會話外觀在構架中的優勢
在基于J2EE架構的多層系統中,會話外觀經常被實現為會話Bean,作為向客戶端提供的高層抽象[7]。該虛擬組件層管理著大量業務組件之間的交互,從而完成對業務邏輯的重新整合,它同時向客戶端提供高度統一、透明的接口以簡化客戶端調用。圖2是一個典型的客戶端經過會話外觀層對業務組件調用過程的UML順序圖。
從以上的企業應用集成場景中可以看到,客戶端為實現一個業務邏輯整合需求,需要依次調用一個業務實體Bean和一個DAO對象。在沒有應用會話外觀模式以前,客戶端需要自己管理整個業務實體Bean和DAO對象的調用過程,整個過程將涉及大量的遠程方法調用[8]。盡管這種做法也可以實現對該業務的邏輯整合需求,但這將導致客戶端代碼和服務器端業務組件的高度耦合,并會使得系統整體網絡性能出現嚴重問題。此外,為了調用該功能,客戶端代碼將異常龐大,不利于維護[9-10]。這是因為服務器端的業務對象具有隨時間變化的趨勢,因此一旦業務對象根據需求的改變發生變化,客戶端代碼將隨之進行相應變化,才能滿足新的需求。而在該場景應用會話外觀模式后,客戶端僅僅通過一次對會話外觀層的遠程方法調用,就可以完成對該功能的調用。這主要是由于此時的會話外觀層封裝了實現該業務邏輯整合需求的全部方法調用,在本場景中也就是對實體Bean和DAO對象的調用。一旦此時業務對象發生改變,現在所需要做的僅僅是對會話外觀層進行修改,而這對客戶端是透明的,因此大大降低了客戶端和業務對象之間的依賴與耦合。

圖2 會話外觀模式順序圖
為了測試在企業應用集成的業務邏輯層中應用會話外觀模式的優勢,接下來創建了兩個測試用例。第一個用例模仿傳統做法,由客戶端直接調用實體Bean[11-12];另一個用例模仿應用會話外觀模式的方式,通過一個無狀態的SessionBean充當會話外觀層,由該會話外觀層對實體Bean的方法進行調用。其中,對實體Bean的調用,是對它其中一個方法的調用,該方法將從1開始進行一萬次的累加操作,并對此重復五遍。在通過LoadRunner 8對該測試過程進行模擬的過程中,虛擬用戶設置為10人,并且每人進行100次的反復操作,每次操作的思考時間為1秒。
圖3-圖4是針對會話外觀模式在企業應用集成的業務邏輯集成層中應用測試的兩個測試用例,測試的結果分析和對比如表1所示。

圖3 客戶端直接訪問實體Bean的平均響應時間變化圖

圖4 通過增加會話外觀層優化后的平均響應時間變化圖

表1 應用會話外觀模式前后的測試數據對比表
從測試得到的數據統計中可以清楚地看到,在企業應用集成中應用會話外觀模式后,應用服務器對來自客戶端請求的響應時間將大大縮短,本次測試中該性能指標提高將近41.8%。除此之外,其他指標諸如吞吐量、延遲時間等也都有較大程度的提高。
在此需要特別說明的是,盡管本次測試中的確模擬了對業務組件的遠程方法調用,但由于試驗環境所限,該調用并沒有涉及網絡傳輸和對遠程數據庫的訪問,因此在這方面的性能損失并沒有反映出來。而一旦考慮以上全部因素,在企業應用集成中應用會話外觀模式的優勢將體現得更加明顯。
現將企業應用集成中的業務邏輯集成層中應用會話外觀模式的優點總結如下:
·提高網絡性能:通過增加一個會話外觀層,減少客戶端和服務器之間的網絡負載,原因是大幅降低了客戶端和業務對象之間遠程方法的直接調用。
·提供統一接口:為實現對業務流程的整合,業務組件之間的交互將會變得異常復雜,會話外觀模式抽象了該復雜性,并向客戶端提供非常簡單的接口,從而減少了直接暴露給客戶端的業務組件數目。并且該會話外觀層提供的接口可以在以后被其它系統所調用,因此也提高了應用集成系統整體的延展性。
·較低的耦合性:會話外觀層緩沖了業務流程整合的細節,從而在它需要調整時,只需要更改會話外觀層,而不必更改客戶端,因此降低了客戶端對業務對象的依賴。
·業務邏輯層和表示層邏輯清晰且嚴格分離:會話外觀層把對業務邏輯整合的問題完全包裝在一起,于是客戶端只需要進行簡單的方法調用就可以完成一個功能單元,于是就可以更加關注表現層的問題。
·事務的完整性:會話外觀層提供了管理和定義事務的集中點,起到了把事務限制在服務器端的作用,更加符合邏輯。
最后強調一點,在利用會話外觀模式具有以上優勢的同時,由于增加了會話外觀層,集成系統的開銷也會相應增加。可以想象,假如用戶僅需訪問業務組件的一個簡單方法,對它也增加一個會話外觀層,那么不僅不能提高性能和簡化操作,反而會適得其反。因此,如何應用會話外觀模式也要依據企業應用集成的實際狀況而定。
[1]陳丁山.設計模式的研究與應用[J].電腦知識與技術,2003,23:56-57.
[2]李金陽.J2EE技術在電子商務管理系統中的應用研究[J].商場現代化,2007,22:61-62.
[3]袁華強,王亞強,朱君.利用J2EE輕量級框架構建Web應用研究[J].計算機工程與設計,2007,28(1):22-23.
[4]胡建華.基于Hibemate開發與數據庫無關的系統[J].計算機與現代化,2006(9):101-102.
[5]陶以政,吳志杰,唐定勇,等.基于J2EE的應用框架技術研究[J].計算機工程與設計,2007,28(4):826-828.
[6]陶以政,吳志杰,唐定勇,等.基于Struts、Spring和Hibernate的船舶性能系統的設計與實現[J].計算機工程與設計,2008,29(8):2121-2124.
[7]Diego Bonura.Rosario Culmone.Emanuela Merelli,Patterns forWeb application[M].ACM Press,2002.
[8]Ted Husted,Cedric Dumoulin,George Franciscus,David Winterfeldt.Struts in Action[M].Manning Publications Co.2008.50-65.
[9]Considine,Carol;Dean,Tony.Active learning in distance education.ASEE Annual Conference Proceedings,2003 ASEE Annual Conference and Exposition[M].Staying in Tune with Engineering Education,2003:8163-8169.
[10]Luo,Jin:su,Zhenzhong.Research on the Hardware Independence Test System[M].Proceedings of the InternationalSymposium on Test and Measment.2007,6:4563-4566.
[11]Rod Johnson.J2EE Development Frameworks[J].Computer Science 2005,1(38):102-115.
[12]鄧曉軍.EJB編程及J2EE系統架構和設計[M].北京:電子工業出版社,2004.
Application of Session Facade Pattern in Business Logic Integration
SUN Xiao-lin
(Yantai Vocational College,Yantai264670,China)
In a J2EE application system,the session facade pattern can be used in the enterprise application integrationof the business logic integration layer to effectively solve the problem of a dramatic loss of overall system of network performance with the increased interaction between client and server.This paper uses the session facade pattern for the business component invocations,and the virtual component layer manages the interaction between a large number of business components so as to complete a new integrationof the business logic.At the same time,it provides highly uniform and transparent interface to simplify the client call.The system test result shows that,after using a session facade pattern in enterprise application integration,the application server responses to the request from the clientwill greatly shorten the response time which improved by approx 41.8%.
Enterprise Application integration;Design Patterns;Business Process
10.3969/j.issn.1002-2279.2014.01.008
TP319
:B
:1002-2279(2014)01-0025-04
孫小淋(1981-),女,山東煙臺人,助教,主研方向:計算機教育。
2013-08-15