基于WINDOWS消息隊(duì)列機(jī)制的遠(yuǎn)程通信研究論文_第1頁
基于WINDOWS消息隊(duì)列機(jī)制的遠(yuǎn)程通信研究論文_第2頁
基于WINDOWS消息隊(duì)列機(jī)制的遠(yuǎn)程通信研究論文_第3頁
基于WINDOWS消息隊(duì)列機(jī)制的遠(yuǎn)程通信研究論文_第4頁
基于WINDOWS消息隊(duì)列機(jī)制的遠(yuǎn)程通信研究論文_第5頁
已閱讀5頁,還剩55頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、基于windows消息隊(duì)列機(jī)制的遠(yuǎn)程通信研究摘 要隨著硬件設(shè)備和軟件技術(shù)的發(fā)展,網(wǎng)絡(luò)上的應(yīng)用也越來越復(fù)雜,應(yīng)用程序的體系結(jié)構(gòu)也從單層、兩層、三層到多層。分布式的網(wǎng)絡(luò)應(yīng)用成為網(wǎng)絡(luò)應(yīng)用的發(fā)展趨勢(shì)。但是,人們?cè)诟惺艿椒植际骄W(wǎng)絡(luò)應(yīng)用在解決大型復(fù)雜任務(wù)的優(yōu)越性的同時(shí),也愈來愈發(fā)現(xiàn)構(gòu)建和維護(hù)分布式應(yīng)用面臨的困難。一個(gè)是由于應(yīng)用程序往往分布在不同的不同的系統(tǒng)、不同的計(jì)算機(jī)上,如何將這些應(yīng)用程序有效的集成起來協(xié)同工作;另外,在以往,應(yīng)用程序之間的通訊一般是同步的通訊,而現(xiàn)在在很多情況下要求異步的通訊。應(yīng)用程序之間要能夠?qū)崿F(xiàn)異步的消息傳輸。為解決這樣的問題,消息隊(duì)列中間件應(yīng)運(yùn)而生。它的突出功能就表現(xiàn)在實(shí)現(xiàn)應(yīng)用程

2、序之間異步的消息傳輸以及集成分布的應(yīng)用程序。微軟的消息隊(duì)列中間件技術(shù)MSMQ是消息隊(duì)列中間件中的優(yōu)秀代表,它也是本文重點(diǎn)研究的對(duì)象。本文從消息中間件技術(shù)的出現(xiàn)原因引出消息中間件技術(shù)的相關(guān)概念并加以闡述,同時(shí)說明了MSMQ技術(shù)的實(shí)現(xiàn)方法與API函數(shù),最后在介紹了基于MSMQ的一個(gè)遠(yuǎn)程通訊系統(tǒng)的實(shí)現(xiàn),在該系統(tǒng)中封裝了MSMQ的windowsAPI函數(shù)。關(guān)鍵詞:分布式網(wǎng)絡(luò)應(yīng)用,中間件石消息隊(duì)列中間件;異步消息傳輸;MSMQAbstractWith the hardware and software technology development, application on the network

3、also more complex, application architecture from single-layer, two-story, three-tier to high-rise. Distributed network applications become the development trend of network applications. However, it was felt in the distributed network applications in resolving large and complex task of the superiorit

4、y at the same time, also found that more and more construction and maintenance of distributed applications the difficulties facing them. As an application is often distributed in various different systems, different computer, how effective these applications work together to integrate addition, in t

5、he past, communication between the application is generally synchronous communication, and now In many cases the requirements of asynchronous communication. Applications must be achieved between the news asynchronous transmission. To solve this problem, message queue middleware emerged. It functions

6、 on the outstanding performance in achieving the application of information between asynchronous transmission and distribution of integrated applications. Microsofts Message Queue middleware technology MSMQ message queue is in an excellent representative of middleware, it is this focus on the target

7、. This article from the news middleware technology leads to the emergence of the reasons for information related to the concept of middleware technology and expand the MSMQ technology at the same time that the method and API function, in the final based on MSMQ on a long-range communications systems

8、 to achieve, in the system Packaging in the MSMQ the windowsAPI function.Key Words: distributed network application,middleware,message queuemiddleware,asynchronous message transmission,MSMQ 目 錄1 緒論11.1 課題提出的背景和意義11.1.1網(wǎng)絡(luò)應(yīng)用面臨的挑戰(zhàn)11.1.2 消息隊(duì)列中間件(MQM)的出現(xiàn)11.2 國內(nèi)外發(fā)展現(xiàn)狀21.3 本文主要研究內(nèi)容32. 應(yīng)用程序體系結(jié)構(gòu)42.1 單層應(yīng)用體系結(jié)構(gòu)模

9、型42.2 兩層應(yīng)用體系結(jié)構(gòu)模型42.3 多層應(yīng)用體系結(jié)構(gòu)模型52.4Internet應(yīng)用體系結(jié)構(gòu)63 中間件83.1什么是中間件83.2 中間件要解決的問題83.3 中間件的分類93.4中間件技術(shù)的發(fā)展趨勢(shì)124. MSMQ概述134.1 MSMQ的功能134.2 MSMQ的網(wǎng)絡(luò)拓?fù)?44.3 MSMQ網(wǎng)絡(luò)組件164.3.1MSMQ服務(wù)器164.3.2MSMQ獨(dú)立客戶端164.3.3MSMQ從屬客戶174.3.4MSMQ Exchange連接器與MSMQ API174.4 MSMQ隊(duì)列類型184.5 消息類型184.6消息路由204.7隊(duì)列管理器204.8組件隊(duì)列215. MSMQ的安裝24

10、6MSMQ的編程246.1COM246.6.1com概述246.6.2接口256.2MSMQ編程模型286.3創(chuàng)建隊(duì)列296.3.1公有隊(duì)列296.3.2私有隊(duì)列296.4隊(duì)列定位296.5消息發(fā)送306.6消息接收與窺探307. MSMQ API的封裝307.1創(chuàng)建發(fā)送與接收隊(duì)列327.2發(fā)送消息到遠(yuǎn)程計(jì)算機(jī)消息隊(duì)列并保存到本機(jī)337.3消息的組包發(fā)送377.4隊(duì)列的刪除407.5隊(duì)列中消息的刪除428.系統(tǒng)的實(shí)現(xiàn)458.1系統(tǒng)主界面458.2消息發(fā)送468.2.1發(fā)送消息468.2.2組包消息發(fā)送478.3隊(duì)列消息查看488.3.1查看發(fā)送隊(duì)列488.3.2查看接收隊(duì)列48參考文獻(xiàn)50致

11、謝511 緒論1.1 課題提出的背景和意義1.1.1網(wǎng)絡(luò)應(yīng)用面臨的挑戰(zhàn)網(wǎng)絡(luò)技術(shù)近些年來發(fā)展得很快,硬件設(shè)備的性能越來越強(qiáng)大,所承載的網(wǎng)絡(luò)應(yīng)用也越來越復(fù)雜。體系結(jié)構(gòu)從集中式,到兩層模式,到三層模式,直至多層模式。毫無疑問,網(wǎng)絡(luò)應(yīng)用的復(fù)雜化,大型化是軟件技術(shù)發(fā)展的必然,也是任務(wù)復(fù)雜化直接推動(dòng)的結(jié)果。分布式的網(wǎng)絡(luò)應(yīng)用在許多領(lǐng)域都提供了最佳的解決方案。以至分布式網(wǎng)絡(luò)成為一個(gè)極為熱門的研究方向。但是,在分布式網(wǎng)絡(luò)應(yīng)用發(fā)展的過程中,卻面臨著兩個(gè)頗為棘手的問題。(1) 在大型的分布式網(wǎng)絡(luò)應(yīng)用中,不同的應(yīng)用運(yùn)行在不同的進(jìn)程,分布在不同的計(jì)算機(jī)上,甚至跨系統(tǒng),跨網(wǎng)絡(luò),如何將這些應(yīng)用有效地集成,使不同的應(yīng)用能夠保

12、持良好的通訊,真正發(fā)揮分布式應(yīng)用的巨大優(yōu)越性。這一點(diǎn)成為衡量一個(gè)網(wǎng)絡(luò)應(yīng)用是否可靠,是否穩(wěn)定的重要標(biāo)準(zhǔn)。(2) 在分布式網(wǎng)絡(luò)應(yīng)用中,越來越多的應(yīng)用程序之間的通訊不僅要求可以同步發(fā)送接收,還要求能夠?qū)崿F(xiàn)異步的通訊。而傳統(tǒng)的通訊技術(shù)一般都要求發(fā)方應(yīng)用和接收方應(yīng)用同時(shí)在線,而且發(fā)送者和接收者還要知道互相的程序?qū)Τ绦虻恼{(diào)用接口。實(shí)際情況卻是,應(yīng)用程序并不總是同時(shí)在線;網(wǎng)絡(luò)的硬件故障往往不可避免;數(shù)據(jù)的流量具有突發(fā)性,可能造成網(wǎng)絡(luò)的信息擁塞;某個(gè)應(yīng)用需要立即得到處理,而另外一個(gè)應(yīng)用卻可以緩一緩,它們應(yīng)當(dāng)區(qū)別對(duì)待;這樣一來,應(yīng)用之間的異步通訊問題變得非常突出。1.1.2 消息隊(duì)列中間件(MQM)的出現(xiàn)應(yīng)用消

13、息隊(duì)列中間件(MessageQueueMiddleware)技術(shù),就能夠很好的解決以上問題。總的來講,消息隊(duì)列中間件的作用體現(xiàn)在兩個(gè)方面,一是集成大型的分布式應(yīng)用,二是確保分布式應(yīng)用之間的異步通訊。MQM提供可靠的異步的和松散偶合的通信服務(wù)。MQM在其它傳統(tǒng)的通訊方法不能奏效時(shí)能夠成功,因?yàn)樗鼭M足三個(gè)重要的條件:1) 發(fā)送者和接收者無須同時(shí)連接。2) 即使發(fā)送者和接收者之間的通訊不是同時(shí)發(fā)生的,也會(huì)有極強(qiáng)的請(qǐng)求和回答傳送保障。3) 請(qǐng)求和回答可以通過發(fā)送方和接收方之間的路由器進(jìn)行翻譯和重新格式化。 利用MQM,應(yīng)用程序通過一系列消息在彼此間進(jìn)行通信。當(dāng)消息在發(fā)送方和接收方之間進(jìn)行傳送時(shí),MQM

14、提供方將消息限定在控制域內(nèi),這個(gè)控制域叫做隊(duì)列,因此才有“消息隊(duì)列中間件”的名稱。隊(duì)列防止消息在傳輸過程中被丟失,并在消息準(zhǔn)備好時(shí)為接收方提供一個(gè)尋找消息的地方.應(yīng)用程序通過向預(yù)定接收方相關(guān)的隊(duì)列發(fā)送消息來產(chǎn)生請(qǐng)求。如果發(fā)送方希望得到回答,它們通常在所有發(fā)送給接收方的請(qǐng)求中包含應(yīng)答隊(duì)列的名字。MQM的作用主要體現(xiàn)在以下幾點(diǎn)(1)存儲(chǔ)和轉(zhuǎn)發(fā)(Store-and-forward)通信MQM能使應(yīng)用程序向其他應(yīng)用程序發(fā)送請(qǐng)求,而那些應(yīng)用程序不必正在運(yùn)行或是可到達(dá)。(2)防御通信MQM 軟 件 使用強(qiáng)大的技術(shù)來保證消息在傳送中不會(huì)丟失,打亂順序或重復(fù)傳送。(3)并發(fā)執(zhí)行使用MQM ,應(yīng)用程序可以向許多

15、不同的接受方發(fā)送請(qǐng)求而不必等待響應(yīng);等待接受方可以平行地處理請(qǐng)求;當(dāng)所有的響應(yīng)消息都到達(dá)時(shí),或無論什么時(shí)候只要方便,應(yīng)用程序就處理結(jié)果。(4) 日志通信MQM產(chǎn)品可以產(chǎn)生日志,以利于記錄,核查和錯(cuò)誤恢復(fù)。1.2 國內(nèi)外發(fā)展現(xiàn)狀消息隊(duì)列中間件技術(shù)并不是最新技術(shù),早期,由于沒有統(tǒng)一的,適合各種情況和平臺(tái)的消息隊(duì)列產(chǎn)品,人們往往自己編寫消息隊(duì)列中間件,這些消息隊(duì)列中間件雖然可以起到相關(guān)的作用,但是它們還是太專門,太原始,費(fèi)用太高。因此,許多大的公司就開始開發(fā)適用于各種情況和平臺(tái)的消息隊(duì)列中間件產(chǎn)品,最著名的有IBM的MQSeries和Microsoft的MSMQ,這兩個(gè)產(chǎn)品都有很好的跨平臺(tái)性,適用面

16、很廣,現(xiàn)在許多公司采用它們作為中間件的一部分。而最近兩三年,由于中間件的(包括消息隊(duì)列中間件)市場(chǎng)銷t以驚人的速度增長,國外專門做中間件的公司越來越多,工業(yè)級(jí)的產(chǎn)品也越來越多。中間件技術(shù)在保證系統(tǒng)的安全性,可伸縮性,可用性,可管理性,互操作性,適應(yīng)性,分布式需求等等方面都有了很大的進(jìn)展。中間件被廣泛用于銀行,電信,金融,電子商務(wù),大型企業(yè)化制造,國家安全等等領(lǐng)域。據(jù)工DC預(yù)測(cè),到2002年全球中間件市場(chǎng)銷售額將達(dá)到80億美元;在中國,1998年中間件市場(chǎng)總值僅為12.34億美元,而到2004年將達(dá)到90.3億美元,年增長率高達(dá)39.7%。中間件市場(chǎng)空間之大,成長率之高,由此可見一斑。面對(duì)全球中

17、間件技術(shù)和市場(chǎng)的發(fā)展態(tài)勢(shì),我們國家的情況是怎樣的了?客觀來講,我們?cè)谟?jì)算機(jī)系統(tǒng)軟件,以及一些關(guān)鍵性的大型應(yīng)用軟件方面的落后是不爭(zhēng)的事實(shí),這一點(diǎn),相信國人都有切膚之痛.但是對(duì)于中間件,我們?cè)僖膊荒苈浜罅恕@碛捎卸?首先中間件作為操作系統(tǒng)之上的獨(dú)立的系統(tǒng)軟件或服務(wù)程序,其市場(chǎng)潛力極其巨大,如果我們將這一市場(chǎng)再次拱手讓給外國,我們將會(huì)面臨巨大的經(jīng)濟(jì)損失。這里有一個(gè)現(xiàn)實(shí)的例子.BEA中間件剛進(jìn)入中國的時(shí)候,報(bào)價(jià)是4000萬美元,后來出現(xiàn)了一個(gè)國內(nèi)的競(jìng)爭(zhēng)者清華北美公司,BEA的報(bào)價(jià)馬上就降為300萬人民幣,其間的懸殊令人乍舌。其次,中間件技術(shù)在國外的發(fā)展歷史也不長,也是近幾年的事情,我們雖然起步稍微遲了

18、一點(diǎn),但是完全有趕上的可能。目前國內(nèi)專門的中間件廠商雖然只有一兩家,但是它們的技術(shù)在很多方面并不比國外差。譬如東方通的TongLINK/Q(消息隊(duì)列中間件)已經(jīng)占領(lǐng)了中國建設(shè)銀行的業(yè)務(wù)份額,另外幾家大的金融單位和電信單位(包括中國聯(lián)通)也采用了東方通的產(chǎn)品.1.3 本文主要研究內(nèi)容論文從網(wǎng)絡(luò)應(yīng)用面臨的問題和挑戰(zhàn)入手,研究了中間件技術(shù),對(duì)其概念、功能、類別、發(fā)展趨勢(shì)等方面進(jìn)行了闡述。接著對(duì)中間件中最熱門,發(fā)展最快的消息隊(duì)列中間件技術(shù)進(jìn)行了剖析,尤其是它的消息處理機(jī)制和同步通訊協(xié)議的對(duì)比。消息隊(duì)列技術(shù)的優(yōu)秀代表MSMQ,是本論文的研究的重點(diǎn),詳細(xì)闡述了它的基本概念、特點(diǎn)、使用和管理、編程等等方面。

19、并結(jié)合一個(gè)具體的應(yīng)用來展示消息隊(duì)列技術(shù)在應(yīng)用程序通訊,數(shù)據(jù)傳輸方面的優(yōu)越性。文章最后以一個(gè)系統(tǒng)為例詳細(xì)說明對(duì)MSMQAPI的封裝,與消息隊(duì)列基本功能的實(shí)現(xiàn)。2. 應(yīng)用程序體系結(jié)構(gòu)任何一個(gè)應(yīng)用程序的設(shè)計(jì)開發(fā)的最重要的元素之一就是如何進(jìn)行系統(tǒng)架構(gòu)。系統(tǒng)架構(gòu)定義一個(gè)應(yīng)用程序的各個(gè)模塊之間如何相互作用,以及每個(gè)模塊負(fù)責(zé)執(zhí)行什么樣的功能。從純功能的觀點(diǎn)來看,大多數(shù)應(yīng)用程序主要處理如下三種任務(wù):獲取用戶輸入,將輸入存儲(chǔ)為數(shù)據(jù),按預(yù)定的操作程序處理這些數(shù)據(jù)。目前流行的主要有三種應(yīng)用程序體系結(jié)構(gòu)模型,各應(yīng)用體系模型就是根據(jù)在用戶與數(shù)據(jù)之間所具有的層次來劃分的。每一層次一般都運(yùn)行在不同的系統(tǒng)或是相同系統(tǒng)的不同進(jìn)

20、程空間內(nèi)。這三種應(yīng)用體系結(jié)構(gòu)模型分別就是單層應(yīng)用體系結(jié)構(gòu)模型、兩層應(yīng)用體系結(jié)構(gòu)模型、多層(可以是三層或三層以上)應(yīng)用體系結(jié)構(gòu)模型。2.1 單層應(yīng)用體系結(jié)構(gòu)模型單層應(yīng)用體系結(jié)構(gòu)模型在單一的應(yīng)用層內(nèi)實(shí)現(xiàn)用戶界面、商業(yè)規(guī)則、數(shù)據(jù)管理。對(duì)數(shù)據(jù)本身來說,它可以是物理上位于一個(gè)遠(yuǎn)端位置,但是存取數(shù)據(jù)的邏輯卻是應(yīng)用程序的一部分。在這樣的體系結(jié)構(gòu)中,數(shù)據(jù)處理主要不是通過數(shù)據(jù)庫,而是文件來存取數(shù)據(jù),應(yīng)用程序自己定義如何進(jìn)行數(shù)據(jù)的存儲(chǔ)、查詢、讀取等運(yùn)算邏輯。單層應(yīng)用的一個(gè)最普遍的例子就是字處理器:它有一個(gè)用戶界面用于接收鍵盤輸入以及顯示輸出,它有眾多商業(yè)規(guī)則來完成頁碼標(biāo)記、拼寫檢查等功能,它還有一些文件存取程序來

21、管理數(shù)據(jù)文檔。單機(jī)應(yīng)用特別是Windows的應(yīng)用程序多數(shù)屬于這種單層模型。這種模型的好處在于應(yīng)用程序的前期分析和設(shè)計(jì)比較簡(jiǎn)單,但是后期的維護(hù)會(huì)變得非常麻煩,因?yàn)橛脩艚缑?、商業(yè)規(guī)則、數(shù)據(jù)管理交織在一起,對(duì)任何一部分的改動(dòng)都會(huì)影響到其它部分。2.2 兩層應(yīng)用體系結(jié)構(gòu)模型在兩層應(yīng)用體系結(jié)構(gòu)模型中,商業(yè)規(guī)則和用戶界面仍然結(jié)合在一起構(gòu)成應(yīng)用程序的客戶端。但是數(shù)據(jù)的存取和管理獨(dú)立出來由單獨(dú)的通常是運(yùn)行在不同的系統(tǒng)上的程序來來完成,這樣的數(shù)據(jù)存取和管理程序通常就是象SQL Server或Oracle這樣的數(shù)據(jù)庫系統(tǒng)。熟知的Client/Server就是這樣的兩層結(jié)構(gòu),基于Client/Server結(jié)構(gòu)的應(yīng)用

22、在局域網(wǎng)的應(yīng)用中占絕大多數(shù)。以下是該結(jié)構(gòu)的典型模型:圖 1典型的兩層體系結(jié)構(gòu)模型在兩層應(yīng)用體系結(jié)構(gòu)模型中,還有一種情況是用戶界面單獨(dú)為一層,商業(yè)規(guī)則和數(shù)據(jù)處理合而為一構(gòu)成另一層。這種結(jié)構(gòu)的典型例子就是商業(yè)規(guī)則以存放在數(shù)據(jù)庫服務(wù)器內(nèi)的存儲(chǔ)過程來體現(xiàn)。存儲(chǔ)過程是數(shù)據(jù)庫系統(tǒng)的一個(gè)重要功能,每個(gè)存儲(chǔ)過程就是存儲(chǔ)在數(shù)據(jù)庫服務(wù)器上的一段程序,它指明如何進(jìn)行一系列的數(shù)據(jù)庫操作。存儲(chǔ)過程可以直接被客戶端調(diào)用,此外還有一種觸發(fā)機(jī)制可以調(diào)用執(zhí)行存儲(chǔ)過程:當(dāng)數(shù)據(jù)滿足一定條件時(shí),觸發(fā)一個(gè)事件,引起相應(yīng)的存儲(chǔ)過程被調(diào)用執(zhí)行.Client/Server結(jié)構(gòu)模型的一個(gè)最大的好處在于:通過允許多用戶同時(shí)存取相同的數(shù)據(jù),來自一

23、個(gè)用戶的數(shù)據(jù)更新可以立即被連接到服務(wù)器上的所有用戶訪問。這種結(jié)構(gòu)的缺點(diǎn)也很明顯:當(dāng)客戶端的數(shù)目增加時(shí),服務(wù)器端的負(fù)載會(huì)逐漸加大,直到系統(tǒng)承受不了眾多的客戶請(qǐng)求而崩潰;此外,由于商業(yè)規(guī)則的處理邏輯和用戶界面程序交織在一起,因此商業(yè)規(guī)則的任何改動(dòng)都將是費(fèi)錢、費(fèi)時(shí)、費(fèi)力的。雖然兩層結(jié)構(gòu)模型為許多小規(guī)模商業(yè)應(yīng)用帶來簡(jiǎn)便、靈活性,但是對(duì)快速數(shù)據(jù)訪問以及更短的開發(fā)周期的需求驅(qū)使應(yīng)用系統(tǒng)開發(fā)人員去尋找一條新的創(chuàng)建分布式應(yīng)用的道路,那就是多層應(yīng)用體系結(jié)構(gòu)模型.2.3 多層應(yīng)用體系結(jié)構(gòu)模型在多 層 應(yīng) 用體系結(jié)構(gòu)模型中,商業(yè)規(guī)則被進(jìn)一步從客戶端獨(dú)立出來,運(yùn)行在一個(gè)介于用戶界面和數(shù)據(jù)存儲(chǔ)的單獨(dú)的系統(tǒng)之上?,F(xiàn)在,客

24、戶端程序提供應(yīng)用系統(tǒng)的用戶界面,用戶輸入數(shù)據(jù),查看反饋回來的請(qǐng)求結(jié)果,對(duì)于Web應(yīng)用,瀏覽器是客戶端用戶界面,對(duì)于非Web應(yīng)用,客戶端是獨(dú)立的編譯后的前端應(yīng)用程序;商業(yè)中間層由封裝了商業(yè)邏輯的組件構(gòu)成,這些商業(yè)邏輯組件模擬日常的商業(yè)任務(wù),通常是一種COM組件或者CORBA組件:數(shù)據(jù)層可以是一個(gè)象SQLServer這樣的數(shù)據(jù)庫管理系統(tǒng),或者是象Exchange這樣的非結(jié)構(gòu)化數(shù)據(jù)交換系統(tǒng),還可以是象事務(wù)處理或消息隊(duì)列這樣事務(wù)處理機(jī)制,應(yīng)用程序可以選擇一個(gè)或多個(gè)這樣的數(shù)據(jù)服務(wù)。商業(yè)規(guī)則處理并確保所有的商業(yè)過程正確執(zhí)行。在這種多層體系模型中,客戶端程序不能直接存取數(shù)據(jù),從而為數(shù)據(jù)的安全性和完整性帶來保

25、障。這種結(jié)構(gòu)帶來的好處就是應(yīng)用系統(tǒng)的每一個(gè)部分都可以被單獨(dú)修改而不會(huì)影響到另外兩個(gè)部分。此外,因?yàn)槊恳粚又g是通過接口來相互通信的,所以只要接口保持不變,內(nèi)部程序的變化就不會(huì)影響到系統(tǒng)的應(yīng)用其余部分。以下是典型的應(yīng)用程序結(jié)構(gòu):圖 2典型的多層應(yīng)用體系結(jié)構(gòu)模型在多層體系結(jié)構(gòu)模型中,各應(yīng)用層并不一定要分布在網(wǎng)絡(luò)上不同機(jī)器的物理位置上,而可以只是分布在邏輯上的不同位置,此外各應(yīng)用層和網(wǎng)絡(luò)物理拓?fù)渲g并不需要有一一對(duì)應(yīng)關(guān)系,每個(gè)應(yīng)用層在物理拓?fù)渖系姆植伎梢园聪到y(tǒng)需求而變化.比如,商業(yè)中間層和數(shù)據(jù)處理層可以位于裝有IIS Web服務(wù)器和SQLServer數(shù)據(jù)庫服務(wù)器的同一臺(tái)機(jī)器。使用多層體系結(jié)構(gòu)模型為應(yīng)

26、用程序的生命周期帶來諸多好處,包括:可復(fù)用性、適應(yīng)性、易管理性、可維護(hù)性、可伸縮性。你可以將你創(chuàng)建的組件和服務(wù)共享和復(fù)用,并按需求通過計(jì)算機(jī)網(wǎng)絡(luò)分發(fā)。你可以將大型的、復(fù)雜的工程項(xiàng)目分解成簡(jiǎn)單安全的眾多子模塊,并分派給不同的開發(fā)人員或開發(fā)小組。你可以在服務(wù)器上配置組件和服務(wù)以幫助跟蹤需求的變化,并且當(dāng)應(yīng)用程序的用戶荃礎(chǔ)、數(shù)據(jù)、交易t增加時(shí)可以重新部署。多層應(yīng)用程序?qū)⒚總€(gè)主要的功能隔離開來。用戶顯示層獨(dú)立于商業(yè)中間層,而商業(yè)中間層獨(dú)立于數(shù)據(jù)處理層。設(shè)計(jì)這樣的多層應(yīng)用程序需要進(jìn)行權(quán)衡:它在初始階段需要更多的分析和設(shè)計(jì),但在后期階段會(huì)大大減少維護(hù)費(fèi)用并且增加功能適應(yīng)性。中間商業(yè)層組件可以按響應(yīng)時(shí)間或其

27、它規(guī)則的需要移動(dòng)到不同的位置。例如,移動(dòng)到用戶層以加強(qiáng)用戶界面處理功能并且可以減少網(wǎng)絡(luò)的數(shù)據(jù)往復(fù),通過存儲(chǔ)過程將數(shù)據(jù)規(guī)則移動(dòng)到數(shù)據(jù)層來實(shí)現(xiàn)。只有當(dāng)具有多重?cái)?shù)據(jù)源時(shí),數(shù)據(jù)規(guī)則獨(dú)立為一層才變得至關(guān)重要。在多層體系結(jié)構(gòu)模型中,客戶端應(yīng)用程序變得比在Client/Server這樣的兩層體系結(jié)構(gòu)模型中更為小巧,因?yàn)榉?wù)組件已經(jīng)分布在中間商業(yè)層。這種方式帶來的結(jié)果是在用戶上的一般管理費(fèi)用降低,但是由于服務(wù)組件分布在不同的機(jī)器上,因此系統(tǒng)的通信量會(huì)大大增加。2.4Internet應(yīng)用體系結(jié)構(gòu)過去的一段時(shí)間,許多大大小小的公司都在為功能越來越強(qiáng)大、費(fèi)用越來越低廉的個(gè)人計(jì)算機(jī)建立強(qiáng)壯的應(yīng)用程序。而當(dāng)這些應(yīng)用程序

28、每天被成百上千萬的用戶使用時(shí),新興的技術(shù)也同時(shí)為應(yīng)用軟件開發(fā)人員及應(yīng)用軟件系統(tǒng)平臺(tái)帶來意義深遠(yuǎn)的影響.Internet 技術(shù)的發(fā)展為全球信息在大小企業(yè)以及個(gè)人之間的共享奠定了基礎(chǔ)。Internet催動(dòng)著技術(shù)創(chuàng)新,競(jìng)爭(zhēng)和加速的變化腳步使得對(duì)快速開發(fā)具有高適應(yīng)性應(yīng)用程序的方法模型的需求日益迫切。各種應(yīng)用體系結(jié)構(gòu)模型都可以用于Internet應(yīng)用開發(fā),但是在單層、兩層、多層這三種模型中,多層應(yīng)用體系結(jié)構(gòu)模型是開發(fā)Internet應(yīng)用的最好的應(yīng)用模型。基于 We b的應(yīng)用多數(shù)屬于多層應(yīng)用體系結(jié)構(gòu).Web技術(shù)如HTML,D HTML.XML等表示的標(biāo)記語言為用戶層界面帶來了更好的信息顯示方式,豐富了用戶

29、界面層的應(yīng)用;Web服務(wù)器如IIS. Apache等架設(shè)在用戶層瀏覽器和數(shù)據(jù)層數(shù)據(jù)庫服務(wù)器之間,一方面通過CGI. ASP等直接為Web應(yīng)用提供中間商業(yè)層服務(wù),另一方面驅(qū)動(dòng)商業(yè)邏輯組件提供中間層服務(wù):接受來自瀏覽器的服務(wù)請(qǐng)求,傳遞給數(shù)據(jù)庫服務(wù)器,并將從數(shù)據(jù)庫服務(wù)器返回而來的數(shù)據(jù)提供給用戶層瀏覽器;隨著Web應(yīng)用的增加,數(shù)據(jù)層數(shù)據(jù)庫服務(wù)器也變得日益重要。應(yīng)用于Internet的三層應(yīng)用體系結(jié)構(gòu)模型也有很大的缺限。這種模型將絕大部分工作交由服務(wù)器進(jìn)行:數(shù)據(jù)存儲(chǔ)在服務(wù)器,商業(yè)應(yīng)用程序代碼存儲(chǔ)在服務(wù)器,數(shù)據(jù)的加工、處理在服務(wù)器端進(jìn)行,程序的執(zhí)行也在服務(wù)器端,客戶端瀏覽器只簡(jiǎn)單地用于顯示由服務(wù)器端傳來的

30、標(biāo)記語言頁面。這是一種瘦客戶端-胖服務(wù)器端模式,它缺點(diǎn)之一是代價(jià)昂貴,能滿足要求的服務(wù)器價(jià)格是不菲的;缺點(diǎn)之二是客戶端計(jì)算功能的嚴(yán)重浪費(fèi),今天的PC機(jī)已具有相當(dāng)大的運(yùn)算能力以及相當(dāng)?shù)土膬r(jià)格,真正好的應(yīng)用模式應(yīng)該對(duì)PC運(yùn)算能力加以充分利用;缺點(diǎn)之三是寫服務(wù)器商業(yè)應(yīng)用程序的要求是很苛刻的,應(yīng)用程序的任何微小的失誤在多用戶訪問情況下將很快導(dǎo)致服務(wù)器系統(tǒng)的崩潰;缺點(diǎn)之四是集中式的數(shù)據(jù)訪問將會(huì)在Web服務(wù)器上產(chǎn)生數(shù)據(jù)傳輸瓶頸。如果采用單層或兩層體系結(jié)構(gòu)模型,那么當(dāng)用戶想要運(yùn)行一個(gè)應(yīng)用程序時(shí),必須將該應(yīng)用程序整個(gè)下載到客戶端用戶機(jī)器,即便用戶只需要該應(yīng)用程序的部分功能或只須臨時(shí)用一下該應(yīng)用程序。不言而喻

31、,這種模式不適合Web應(yīng)用。Web應(yīng)用的一個(gè)特點(diǎn)是Web上存在著無數(shù)的應(yīng)用程序,如果用戶每訪問一個(gè)這樣的應(yīng)用程序都必須先完全下載完全安裝然后才能運(yùn)行,那么無論是時(shí)間效率還是用戶的機(jī)器都是不現(xiàn)實(shí)的。此外,這種應(yīng)用模式在安裝、升級(jí)、維護(hù)方面都極為不便,這是因?yàn)槊看伟惭b、升級(jí)、維護(hù)都必須在每臺(tái)用戶機(jī)器上進(jìn)行。分析一下從單層體系結(jié)構(gòu)到兩層體系結(jié)構(gòu)再到多層體系結(jié)構(gòu)的發(fā)展過程,可以看出隱含其間的是一個(gè)完整的應(yīng)用程序逐步被分割為不同的組成成份:先是數(shù)據(jù)存取和管理獨(dú)立出來成為單獨(dú)的數(shù)據(jù)層,然后是商業(yè)邏輯處理獨(dú)立出來構(gòu)成單獨(dú)的商業(yè)中間層。每一次的分割都帶來不同層度的好處。分割到最后,一個(gè)完整的應(yīng)用就包括用戶層顯

32、示頁面、商業(yè)中間層的商業(yè)邏輯組件、數(shù)據(jù)層數(shù)據(jù)庫系統(tǒng)。當(dāng)前流行的商業(yè)邏輯組件主要是基于COM/DCOM組件模型或者基于CORBA組件模型。所有的這些頁面或組件都成為不可再分割的單元。3 中間件3.1什么是中間件中間件是一種獨(dú)立的系統(tǒng)軟件或服務(wù)程序,分布式應(yīng)用軟件借助這種軟件在不同的技術(shù)之間共享資源,中間件位于客戶機(jī)服務(wù)器的操作系統(tǒng)之上,管理計(jì)算資源和網(wǎng)絡(luò)通訊.從中間件的定義可以看出,中間件是一類軟件,而非一種軟件;間件不僅僅實(shí)現(xiàn)互連,還要實(shí)現(xiàn)應(yīng)用之間的互操作;中間件是基于分布式處理的軟件,定義中特別強(qiáng)調(diào)了其網(wǎng)絡(luò)通訊功能.圖 3 中間件在應(yīng)用中的位置3.2 中間件要解決的問題 首先,應(yīng)用的互連和互

33、操作是中間件要解決的第一位的問題。不管這些應(yīng)用分布在什么硬件平臺(tái)上,使用了什么數(shù)據(jù)庫,透過了多么復(fù)雜的網(wǎng)絡(luò),或是同一電腦中的不同應(yīng)用系統(tǒng).這里所說的互連和互操作是應(yīng)用之間而不是說系統(tǒng)之間的,因?yàn)橹虚g件是一種應(yīng)用級(jí)的軟件,是一種應(yīng)用集成的關(guān)鍵構(gòu)件,一個(gè)好的中間件產(chǎn)品要能解決應(yīng)用互連帶來的各種問題,通訊要支持各種通訊協(xié)議、各種通訊服務(wù)模式、傳輸各種數(shù)據(jù)內(nèi)容、數(shù)據(jù)格式翻譯、流量控制、數(shù)據(jù)加密、數(shù)據(jù)壓縮等;中間件核心要解決名字服務(wù)、安全控制、并發(fā)控制、可靠性保證、效率保證等。應(yīng)用開發(fā)要能提供基于不同平臺(tái)的豐富的開發(fā)接口、支持流行的開發(fā)工具、支持流行的異構(gòu)互連接口標(biāo)準(zhǔn)(如XA、工DL等);系統(tǒng)管理要解決

34、對(duì)中間件本身的配置、監(jiān)控、調(diào)諧,為系統(tǒng)的易用易管理提供保證.其次 , 針 對(duì)不同的應(yīng)用領(lǐng)域,對(duì)中間件又有各種不同的要求。由于實(shí)際的應(yīng)用環(huán)境千差萬別,不能指望有一種包羅萬象的中間件解決所有的問題。對(duì)于郵件系統(tǒng)需要提供存儲(chǔ)轉(zhuǎn)發(fā)功能;對(duì)工作流應(yīng)用需要以條件滿足狀態(tài)將信息從一個(gè)應(yīng)用傳遞到另一個(gè)應(yīng)用;對(duì)聯(lián)機(jī)交易處理系統(tǒng),需要保證數(shù)據(jù)一致性、不停機(jī)作業(yè)、大量并發(fā)的高效率;對(duì)于一個(gè)數(shù)據(jù)采集系統(tǒng)需要保證可靠傳輸,等等.3.3 中間件的分類在討論中間件的分類前,先分析一下應(yīng)用之間常用的會(huì)話方式。一般地,應(yīng)用級(jí)的會(huì)話有兩種方式,各類中間件都是基于這兩種會(huì)話方式一種是同步方式,客戶方向服務(wù)方發(fā)出請(qǐng)求后,等待服務(wù)方返

35、回的結(jié)果,在收到服務(wù)方的處理結(jié)果前不做其它處理。在這種方式下,客戶方在等待服務(wù)方的處理結(jié)果時(shí),可以結(jié)合“超時(shí)”概念,在規(guī)定時(shí)限內(nèi),如果客戶方還未收到服務(wù)方的處理結(jié)果,則本次請(qǐng)求失敗。同步方式可能因?yàn)閾頂D的網(wǎng)絡(luò)環(huán)境造成災(zāi)難,當(dāng)客戶方超時(shí)時(shí)間到而未收到服務(wù)方的應(yīng)答時(shí),客戶方本次請(qǐng)求失敗,它會(huì)去重新發(fā)起請(qǐng)求。這會(huì)造成惡性循環(huán),大大降低網(wǎng)絡(luò)上的處理效率.另一種會(huì)話方式是異步方式,客戶方在等待服務(wù)方的處理結(jié)果時(shí)可以去完成其它任務(wù)。在異步方式下,當(dāng)一個(gè)節(jié)點(diǎn)向另外一個(gè)節(jié)點(diǎn)發(fā)出消息后,不等待應(yīng)答。因而一個(gè)消息發(fā)送完成后,發(fā)送方就可以去處理其它事情。但不幸的是發(fā)送方也可以發(fā)送新的消息,因而同樣會(huì)造成網(wǎng)絡(luò)擁堵.中

36、間件的分類方式很多,按照IDC的分類方法,中間件可分為六類(1)終端仿真/屏幕轉(zhuǎn)換用 以實(shí) 現(xiàn) 客戶機(jī)圖形用戶接口與已有的字符接口方式的的服務(wù)器應(yīng)用程序之間的互操作(2)數(shù)據(jù)訪問中間件適用于應(yīng)用程序與數(shù)據(jù)源之間的互操作模型,客戶端使用面向數(shù)據(jù)庫的API,以提請(qǐng)直接訪問和更新墓于服務(wù)器的數(shù)據(jù)源,數(shù)據(jù)源可以是關(guān)系型、非關(guān)系型和對(duì)象型。這類中間件大都基于SQL語句,采用同步通訊方式.此類中間件使應(yīng)用開發(fā)簡(jiǎn)單,但如果是透過廣域網(wǎng)使用,會(huì)帶來嚴(yán)重的效率問題,因?yàn)樵诘退倬W(wǎng)上來回交互SQL語句會(huì)使通訊流量過大,同時(shí)對(duì)數(shù)據(jù)壓縮、加密帶來不便.(3)遠(yuǎn)程過程調(diào)用中間件遠(yuǎn)程 過 程 調(diào)用是一種廣泛使用的分布式應(yīng)用

37、程序處理方法。一個(gè)應(yīng)用程序使用RPC來“遠(yuǎn)程”執(zhí)行一個(gè)位于不同地址空間里的過程,并且從效果上看和執(zhí)行本地調(diào)用相同。事實(shí)上,一個(gè)RPC應(yīng)用分為兩個(gè)部分:server和client.server提供一個(gè)或多個(gè)遠(yuǎn)程過程:client向server發(fā)出遠(yuǎn)程調(diào)用。server和client可以位于同一臺(tái)計(jì)算機(jī),也可以位于不同的計(jì)算機(jī),甚至運(yùn)行在不同的操作系統(tǒng)之上。它們通過網(wǎng)絡(luò)進(jìn)行通訊。相應(yīng)的stub和運(yùn)行支持提供數(shù)據(jù)轉(zhuǎn)換和通訊服務(wù),從而屏蔽不同的操作系統(tǒng)和網(wǎng)絡(luò)協(xié)議。在這里RPC通訊是同步的。RPC機(jī)制可用以構(gòu)造客戶機(jī)/服務(wù)器方式的應(yīng)用,但由于它是同步方式,因而在工作的時(shí)候,要求客戶方和服務(wù)方均能正常工作

38、才能很好地運(yùn)行,有一方不能工作將導(dǎo)致RPC失敗。這在網(wǎng)絡(luò)故障、機(jī)器故障存在的情況下,這一要求是很難保證的。還有一點(diǎn)值得注意的是,不管客戶方能做什么或做的多快,它必須依靠服務(wù)方才能有效工作。有些恢復(fù)機(jī)制可以在一個(gè)遠(yuǎn)程調(diào)用阻塞時(shí)轉(zhuǎn)而去調(diào)用另一個(gè)服務(wù)器上的過程,但這種路由方式也會(huì)影響效率。也有的RPC機(jī)制采用異步方式,客戶方非阻塞地調(diào)用遠(yuǎn)端的過程,但這種方式不太標(biāo)準(zhǔn)而且很難采用。另外,由于大多數(shù)RPC機(jī)制很難建立點(diǎn)到點(diǎn)的關(guān)系,因而也很難用在面向?qū)ο蟮木幊坍?dāng)中。(4)交易中間件交易 中 間 件是專門針對(duì)聯(lián)機(jī)交易處理系統(tǒng)而設(shè)計(jì)的。聯(lián)機(jī)交易處理系統(tǒng)需要處理大量并發(fā)進(jìn)程,處理并發(fā)涉及到操作系統(tǒng)、文件系統(tǒng)、編

39、程語言、數(shù)據(jù)通訊、數(shù)據(jù)庫系統(tǒng)、系統(tǒng)管理、應(yīng)用軟件,是一個(gè)相當(dāng)艱巨的任務(wù),但是工作的難度可以通過采用一個(gè)交易中間件來簡(jiǎn)化。交易中間件就是一組程序模塊,用以大大減少開發(fā)一個(gè)聯(lián)機(jī)交易處理系統(tǒng)所需的編程量。交易中間件管理由應(yīng)用聲明和提交的交易,并通過兩階段提交協(xié)議等方式保證分布式交易的完整性、控制并發(fā)、實(shí)現(xiàn)交易路由和均衡負(fù)載.(5)對(duì)象中間件面向?qū)ο蟮闹虚g件提供一個(gè)標(biāo)準(zhǔn)的構(gòu)件框架,能使不同的廠家的軟件通過不同的地址空間、網(wǎng)絡(luò)和操作系統(tǒng)互相交互訪問。該構(gòu)件的具體實(shí)現(xiàn)、位置及所依附的操作系統(tǒng)對(duì)客戶來說都是透明的。例如,我們可以通過簡(jiǎn)單的組裝或擴(kuò)展已有的構(gòu)件就可以建立一個(gè)客戶機(jī)/服務(wù)器結(jié)構(gòu)的信息系統(tǒng)。面向?qū)?/p>

40、象的中間件技術(shù)的目標(biāo)就是為軟件用戶及開發(fā)者提供一種應(yīng)用級(jí)的即插即用的互操作性,就象現(xiàn)在使用集成塊和擴(kuò)展板一樣。對(duì)象 請(qǐng) 求 代理(ObjectR equestB roker)是對(duì)象中間件的核心組件它的作用在于提供一個(gè)通信框架,透明地在異構(gòu)的分布計(jì)算環(huán)境中傳遞對(duì)象請(qǐng)求。CORBA規(guī)范包括了OR的所有標(biāo)準(zhǔn)接口。1991年推出的CORBA 1.1定義了接口描述語言O(shè)MG IDL和支持Client/Server對(duì)象在具體的ORB上進(jìn)行互操作的API. CORBA 2.0規(guī)范描述的是不同廠商提供的ORB之間的互操作.對(duì)象請(qǐng)求代理(ORB)是對(duì)象總線,它在CORBA規(guī)范中處于核心地位,定義異構(gòu)環(huán)境下對(duì)象透

41、明地發(fā)送請(qǐng)求和接收響應(yīng)的基本機(jī)制,是建立對(duì)象之間client/server關(guān)系的中間件。ORB使得對(duì)象可以透明地向其他對(duì)象發(fā)出請(qǐng)求或接受其他對(duì)象的響應(yīng),這些對(duì)象可以位于本地也可以位于遠(yuǎn)程機(jī)器。ORB攔截請(qǐng)求調(diào)用,并負(fù)責(zé)找到可以實(shí)現(xiàn)請(qǐng)求的對(duì)象、傳送參數(shù)、調(diào)用相應(yīng)的方法、返回結(jié)果等.client對(duì)象并不知道同server對(duì)象通訊、激活或存儲(chǔ)server對(duì)象的機(jī)制,也不必知道server對(duì)象位于何處、它是用何種語言實(shí)現(xiàn)的、使用什么操作系統(tǒng)或其他不屬于對(duì)象接口的系統(tǒng)成分。值得 指 出 的是client和serve:角色只是用來協(xié)調(diào)對(duì)象之間的相互作用,根據(jù)相應(yīng)的場(chǎng)合,ORB上的對(duì)象可以是client,也

42、可以是server,甚至兼有兩者。當(dāng)對(duì)象發(fā)出一個(gè)請(qǐng)求時(shí),它是處于client角色:當(dāng)它在接收請(qǐng)求時(shí),它就處于server角色。大部分的對(duì)象都是既扮演client角色又扮演server角色。另外由于ORB負(fù)責(zé)對(duì)象請(qǐng)求的傳送和server的管理,client和server之間并不直接連接,因此,與RPC所支持的單純的Client/Server結(jié)構(gòu)相比,ORB可以支持更加復(fù)雜的結(jié)構(gòu).(6)消息中間件盡管消息中間件不象RPC機(jī)制那樣流行,但越來越多的分布式應(yīng)用采用消息中間件來構(gòu)建,基于消息的機(jī)制更多地適用于事件驅(qū)動(dòng)的應(yīng)用,當(dāng)一個(gè)事件發(fā)生時(shí),消息中間件通知服務(wù)方應(yīng)該進(jìn)行何種操作使用消息中間件編程采用的是

43、消息中間件的API,可以很好地?cái)U(kuò)展到不同的操作系統(tǒng)和硬件平臺(tái)上.消息中間件的核心安裝在需要進(jìn)行消息傳遞的系統(tǒng)上,在它們之間建立邏輯通道,由消息中間件實(shí)現(xiàn)消息發(fā)送。消息中間件可以既支持同步方式,又支持異步方式,實(shí)際上它是一種點(diǎn)到點(diǎn)的機(jī)制,因而可以很好地適用于面向?qū)ο蟮木幊谭绞?。中間件領(lǐng)域目前最熱門的技術(shù)是異步的消息中間件,異步中間件技術(shù)比同步中間件技術(shù)具有更強(qiáng)的容錯(cuò)性,在系統(tǒng)故障時(shí)可以保證消息的正常傳輸,因而在過去的兩年里增長迅速.異步中間件技術(shù)可以分為兩類:廣播方式和發(fā)布/訂閱方式。廣播方式把消息分發(fā)給系統(tǒng)的所有用戶。發(fā)行/訂閱方式可以指定哪種類型的用戶可以接收哪種類型的消息。發(fā)布/訂閱方式由

44、于更加智能有效,事實(shí)上已成為異步中間件的非正式標(biāo)準(zhǔn).3.4中間件技術(shù)的發(fā)展趨勢(shì)根據(jù)有關(guān)組織的預(yù)測(cè),消息中間件是目前中間件技術(shù)的發(fā)展熱點(diǎn),如果也把交易中間件看成是一類特殊的消息中間件的話,那么消息中間件在目前的市場(chǎng)上占據(jù)主導(dǎo)地位,而且發(fā)展勢(shì)頭迅猛。消息中間件以其獨(dú)特的優(yōu)勢(shì)為各種分布式應(yīng)用的開發(fā)注入了強(qiáng)大動(dòng)力,極大地推動(dòng)了應(yīng)用系統(tǒng)集成的發(fā)展.對(duì)象中間件技術(shù)也發(fā)展迅速,各大硬軟件廠商都在積極參與有關(guān)標(biāo)準(zhǔn)的制定和產(chǎn)品開發(fā)工作,象IBM, HP, DEC, AT&T, ICL, Microsoft等都制定了相應(yīng)的戰(zhàn)略。許多對(duì)象中間件的專門廠商也相繼誕生,未來的對(duì)象中間件市場(chǎng)會(huì)出現(xiàn)群雄逐鹿的局面.中間件的

45、另一個(gè)發(fā)展動(dòng)向是向Intemet的延伸,Intenret門ntranet技術(shù)早己在全球范圍內(nèi)廣泛采用,但由于其自身的技術(shù)特點(diǎn),在構(gòu)造許多大型企業(yè)級(jí)應(yīng)用時(shí)仍顯不足,如并發(fā)控制、負(fù)載均衡、可靠傳輸、數(shù)據(jù)路由等,因而仍然存在供中間件發(fā)展的中間地帶??傊?,中間件技術(shù)作為軟件行業(yè)新崛起的一個(gè)嶄新的分支,正在全球范圍內(nèi)迅猛發(fā)展,根據(jù)IDC組織的預(yù)測(cè),到2002年,全球的中間件市場(chǎng)將達(dá)到70億美元。中間件技術(shù)的發(fā)展,也將把分布式應(yīng)用的帶到一個(gè)新的境界。4. MSMQ概述MS M Q是微軟的消息隊(duì)列中間件產(chǎn)品,它是Windows2 000操作系統(tǒng)中消息應(yīng)用程序的基礎(chǔ),也是用于創(chuàng)建分布式,松散連接的消息通訊應(yīng)用

46、程序的開發(fā)工具。為消息隊(duì)列開發(fā)的應(yīng)用程序可以將消息發(fā)送到隊(duì)列,這些隊(duì)列是用來確保消息能夠到達(dá)目標(biāo)的臨時(shí)存儲(chǔ)位置。這些應(yīng)用程序可以通過不同種類的網(wǎng)絡(luò)進(jìn)行通訊,也可以與脫機(jī)的計(jì)算機(jī)通訊。消息隊(duì)列提供了有保障的消息傳遞、有效的路由、安全性、事務(wù)處理支持以及基于優(yōu)先級(jí)的消息傳遞。具有這些功能的軟件產(chǎn)品通常在業(yè)界叫做消息隊(duì)列軟件、存儲(chǔ)轉(zhuǎn)發(fā)軟件或面向消息的中間件。使用消息隊(duì)列,最終用戶能夠在斷開連接的網(wǎng)絡(luò)和計(jì)算機(jī)之間通訊,而不管網(wǎng)絡(luò)和計(jì)算機(jī)的當(dāng)前狀態(tài)如何。系統(tǒng)管理員可以用消息隊(duì)列高效地管理大型復(fù)雜的計(jì)算機(jī)和消息隊(duì)列網(wǎng)絡(luò)。通過消息隊(duì)列,MIS決策者可以得到更加可靠的通訊,并且更有效地使用網(wǎng)絡(luò)資源。開發(fā)人員可

47、以只關(guān)注商業(yè)規(guī)則,而不必關(guān)心網(wǎng)絡(luò)問題,因?yàn)橄㈥?duì)列能夠提供有效的網(wǎng)絡(luò)通訊。4.1 MSMQ的功能在Windows2000以前,MSMQ的基本功能如下:(1)無連接消息傳遞使用存儲(chǔ)和轉(zhuǎn)發(fā)消息隊(duì)列,計(jì)算機(jī)不會(huì)受到網(wǎng)絡(luò)的干擾,也不必建立會(huì)話。因?yàn)樵趹?yīng)用程序級(jí)使用無會(huì)話模式,所以源計(jì)算機(jī)和目標(biāo)計(jì)算機(jī)不需要支持相同的網(wǎng)絡(luò)協(xié)議。既支持網(wǎng)際協(xié)議(IP),也支持Internet數(shù)據(jù)包交換(IPX)協(xié)議。(2)消息優(yōu)先化消息優(yōu)先化允許先發(fā)送緊急或重要的消息,再發(fā)送次重要消息,這樣可以保證對(duì)關(guān)鍵的應(yīng)用程序有足夠的響應(yīng)時(shí)間,而忽略不太重要的應(yīng)用程序。(3)有保障的消息傳遞消息可以存儲(chǔ)在基于磁盤的隊(duì)列中,然后轉(zhuǎn)發(fā)以提

48、供有保障的消息傳遞.(4)事務(wù)處理消息。使用事務(wù)處理功能,可以將一些相關(guān)活動(dòng)在一個(gè)事務(wù)處理中連接起來,保證消息按順序傳遞,保證消息只傳遞一次并確認(rèn)消息能夠從目標(biāo)隊(duì)列成功返回。(5)動(dòng)態(tài)隊(duì)列創(chuàng)建可以隨意創(chuàng)建或更改隊(duì)列屬性,而不影響消息應(yīng)用程序.(6)消息路由消息隊(duì)列能夠根據(jù)網(wǎng)絡(luò)的物理拓?fù)洹?huì)話集中性需要以及傳輸連通性提供消息路由,會(huì)話的集中性,易于有效的利用慢速的網(wǎng)絡(luò)連接。(7)不同系統(tǒng)的集成消息隊(duì)列可以跨越各種硬件平臺(tái)使用。(8)跨平臺(tái)支持MSMQ-M QSeriesB ridge擴(kuò)展7消息隊(duì)列的功能,提供與IBM MQSeriesVersion2和Version 5平臺(tái)的無縫、事物處理連通性

49、.消息隊(duì)列連接器(MQC)可用于將消息隊(duì)列的功能擴(kuò)展到其他非Windows的操作系統(tǒng),包括:UNIX,AS/400,T andem,DigitalVMS,CICS/MVSH 和UnisysClearPathH MP.在 Windows2000中,MSMQ有T一些新的功能。(1) Active Directory集成集成 并 擴(kuò)展ActiveD irectory目錄服務(wù),以便存儲(chǔ)所有配置和狀態(tài)信息。(2)混合模式操作消息 隊(duì) 列 可以在混合模式域環(huán)境下操作,這意味著在WindowsN T4 .0下運(yùn)行的MSMQ 1.0控制器服務(wù)器和Windows 2000下運(yùn)行的消息隊(duì)列服務(wù)器能夠進(jìn)行無縫通訊。

50、(3) Windows 2000安全集成消息 隊(duì) 列 仍然可以通過使用訪問控制、審核、加密和身份驗(yàn)證支持保密和安全性,并且能夠?qū)η度隬indows 2000中的新安全功能起到平衡作用,例如Kerberos V5安全協(xié)議。(4)工作組支持消息 隊(duì) 列 可以在Windows2 000工作組中安裝和運(yùn)行,而不是在域中。此外,安裝在工作組中的消息隊(duì)列能夠在以后加入到域中,然后再從域分離。Active/active群集支持。目前消息隊(duì)列完全支持服務(wù)器群集中的active/active操作,這意味著消息隊(duì)列能夠同時(shí)在服務(wù)器群集中的所有節(jié)點(diǎn)上運(yùn)行。(5) Windows CE支持消息 隊(duì) 列 客戶端的特殊版

51、本預(yù)裝在運(yùn)行WindowsC E3 .0(或更高版本)操作系統(tǒng)的手持式和掌上型計(jì)算機(jī)中。消息備份和還原.萬一計(jì)算機(jī)發(fā)生故障,則消息存儲(chǔ)文件、日志文件、事務(wù)處理日志文件和注冊(cè)表設(shè)置都可以備份和還原。(6) Microsoft管理控制臺(tái)(MMC)支持目前使用MMC控制臺(tái)中的管理單元管理消息隊(duì)列。4.2 MSMQ的網(wǎng)絡(luò)拓?fù)湎㈥?duì)列是由在Windows2 000網(wǎng)絡(luò)上提供不同功能和連接的計(jì)算機(jī)所組成的消息基礎(chǔ)結(jié)構(gòu)。消息隊(duì)列既可以在域環(huán)境中,也可以在工作組環(huán)境中使用。在消息隊(duì)列環(huán)境中,域環(huán)境包括提供Active Directory之類目錄服務(wù)的域控制器,而工作組環(huán)境是不提供這種目錄服務(wù)的任意環(huán)境。1域環(huán)

52、境在域環(huán)境中,消息隊(duì)列在Windows2 000域控制器上運(yùn)行,提供對(duì)ActiveDirectory的訪問。Windows 2000網(wǎng)絡(luò)中所有域的總和叫做樹林。消息隊(duì)列也可以在混合模式域環(huán)境中運(yùn)行,這個(gè)域由在Windows NT 4.0上運(yùn)行的MSMQ1.0控制器服務(wù)器和在Windows 2000上運(yùn)行的能夠互相通訊的消息隊(duì)列服務(wù)器組成。在域環(huán)境中,消息隊(duì)列網(wǎng)絡(luò)分成不同的Windows 2000站點(diǎn),這些站點(diǎn)由路由鏈接互連。站點(diǎn)映射網(wǎng)絡(luò)的物理結(jié)構(gòu),而域通常映射單位的邏輯結(jié)構(gòu)。邏輯結(jié)構(gòu)和物理結(jié)構(gòu)是相互獨(dú)立的,因此一個(gè)站點(diǎn)中可能有多個(gè)域,也可能在一個(gè)域中有多個(gè)站點(diǎn)。在消息隊(duì)列的環(huán)境中,站點(diǎn)包含下列

53、內(nèi)容:(1) Windows 2000域控制器,它在Active Directory 目錄服務(wù)中保留配置和狀態(tài)信 息 ,并 可以使用站點(diǎn)鏈接在站點(diǎn)之間復(fù)制這些信息。ActiveD ierctory使用多 主 機(jī) 模式,這意味著任何Windows2 000域控制器都可以讀取或?qū)懭氪鎯?chǔ) 在 A ctiveD irectory中的對(duì)象。(2)所有Windows 2000計(jì)算機(jī)都使用相同的網(wǎng)絡(luò)協(xié)議(一般為IP)。一個(gè)站點(diǎn)中 使 用 相同網(wǎng)絡(luò)協(xié)議的任意兩臺(tái)計(jì)算機(jī)之間都是直接連通的。這種連通性意 味 著 快速而廉價(jià)的通訊。(3)相關(guān)子網(wǎng)的集合,每個(gè)子網(wǎng)都有單獨(dú)的IP子網(wǎng)地址。2 工作組環(huán)境消息隊(duì)列可以在不

54、是域的環(huán)境下運(yùn)行,例如工作組或其他不提供目錄服務(wù)的環(huán)境。如果消息隊(duì)列在工作組中的計(jì)算機(jī)上運(yùn)行,則該計(jì)算機(jī)可以隨后加入Windows 2000域.相反,消息隊(duì)列計(jì)算機(jī)可以是域的一部分,然后再加入工作 組。該計(jì)算機(jī)可以隨后重新加入相同的域.但是在非域環(huán)境下使用消息隊(duì)列存在下列限制:(1) 計(jì)算機(jī)發(fā)送的消息不能由與需要的目標(biāo)計(jì)算機(jī)直接連通的消息隊(duì)列服務(wù)器發(fā)送(2)不能訪問Active Directory。因此,只能在本地計(jì)算機(jī)上創(chuàng)建和管理專用隊(duì)列。不能查看或管理公用隊(duì)列及ActiveD irectory 內(nèi)的任何其他信息。當(dāng)然,如果直接連通,則可以將消息發(fā)送到專用隊(duì)列或從中讀取消息。(3) 不能使用

55、內(nèi)部證書發(fā)送經(jīng)過身份驗(yàn)證的消息:必須使用外部證書代替。圖 4MSMQ典型網(wǎng)絡(luò)拓?fù)?.3 MSMQ網(wǎng)絡(luò)組件4.3.1MSMQ服務(wù)器消息隊(duì)列服務(wù)器是消息隊(duì)列網(wǎng)絡(luò)中的通信中樞。所有的消息隊(duì)列服務(wù)器都運(yùn)行消息隊(duì)列服務(wù)、主控隊(duì)列、在本地存儲(chǔ)消息,并能默認(rèn)地發(fā)送和接收消息。除此之外,它還提供以下服務(wù)(1) 目錄訪問默認(rèn)情況下,安裝在Windows2 000域控制器上消息隊(duì)列服務(wù)器能夠讓客戶查看或更改在ActiveD irectory目錄服務(wù)中列出的信息。(2)路由服務(wù)啟用路由服務(wù)的消息隊(duì)列服務(wù)器能提供消息路由和中間存儲(chǔ)和轉(zhuǎn)發(fā)消息隊(duì)列。當(dāng)客戶之間不能直接連通時(shí),消息隊(duì)列服務(wù)器可以在站點(diǎn)內(nèi)或不同站點(diǎn)之間發(fā)送消

56、息。提供相同站點(diǎn)內(nèi)的消息路由功能的消息隊(duì)列服務(wù)器叫做傳入路由服務(wù)器(InRS)或傳出路由服務(wù)器(OutRs)。提供站點(diǎn)之間消息路由的消息隊(duì)列服務(wù)器叫做站點(diǎn)入口。一對(duì)站點(diǎn)入口輪流定義兩個(gè)站點(diǎn)之間的路由鏈接。盡管假定使用相同網(wǎng)絡(luò)協(xié)議的站點(diǎn)內(nèi)的客戶直接連通,但是使用傳入路由和傳出路由服務(wù)器在站點(diǎn)內(nèi)部發(fā)送消息會(huì)降低網(wǎng)絡(luò)的帶寬要求??蛻艨梢耘渲檬褂脗魅肼酚珊蛡鞒雎酚煞?wù)器,以便代表自己提供消息路由選擇。在這種情況下,客戶發(fā)送或接收的所有消息都先通過消息隊(duì)列服務(wù)器發(fā)送。這里的“客戶”是指本身不能發(fā)送消息的消息隊(duì)列計(jì)算機(jī),例如獨(dú)立客戶和沒有啟用路由的消息隊(duì)列服務(wù)器。該功能不適用于從屬客戶。從屬客戶使用支持服務(wù)器代表自己發(fā)送和接收消息.如果站點(diǎn)入口用來在站點(diǎn)之間發(fā)送消息,那么只有指派的消息隊(duì)列服務(wù)器才能在站點(diǎn)間發(fā)送消息。消息隊(duì)列服務(wù)器還可以配置成能夠讓客戶使用不同的網(wǎng)絡(luò)協(xié)議(如IP和IPX)相互通信。(3)群集服務(wù)消息隊(duì)列服務(wù)器還可以提供群集組環(huán)境中的服

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論