亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Session Facade在分布式系統(tǒng)中的應用研究

        2008-04-12 00:00:00
        現(xiàn)代電子技術(shù) 2008年10期

        摘 要:討論一種J2EE設(shè)計模式Session Facade在分布式系統(tǒng)開發(fā)設(shè)計中的使用,進一步針對分布式系統(tǒng)并行處理的復雜性,結(jié)合Singleton模式提出對Session Facade的一種改進方法。通過設(shè)計模式的改進可以顯著提高某一個領(lǐng)域內(nèi)系統(tǒng)開發(fā)設(shè)計的效率,能夠有效增強系統(tǒng)的安全性、數(shù)據(jù)完整性、性能、可維護性和可擴展性。

        關(guān)鍵詞:單子模式; 會話門面; 分布式; 并行計算

        中圖分類號:TP311.5 文獻標識碼:A

        文章編號:1004-373X(2008)10-054-03

        Research and Application on Session Facade in Distributed System

        SHI Liang

        (School of ElectronicInformation,Jiangsu University of Science and Technology,Zhenjiang,212003,China)

        Abstract:Design pattern is the elegant solution to common problems in software design.The application of a type of J2EE design pattern-Session Facade is discussed.Combined with Singleton,a method to improve Session Facade for the complexity of parallel programming is put forward.The efficiency of developing and designing a system of a specified domain can be improved remarkably by design pattern,therefore it can enhance numerous aspects of the system,including security,data integrity,manageability,and scalability.

        Keywords:singleton;session facade;distributed;parallel computing

        近年來,隨著網(wǎng)絡(luò)技術(shù)發(fā)展和應用的需要,分布式應用軟件系統(tǒng)的開發(fā)逐漸成為軟件界關(guān)注的焦點。為此,Microsoft在Visual C++的基礎(chǔ)上推出了C# ;Sun也在Java 2的基礎(chǔ)上推出了J2EE,C#是J2EE的競爭對手,不過就分布式應用程序的開發(fā)平臺來講,目前大部分軟件開發(fā)人員還是傾向于J2EE。而各種J2EE設(shè)計模式的出現(xiàn)更是為系統(tǒng)的開發(fā)設(shè)計提供了極為方便的解決方案,多種模式的組合顯著提高了系統(tǒng)開發(fā)的效率和性能[1,2]。與單進程或單線程應用程序比較,分布式應用程序有他自身的特點。分布式的體系結(jié)構(gòu)以及多層之間的通信會帶來很多性能問題[3]。本文將對文獻[4]中的Session Facade設(shè)計模式在分布式系統(tǒng)開發(fā)中的設(shè)計使用進行討論,最后針對并行計算結(jié)合Singleton模式提出一種改進方法,展示了正確的設(shè)計Session Facade設(shè)計模式并針對特殊情況對其改進后應用到分布式應用程序開發(fā)中,提高開發(fā)效率的同時還提高了系統(tǒng)的性能。

        1 Session Facade(會話門面)模式

        客戶端可以直接通過網(wǎng)絡(luò)訪問參與工作流的業(yè)務對象,如圖1所示,這樣處理時存在著幾個問題:

        (1) 當依靠RMI-IIOP技術(shù)進行跨越網(wǎng)絡(luò)的調(diào)用時,系統(tǒng)性能會受到極大影響。如果一個客戶端需要2個業(yè)務對象的信息(例如說賬戶余額和賬戶所有者姓名),則將需要2個遠程方法調(diào)用。當存在著大量的客戶端,而每個客戶端又需要調(diào)用多個業(yè)務對象時,這種細粒度的網(wǎng)絡(luò)調(diào)用就會成倍的增加,系統(tǒng)性能就會因為網(wǎng)絡(luò)負載而降低。

        (2) 更重要的是,如果允許 客戶端直接訪問業(yè)務對象,那么就要求客戶端了解業(yè)務對象的內(nèi)部方法,這樣就把業(yè)務模型的細節(jié)不適當?shù)乇┞督o客戶端,從而增加了客戶端與業(yè)務對象之間的耦合度。當業(yè)務對象的方法做了改動時,調(diào)用他的客戶端的程序也要進行相應的修改。這樣做就違背了EJB的設(shè)計中要求具有良好的可移植性的原則。

        Session Facade[4]模式為避免這些問題提供了很好的解決方案。Facade[5]模式描述為:“為子系統(tǒng)中的一套接口提供了一個統(tǒng)一的接口。Facade 定義了一個更高層次的接口,使子系統(tǒng)更容易使用?!?在EJB設(shè)計中,Session Facade是應用最廣泛的設(shè)計模式。他應用Session Bean實現(xiàn)Facade模式的思想,把構(gòu)成子系統(tǒng)的一套業(yè)務對象“包裝”在Session Bean中。這樣,Session Facade作為客戶端訪問業(yè)務對象的攔截器,屏蔽了業(yè)務對象。EJB客戶端訪問Session Bean代替訪問業(yè)務對象,當一個EJB客戶端需要調(diào)用多個業(yè)務對象的方法時,他只需要進行一次粗粒度的遠程方法調(diào)用,將請求送給Session Facade,再由Session Facade通過本地方法調(diào)用,調(diào)用相應的業(yè)務對象,執(zhí)行其方法。這樣就減輕了網(wǎng)絡(luò)負載,提高了系統(tǒng)性能。如圖2所示。

        2 Session Facade模式的設(shè)計應用

        在實現(xiàn)Session Facade時,首先必須決定門面的Session Bean究竟是有狀態(tài)的還是無狀態(tài)的,這一點必須根據(jù)Session Facade為了完成用例請求所要實現(xiàn)的業(yè)務過程來決定。 

        無狀態(tài)會話門面 使用stateless session bean 來代表公用的服務流程,這種服務流程只需要執(zhí)行一次方法調(diào)用就能完成服務。因此在設(shè)計會話門面前,先對用例和應用場景進行考察。如果用例是無會話的,那么客戶端只需要啟動該用例,調(diào)用會話門面上的一個方法即可。方法調(diào)用完成了,用例也就完成了。無需在多次方法調(diào)用之間保存會話狀態(tài)。

        有狀態(tài)會話門面 使用stateful session bean代表區(qū)分個體的,短期的工作流程。這種工作流程需要多次方法調(diào)用才能完成任務,在客戶端的多次方法調(diào)用之間,必須保存會話狀態(tài)。在這種應用場景下,使用有狀態(tài)的session bean實現(xiàn)會話門面。

        在下面的應用范例中,可以看到session facade本身只包含很少的業(yè)務邏輯,他把各種細粒度的交互集中到少數(shù)粗粒度的方法中,從而控制客戶端對業(yè)務對象的訪問,并且當業(yè)務對象的方法改動時,只需要修改Session Bean,而客戶端可以保持不變。這就減少了客戶端和業(yè)務對象之間的耦合度,同時客戶端也不必管理事務的細節(jié)。

        客戶端層:

        class clientHelper{ 

        public Object Init(String JNDIName) { 

        InitialContext cntxt = new InitialContext( );

        return cntxt.lookup(JNDIName);

        } 

        public myEjbProxy getProxySession(int UID){ 

        //這里返回會話門面的遠程對象 

        Object ref=Init(\"java:comp/env/ejb/myEjbProxy\");

        myEjbProxyHome myProxyHome= (myEjbProxyHome )PortableRemoteObject.narrow(ref,myEjbProxyHome.class);

        return myProxyHome.create(UID);

        } 

        public CartItem getCartItem(int UID){ 

        // 獲得會話門面myEjbProxy,這是一個有狀態(tài)的門面 

        myEjbProxy theproxy = getProxySession(UID);

        return theproxy.getCartItem();

        } 

        …

        …

        } 

        會話門面:

        public class myEjbProxyBean implements SessionBean{ 

        …

        …

        public CartItem getCartItem(){ 

        //調(diào)用實體bean中的方法 

        } 

        }

        3 并行計算中對Session Facade模式的改進 

        對分布式系統(tǒng)的特點進一步分析,目前大多數(shù)分布式系統(tǒng)(特別是中等粒度或粗粒度的應用)采用的都是常見的并行處理技術(shù),如任務池(task-term)或者分治法(divide and conquer)[6],但是采用這些方法開發(fā)系統(tǒng),處理并行的代碼會和同步、通信處理的代碼緊緊交織在一起,增加了系統(tǒng)的復雜性,更不符合當前可重用軟件松耦合的要求。

        原有的會話門面模式作為一種遠程連接的集成抽象,并不能獨自的解決這個問題,不管是有狀態(tài)會話還是無狀態(tài)會話都需要借助EJB容器具有的集群功能實現(xiàn)并發(fā)控制,通過對home-is-clusterable,stateless-bean-is-clusterable,stateless-bean-load-algorithm和 stateless-bean-is-clusterableparameter等參數(shù)的設(shè)置提供負載平衡的功能。這就大大提高了系統(tǒng)的復雜度,更主要的是這使得系統(tǒng)的并行處理完全依賴于EJB容器,對于那些具有遺留系統(tǒng)的分布式應用程序設(shè)計,如何處理會話門面之后的對象的并發(fā)訪問就成了問題。在這種情況下,引入了單子模式(Singleton)[5]。

        3.1 單子模式(Singleton)

        Singleton模式是一種單線程的設(shè)計模式,主要作用是保證在Java應用程序中,一個類Class只有一個實例存在,這樣就可以避免并發(fā)沖突。singleton能夠被狀態(tài)化;這樣,多個單態(tài)類在一起就可以作為一個狀態(tài)倉庫一樣向外提供服務;另外方面,Singleton也能夠被無狀態(tài)化。Singleton類似于全局對象。但是實際上,并不能用全局對象代替Singleton模式,這是因為:其一,大量使用全局對象會使得程序質(zhì)量降低。其二,全局對象的方法并不能阻止人們將一個類實例化多次:除了類的全局實例外,開發(fā)人員仍然可以通過類的構(gòu)造函數(shù)創(chuàng)建類的多個局部實例,從而用于多線程的應用程序。而Singleton模式則通過從根本上控制類的創(chuàng)建,將“保證只有一個實例”這個任務交給了類本身,開發(fā)人員不可能再有其他途徑得到類的多個實例。這一點是全局對象方法與Singleton模式的根本區(qū)別。使用Singleton可以節(jié)省內(nèi)存,因為他限制了實例的個數(shù),有利于Java垃圾回收(garbage collection)。

        3.2 Session Facade模式與Singleton的結(jié)合

        將單子模式作為Session Facade模式的一個模塊,改進后的Session Facade模式可以稱為DPSF(Distributed Processing Session Facade),模式內(nèi)包括接口,負責輸入輸出,還包括多個連接,每條連接都可以把他看作是一個singleton的復制(replicate)(見圖3),可以處理一個進程,正好對應于單線程編程的業(yè)務對象。門面的接口從客戶端得到輸入,通過負載平衡的算法分配到對應的連接,該連接可能連到其他服務器上的業(yè)務對象,也可能是本機上的應用程序,每個連接處理完返回結(jié)果到接口,依次傳遞到對應的節(jié)點。在工作時,模式內(nèi)的每條連接都處于循環(huán)服務方式(service-loop),通過端口等待輸入,接收到輸入的信息后,將輸入傳遞給對應的Singleton,處理完后從原端口返回結(jié)果,創(chuàng)建實例,建立連接(見圖4)。

        外部經(jīng)常通過調(diào)用靜態(tài)方法Singleton.getInstance( )訪問單態(tài)類。用Singleton實現(xiàn)多線程的并發(fā)控制,實例延遲初始化(lazy initialization)的創(chuàng)建步驟是個關(guān)鍵的問題,通常可將該方法包含在并發(fā)處理的代碼中。DPSF中Singleton的實現(xiàn)方法如下:

        public class Singleton {

        private Singleton( ){ }

        //注意這是private 只供內(nèi)部調(diào)用

        public static synchronized Singleton getInstance( )

        {

        if ( instance = = 1 )

        {

        //多線程應用中的關(guān)鍵

        instance = new Singleton( );

        }

        return instance;

        }

        } 

        沒有實際訪問該實例的時候,就可以避免創(chuàng)建實例,防止浪費資源。

        4 結(jié) 語

        位于業(yè)務層的Session Facade 模式對于用J2EE設(shè)計分布式系統(tǒng)非常重要,提高了性能、降低了耦合性、使系統(tǒng)的層次更加清楚,而改進后的DPSF針對并行計算抽象并行處理的技術(shù),并且在艦船綜合后勤保障計算機輔助系統(tǒng)中得到應用,取得很好的效果。他避免了對J2EE服務器過度的依賴,尤其針對具有遺留系統(tǒng)的分布式應用程序的開發(fā)具有重要意義,而且作為一種可復用的模式,在改善系統(tǒng)性能的同時,使開發(fā)人員僅需提供一些應用專有的程序和節(jié)點間傳送數(shù)據(jù)和結(jié)果的通信代碼,大大提高系統(tǒng)開發(fā)的效率和可靠性。

        參 考 文 獻

        [1]曾文,章小芳.基于多設(shè)計模式在J2EE項目中的應用研究[J].微計算機應用,2005,26(1):110-112.

        [2]許文雨,申曉龍,譚獻海.J2EE設(shè)計模式的研究與應用[J].成都信息工程學院學報,2005,20(4):402-406.

        [3]Hansen P Brinch.Search for Simplicity:Essays in Parallel Programming[J].IEEE Computer Society Press,1996:422-446.

        [4]Deepak Alur,John Crupi,Dan Malks.Core J2EE(tm)Patterns:Best Practices and Design Strategies\\[M\\].Second Edition.Prentice Hall PTR,2003.

        [5]Erich Gamma,Richard Helms,Ralph Johnson,et al.Design Patterns:Elements of Reusable Object-Oriented Design [M].Addison-Wesley,1995.

        [6]Andrews G,Schneider F B.Concepts and Notations for Concurrent Programming[J].ACM Computing Surveys,1983,15(1).

        作者簡介 石 亮 女,1981年出生,江蘇鎮(zhèn)江人,助教。主要從事軟件工程理論與應用的研究。

        国产亚洲精品品视频在线| 中文字幕久久久久人妻无码| 欧美精品高清在线xxxx| 亚洲97成人精品久久久| 久久久久亚洲av无码专区首| 精品日韩欧美一区二区在线播放| 少妇无码av无码去区钱| 午夜国产在线精彩自拍视频| 包皮上有一点一点白色的 | 少妇被猛男粗大的猛进出| 在线不卡av天堂| 国产高清一区二区三区视频| 蜜桃视频网站在线观看一区| 国产视频一区二区三区久久亚洲| 日本三级香港三级人妇99| 东京热加勒比无码少妇| 福利视频一二区| 日本高清一区二区在线播放| 天天躁日日躁狠狠躁欧美老妇小说 | 亚洲av毛片成人精品| 性色av色香蕉一区二区蜜桃| av鲁丝一区鲁丝二区鲁丝三区| 亚洲妇女水蜜桃av网网站| 蜜桃在线观看免费高清完整版 | 日本精品少妇一区二区三区| 亚洲精品无码不卡av| 亚洲AV日韩Av无码久久| 一区二区三区四区亚洲免费| 人妻夜夜爽天天爽三区麻豆av网站| 国产福利酱国产一区二区 | 一区二区三区国产黄色| 亚洲一区二区三区尿失禁| 欧洲日本一线二线三线区本庄铃| 91精品国产91久久综合桃花| 国产美女冒白浆视频免费| 欧洲美熟女乱av亚洲一区| 性一乱一搞一交一伦一性| 国产人妖xxxx做受视频| 91三级在线观看免费| 久久无码av中文出轨人妻| 国产人澡人澡澡澡人碰视频|