專利名稱:通過可定制通信信道和程序設(shè)計模型對消息的發(fā)送和接收的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及消息傳遞架構(gòu)。更具體地說,本發(fā)明涉及在消息傳遞架構(gòu)中抽象處理層的方法、系統(tǒng)以及計算機程序產(chǎn)品,其可以在不重新實現(xiàn)現(xiàn)有的功能的情況下進行改變和提高。
背景技術(shù):
隨著許多當(dāng)今的強大的網(wǎng)絡(luò)提供的計算機之間互聯(lián)性的增加,分布式處理在很大范圍的應(yīng)用程序中變得越來越有吸引力。然而,大多數(shù)現(xiàn)有的用于發(fā)展分布式應(yīng)用程序的架構(gòu)提供很小的靈活性,以從現(xiàn)有的和新興的通信技術(shù)中進行選擇的形式出現(xiàn)。例如,程序設(shè)計模型、消息交換語義以及消息傳遞趨向于緊密地結(jié)合。結(jié)果,選擇其中的任何一個,經(jīng)常同時指定其他的。
圖1A說明了現(xiàn)有技術(shù)的一例,其是基于分布式組件對象模型(DCOM)的緊密結(jié)合的消息傳遞架構(gòu)(infrastructure)100A。DCOM是組件對象模型(COM)的擴展,它允許組件既可在網(wǎng)絡(luò)邊界之內(nèi)也可跨過網(wǎng)絡(luò)邊界進行通信,而COM限于單個機器內(nèi)進程間的通信。期望使用DCOM的開發(fā)者接受DCOM程序設(shè)計模型130A、遠程過程調(diào)用(RPC)消息交換語義120A以及對應(yīng)的RPC網(wǎng)絡(luò)連接(network connectoids)110A作為一個捆綁。
圖1B說明了現(xiàn)有技術(shù)的另一例,其是緊密結(jié)合的消息傳遞架構(gòu)100B。類似于圖1A所示的DCOM架構(gòu),這個消息傳遞架構(gòu)100B包括其他程序設(shè)計模型130B、其他消息交換語義120B以及其他網(wǎng)絡(luò)連接110B。注意其他程序設(shè)計模型130B、其他消息交換語義120B以及其他網(wǎng)絡(luò)連接110B的互鎖部分121B不同于DCOM程序設(shè)計模型130A、RPC消息交換語義120A以及RPC網(wǎng)絡(luò)連接110A的互鎖部分121A?;ユi部分121A和121B之間的差異說明了現(xiàn)有技術(shù)缺乏從現(xiàn)有的以及新興的用于研發(fā)分布式應(yīng)用程序的選項中進行選擇的靈活性。在選擇了DCOM或者一些其他的技術(shù)以及其對應(yīng)的架構(gòu)后,使用來自其他技術(shù)的特征并且不犧牲研發(fā)現(xiàn)存應(yīng)用程序的成果就成了一項相當(dāng)困難的任務(wù)。通常,這樣技術(shù)改變或增強要求重新開始,基本上是從零開始。
因此,分離程序設(shè)計模型、消息交換語義以及消息傳遞表示出本技術(shù)領(lǐng)域內(nèi)的進步。開發(fā)者能夠從架構(gòu)內(nèi)的一個層面中的特征進行提取而不必擔(dān)心在另一層面中不相關(guān)的問題。此外,開發(fā)者能從一個程序設(shè)計模型移動到另一個而不需要獲悉新的架構(gòu)。分離各層導(dǎo)致較大的復(fù)用性并鼓勵了創(chuàng)新,因為被分離的架構(gòu)中的改變和提高能夠保留現(xiàn)有的開發(fā)成果。
發(fā)明內(nèi)容
本發(fā)明涉及用于在消息架構(gòu)中抽象處理層的方法、系統(tǒng)和計算機程序產(chǎn)品,其后可對該架構(gòu)進行改變和提高而保留現(xiàn)有的功能。按照本發(fā)明的示范實施例,其將在下面更完整地描述,該架構(gòu)包括三個主要層一消息層、一信道層以及一服務(wù)層。這些層中的每一個能抽象功能,因此特定實現(xiàn)的細節(jié)一般而言對于其它層是隱藏的。
在一個示范實施例中,消息傳遞實現(xiàn)在一消息層中被抽象,允許該架構(gòu)中的其它層以一種更加普通的方式與消息進行交互,大大獨立于消息傳遞。消息傳遞的例子包括命名管道、傳輸控制協(xié)議(TCP)、超文本傳輸協(xié)議(HTTP)、簡單郵件傳輸協(xié)議(STMP)等等。消息層之上的信道層抽象消息交換實現(xiàn),允許架構(gòu)中的其它層以一種更普通的方式發(fā)送并接收消息,大大獨立于特定消息交換實現(xiàn)的消息交換語義。消息交換實現(xiàn)的例子包括數(shù)據(jù)報、對話、獨白、隊列等等。在信道層和消息層上,服務(wù)層抽象捆綁實現(xiàn),它把消息交換實現(xiàn)捆綁到使用該架構(gòu)的用戶碼實現(xiàn)(例如,應(yīng)用程序)上。服務(wù)層至少部分描述了一用于使用該消息傳遞架構(gòu)的程序設(shè)計模型。
每一層的抽象都可對應(yīng)于用于抽象實現(xiàn)的多個程序模塊。消息層抽象可抽象端口,它為消息提供的原子的發(fā)送/接收抽象。對于每個抽象實現(xiàn)而言,架構(gòu)都可包括該抽象的一特定實例,它表示在該架構(gòu)中使用的實現(xiàn)。例如,一個信道抽象的實例可被限制在用于處理消息的服務(wù)或者用戶碼實現(xiàn)的實例。捆綁可通過用于信道和用戶碼實現(xiàn)的代理來進行。當(dāng)消息通過實例和服務(wù)代理時,它們可被攔截并被進一步處理。服務(wù)層抽象可以抽象服務(wù)存儲實現(xiàn),它管理服務(wù)或這用戶碼實例的物理壽命。
本發(fā)明另外的特征和優(yōu)勢將在下面的描述中說明,其中部分將通過描述而變得明顯,或者可以通過實現(xiàn)本發(fā)明而習(xí)得。本發(fā)明的特征和優(yōu)勢可通過附加的權(quán)利要求中指出的裝置以及組合而被認識到或者被獲得。本發(fā)明的這些以及其它的特征將通過以下的描述以及附加的權(quán)利要求而變得更加明顯,或者可以通過按照此后的說明來實現(xiàn)本發(fā)明而習(xí)得。
為了說明能夠獲得本發(fā)明的上述的以及其它的優(yōu)勢和特征的方式,將結(jié)合附圖中說明的特定實施例對上述的本發(fā)明的簡要說明進行更加仔細地描述。需要理解,這些附圖僅僅說明本發(fā)明的典型的實施例且不能因此而理解為限制了其范圍,本發(fā)明將通過下列的附圖而結(jié)合附加的說明和細節(jié)來加以描述和解釋圖1A-1B說明了現(xiàn)有技術(shù)中緊密結(jié)合的消息傳遞架構(gòu)的范例;圖2說明了按照本發(fā)明的消息傳遞架構(gòu)的高級表示;圖3是示出按照本發(fā)明的消息傳遞架構(gòu)的示范實施例的框圖;圖4A-4B示出在按照本發(fā)明的消息傳遞架構(gòu)中抽象處理層的方法的示范動作和步驟;以及圖5說明了適用于本發(fā)明的適當(dāng)操作環(huán)境的示范系統(tǒng)。
具體實施例方式
本發(fā)明包括用于在消息傳遞架構(gòu)中抽象處理層的方法、系統(tǒng)以及計算機程序產(chǎn)品,其后可對該架構(gòu)進行改變或提高而不必要重新實現(xiàn)現(xiàn)有的功能。本發(fā)明的實施例可包括一個或多個專用計算機以及/或者一個或多個通用計算機,計算機包括多種計算機硬件,將在下面詳細描述。
圖2說明了按照本發(fā)明的一個示范消息傳遞架構(gòu)200的高級表示。下面結(jié)合圖5提供了關(guān)于消息傳遞架構(gòu)的示范實現(xiàn)的詳細說明。架構(gòu)200通過分層的結(jié)構(gòu)(例如,該架構(gòu)可被視為子系統(tǒng)的順序集合,其中每個子系統(tǒng)都取決于前面的子系統(tǒng))支持分布式程序設(shè)計。例如,在消息傳遞架構(gòu)200中,主要層包括消息傳遞層210、信道層240以及服務(wù)層270。
如下面將要詳細描述的,這些層中的每一個抽象特定的實現(xiàn)細節(jié),使得以共同方式處理類似的事情。消息分離程序設(shè)計模型、消息交換語義和消息傳遞以使開發(fā)者能夠從架構(gòu)內(nèi)的一個層面上提取特征而不必擔(dān)心另一層面上不相關(guān)的問題。這樣,開發(fā)者就能夠,例如從一個程序設(shè)計模型移到另一個而不需要獲悉新的架構(gòu)。該抽象造成較大的再用性并且鼓勵創(chuàng)新,因為在被分離的架構(gòu)中進行改變和提高允許保留現(xiàn)有的開發(fā)成果。
底層,即消息傳底層210提供端點對端點的傳輸或消息傳遞。消息傳遞層210支持傳遞擴展性,這樣當(dāng)實現(xiàn)新的傳遞時,新的傳遞可被該架構(gòu)中的其它層使用。例如,消息傳遞層210抽象傳遞協(xié)議的實現(xiàn),例如命名管道、傳輸控制協(xié)議(TCP)、超文本傳輸協(xié)議(HTTP)、簡單郵件傳輸協(xié)議(TCP)等等。因此,簡單地說,消息傳遞層210向架構(gòu)中的其它層提供了原子的消息發(fā)送/接收抽象,以使其它層能夠以某種獨立于發(fā)送或接收消息所使用的特定傳遞協(xié)議的方式處理消息。
消息傳遞層210允許在消息離開或到達端點時對其可擴展的攔截??蓴U展的攔截機制可用于實現(xiàn)諸如路由、過濾、策略管理和安全性這樣的行為。消息層210中的端點處可用的傳遞和行為都能被計劃性地建立或者通過配置來建立。
信道層240在消息傳遞層210所提供的傳遞抽象頂上提供消息傳遞抽象。信道表示端點間實現(xiàn)的行為以及抽象所實現(xiàn)的行為的對象模型。一般信道的例子包括用于單向不相關(guān)消息傳遞的數(shù)據(jù)報信道、用于雙向相關(guān)消息傳遞的對話信道、用于公布/預(yù)定或單向廣播消息傳遞的獨白信道以及用于單向?qū)α邢鬟f的隊列信道。應(yīng)用程序或者用戶碼通過在一端點處建立信道實例(例如,存儲器中的信道對象)并發(fā)送關(guān)于那些實例的消息而使用信道。當(dāng)消息到達另一端點時,應(yīng)用程序或者用戶碼識別出在信道發(fā)送端建立的信道并建立一信道實例來參與該對話。
服務(wù)層270在信道層240和消息傳遞層210的頂上提供程序設(shè)計模型。應(yīng)用程序的設(shè)計者一般會在服務(wù)層使用消息傳遞架構(gòu)200。服務(wù)層程序設(shè)計模型之間通過消息分發(fā)機制、消息被發(fā)送的方式(例如,結(jié)構(gòu)相對類型的方法調(diào)用)和系統(tǒng)類型而彼此分開。服務(wù)層270提供一個通用機制把程序設(shè)計模型捆綁到上述信道實例上。服務(wù)層270還提供了程序設(shè)計模型選擇提供給開發(fā)者的特征,例如狀態(tài)和壽命控制、服務(wù)管理、呼叫攔截以及同步消息分發(fā)。無論簡單的還是復(fù)雜的程序設(shè)計模型都可以開發(fā)用于服務(wù)層。為了便于適當(dāng)?shù)睦壓突ビ眯裕绦蛟O(shè)計模型一般會定義消息傳遞層傳輸類型以及架構(gòu)自身中定義并控制的類型之間的固定關(guān)系,特別是與服務(wù)層270中的應(yīng)用程序或者用戶碼對象相對應(yīng)的類型。
圖3是示出按照本發(fā)明的消息傳遞架構(gòu)300的一個示范實施例的框圖。通常,消息傳遞架構(gòu)300由用于通過所支持的程序設(shè)計模型捆綁信道實例(即,存儲器中的信道抽象對象)和編碼的實例的模塊組成。類似于上述關(guān)于圖2的描述,圖3包括消息傳遞層310、信道層340和服務(wù)層370。圖3的描述可以分成兩類消息傳遞架構(gòu)自身以及消息傳遞架構(gòu)所支持的程序設(shè)計模型。以下的討論從描述消息傳遞架構(gòu)開始,接下來轉(zhuǎn)而描述一個示范的程序設(shè)計模型。盡管在圖3中說明的組件可能是單數(shù),但應(yīng)該理解,在單個架構(gòu)中也經(jīng)常會存在多個各個組件。
三個管理器,每一層內(nèi)有一個,實現(xiàn)了架構(gòu)300所提供的大多數(shù)基本功能消息傳遞層310中的端口312、信道層340中的管理器342以及服務(wù)層370中的服務(wù)管理器382。因此,圖3的描述最初一般集中在這三個管理器上,然后轉(zhuǎn)而更詳細地討論這三個管理器和圖示的其他組件。三個管理器中的第一個,端口312,充當(dāng)傳遞實現(xiàn)和架構(gòu)其他部分之間的多路復(fù)用代理程序。簡單而言,端口312和消息傳遞層310向消息傳遞架構(gòu)300提供了原子的消息發(fā)送/接收抽象。如前面所指出的,該抽象減輕了其他層要理解與各個傳遞實現(xiàn)相關(guān)的細節(jié)的負擔(dān)。而且,其他層和消息抽象交互,并把消息如何被傳遞的細節(jié)留給消息傳遞層310和端口312。
三個管理器中的第二個,即信道層340中的信道管理器342,收集消息并使其相關(guān),可能存儲它們并/或?qū)λ鼈兣判?,并一般向服?wù)層370給出高級的信道抽象,尤其向服務(wù)管理器382和服務(wù)捆綁器372提供。類似于消息傳遞層310所提供的消息抽象,這里也一樣,信道層340和信道管理器342所提供的信道抽象減輕了其他層需要理解與各個消息交換語義相關(guān)的細節(jié)中的負擔(dān)。其他層簡單地和信道抽象交互,并把怎樣交換消息(例如,數(shù)據(jù)報,對話,等等)的細節(jié)留給信道層340。
三個管理器中的第三個,服務(wù)管理器382,負責(zé)把服務(wù)實例376(按照該程序設(shè)計模型的一類實現(xiàn)的實例)連到由信道管理器342所產(chǎn)生的信道實例344,其向?qū)?yīng)的服務(wù)實例提供信道抽象的實例。服務(wù)管理器382通過服務(wù)捆綁器372將服務(wù)實例376連到信道實例344,服務(wù)捆綁器372理解特定信道和程序設(shè)計模型兩者的細節(jié)。如下面將要詳細描述的,服務(wù)捆綁器372與服務(wù)存儲器378合作創(chuàng)建并注冊實例。
服務(wù)管理器382和服務(wù)捆綁器372使用服務(wù)代理374將服務(wù)實例376捆綁到信道實例344,代理服務(wù)374也將在下面詳細描述。一旦創(chuàng)建了實例,服務(wù)存儲器378就從架構(gòu)的其余部分中抽象它們的持久性(例如,壽命等等)和位置。流入服務(wù)實例的消息和呼叫可以被與服務(wù)管理器382注冊的服務(wù)擴展392支持的編碼所攔截。服務(wù)實例通過服務(wù)實例上的接口與架構(gòu)進行通信,稱為服務(wù)站,其實現(xiàn)了通常由實例所使用的功能。實例的服務(wù)站在服務(wù)存儲器創(chuàng)建實例時被初始化(或定址)。
服務(wù)管理器382是用于創(chuàng)建信道并訪問架構(gòu)中其他組件的一組接口,并且是該架構(gòu)通過其實現(xiàn)配置的實體。當(dāng)服務(wù)管理器被創(chuàng)建時,它創(chuàng)建端口處可用的服務(wù)捆綁器、服務(wù)存儲器以及服務(wù)類型,并將它們連結(jié)到該架構(gòu)。如果一個端口能夠處理多個服務(wù)的請求,則僅僅一單個服務(wù)管理器與該端口相關(guān)聯(lián)。盡管傳統(tǒng)的架構(gòu)具有用于創(chuàng)建實例并管理架構(gòu)協(xié)作的某些形式,然而服務(wù)管理器382間接地執(zhí)行其任務(wù),即通過這個工作委派給適合特定任務(wù)的其他模塊。結(jié)果,服務(wù)管理器382像架構(gòu)300的其他組件一樣支持高度擴展性,而傳統(tǒng)架構(gòu)中的服務(wù)管理器趨向于直接創(chuàng)建實例并管理架構(gòu)協(xié)作,這使得創(chuàng)新變得困難因為可能需要重新實現(xiàn)現(xiàn)有的功能以支持新的行為或功能。
服務(wù)捆綁器372負責(zé)管理信道實例344、服務(wù)實例376和服務(wù)存儲器378之間的關(guān)系。因此,服務(wù)捆綁器372一般特別獲悉每個可用的信道和程序設(shè)計模型。信道實現(xiàn)了服務(wù)捆綁器372把消息移入或移出信道層340所使用的特殊事件和接口。程序設(shè)計模型指定了類型間的映射關(guān)系,服務(wù)捆綁器使用上述映射關(guān)系把消息應(yīng)用于方法并且將方法呼叫轉(zhuǎn)換成消息。因為每個信道和程序設(shè)計模型是不同的,因此一個服務(wù)捆綁器通常支持其中的一個。因此,一個運行的端口一般與每個所支持的信道/程序模型對的一個或多個服務(wù)捆綁器相關(guān)聯(lián)。
一示范程序設(shè)計模型可在網(wǎng)絡(luò)服務(wù)定義語言(WSDL)端口類型和架構(gòu)運行期間管理的類型之間建立映射。WSDL是一種XML格式,它把網(wǎng)絡(luò)服務(wù)描述成一組能交換消息的端點。它提供了一種相對簡單的機制,用于獨立于基礎(chǔ)協(xié)議(簡單對象訪問協(xié)議-SOAP、HTTP GET/POST等等)或編碼(多用途因特網(wǎng)郵件擴展-MIME等等)而指定請求的基本格式。抽象操作和消息被捆綁到指定的網(wǎng)絡(luò)協(xié)議和消息格式來定義一個端點。因此,WSDL服務(wù)是端點的集合,也稱為端口。在WSDL中,端口類型描述了操作的集合。應(yīng)該理解,圖3說明了本發(fā)明的一個示范實施例,其中架構(gòu)包括映射至WSDL的被管理的編碼數(shù)據(jù)類型。然而,本發(fā)明可在多種環(huán)境中實現(xiàn),并不限于那些具有被管理的編碼/數(shù)據(jù)類型或WSDL端口類型的環(huán)境。
如上所指出的,服務(wù)捆綁器372在端口創(chuàng)建期間向服務(wù)管理器382注冊。服務(wù)捆綁器與一組端口/服務(wù)類型相關(guān)聯(lián)。在架構(gòu)運行期間被管理的類型實現(xiàn)了從對于服務(wù)捆綁器唯一的接口類型繼承的服務(wù),其使服務(wù)捆綁器的類型具有唯一性。對于示范架構(gòu)300而言,打開端口的相同進程同樣打開了服務(wù)管理器382以及端口處所有可用的服務(wù)捆綁器372。當(dāng)被打開時,服務(wù)捆綁器將他們自己連結(jié)到對應(yīng)的信道管理器342。
當(dāng)用戶碼向服務(wù)管理器382發(fā)出一呼叫以創(chuàng)建一信道時,服務(wù)管理器就在所注冊的服務(wù)捆綁器組上進行迭代并提供每個機會來處理指定的類型。然后,服務(wù)管理器使用識別該指定類型的服務(wù)捆綁器以創(chuàng)建一服務(wù)實例376,將它注冊到服務(wù)存儲器378,并用服務(wù)代理374將該服務(wù)實例捆綁到信道示例344。類似的,當(dāng)消息到達一不與現(xiàn)有的服務(wù)實例相關(guān)聯(lián)的信道時,如果它們識別出進來的端口/服務(wù)類型,則要求附屬于信道的服務(wù)捆綁器組。識別類型的服務(wù)捆綁器372被用于創(chuàng)建一務(wù)實例,用服務(wù)代理將其捆綁至信道實例,并接下來使進來的消息通過實例和代理流至用戶碼。
為了產(chǎn)生對新實例的請求,服務(wù)捆綁器創(chuàng)建一服務(wù)實例376,把它注冊到服務(wù)存儲器378,創(chuàng)建服務(wù)代理374,把信道實例344連到服務(wù)代理374以及把服務(wù)代理374連到服務(wù)實例376中的用戶碼,并觸發(fā)信道中第一消息的流動。之后,消息從信道實例流向服務(wù)代理374,服務(wù)代理將消息轉(zhuǎn)換成呼叫棧并將它們分發(fā)給相應(yīng)的服務(wù)實例。類似的,呼叫從服務(wù)實例376流出流向服務(wù)代理374,服務(wù)代理374將呼叫轉(zhuǎn)換成消息并通過信道實例將它們發(fā)送到它們的目的地。
傳統(tǒng)的架構(gòu)可具有一些形式的服務(wù)捆綁器,按照本發(fā)明的架構(gòu)能夠支持多個服務(wù)捆綁器。另外,與傳統(tǒng)的架構(gòu)相對,服務(wù)捆綁器集合作為一個整體獨立于其下的信道層,也獨立于服務(wù)層370中的服務(wù)存儲器和程序設(shè)計模型。傳統(tǒng)的架構(gòu)趨向于在緊密分界的包中實現(xiàn)傳遞、信道、捆綁、存儲以及實例功能,這通常要求在每次為了解決發(fā)展的技術(shù)和應(yīng)用需要而作出提高或改變時作出顯著的改變。
如上面所指出的,服務(wù)存儲器378管理實例。當(dāng)服務(wù)捆綁器產(chǎn)生創(chuàng)建新的服務(wù)實例的請求時,服務(wù)捆綁器就創(chuàng)建一實例并將該實例注冊到服務(wù)存儲器。在創(chuàng)建了實例后,服務(wù)捆綁器使用存儲器來定址該實例,(初始化通常使用通信接口),接下來該捆綁器將該信道捆綁至該地址。服務(wù)存儲器378記錄與實例相關(guān)的信道數(shù)量,并在沒有信道附加時釋放一實例。這使服務(wù)捆綁器(其看見信道關(guān)閉消息/事件以及代理實例的釋放)能夠參與控制邏輯實例(從架構(gòu)外看到的實例)的壽命。
當(dāng)捆綁器控制邏輯實例的壽命時,服務(wù)存儲器378管理物理實例(存儲器中真正的對象實例)的壽命。當(dāng)服務(wù)存儲器希望從存儲器中刪除一物理實例時,它會告知相關(guān)的信道以使它們將該物理實例從它所關(guān)聯(lián)的服務(wù)代理374上斷開。接下來,下一次向該實例應(yīng)用呼叫/消息時,服務(wù)存儲器就負責(zé)創(chuàng)建一新的實例并將它重新連接到適當(dāng)?shù)拇怼?br>
服務(wù)存儲器378支持一實例狀態(tài)的多種相關(guān)度。服務(wù)存儲器可能把所有實例維持在存儲器中從不使用斷開/重連接機制?;蛘撸?wù)存儲器可能把所有實例維持在存儲器中并且為了加強實例的無狀態(tài)性而支持主動的斷開/重連接機制。服務(wù)存儲器可能基于機器負載、許可證發(fā)行(例如,到數(shù)據(jù)庫的連接)以及/或者使用模式來支持斷開/重連接,并將斷開/重連接與實例的無序/編序相結(jié)合并將實例保存在交易(transact)數(shù)據(jù)庫中以支持持續(xù)的、可靠的實例。服務(wù)存儲器所使用的數(shù)據(jù)庫可與持久信道所使用的存儲器以及端口前的路由器協(xié)作,以實現(xiàn)實例從一個機器向另一個機器的轉(zhuǎn)移。服務(wù)存儲器378在無用單元收集(garbage collection)、集中組合(pooling)、管理長壽命的連接等等中是有用的。
傳統(tǒng)架構(gòu)中的服務(wù)存儲器趨向于直接連接物理和邏輯實例的壽命。這兩者之間的關(guān)系一般在架構(gòu)中被硬編碼。結(jié)果,替代很難實現(xiàn)而不影響系統(tǒng)中的其他區(qū)域。此外,由專家級用戶作為擴展點的修改或隨著架構(gòu)發(fā)展的修改是不切實際的,假定服務(wù)存儲器和架構(gòu)其他部分之間是顯著連接的。
如前面所指出的,服務(wù)代理374是一服務(wù)捆綁器指定類型的實例,它把特定類型的信道實例344連到特定類型的服務(wù)實例376。對于進來的呼叫而言,服務(wù)從信道宣告消息可用而產(chǎn)生事件,從該消息中創(chuàng)建適當(dāng)?shù)暮艚袟?,并將其?yīng)用于該實例。對于出去的呼叫而言,服務(wù)代理374產(chǎn)生呼叫,將其轉(zhuǎn)化成消息,如果需要的話將它通過信道實例344發(fā)送。根據(jù)方向,服務(wù)代理374看上去像類型(typed)信道(例如,從服務(wù)實例方向)以及被管理的類型代理(例如,從信道實例方向)。
除了其橋接功能以外,在使用服務(wù)代理的整個期間還實現(xiàn)了某些行為。例如,一個或多個服務(wù)代理可實現(xiàn)并發(fā)管理,限制在給定的時刻進入單個服務(wù)實例的呼叫數(shù)目。如上面關(guān)于服務(wù)存儲器378所指出的,服務(wù)代理實現(xiàn)了斷開/重連接,以使服務(wù)存儲器能把物理實例壽命與邏輯實例壽命分離。應(yīng)該理解,服務(wù)代理374允許服務(wù)捆綁器372和服務(wù)存儲器378兩者以可擴展的方式來實現(xiàn)行為。
除了端口312、信道管理器342以及服務(wù)管理器382以外,架構(gòu)300中可以有其他管理器。這些管理器實現(xiàn)架構(gòu)的一些或者全部級別上的行為,包括消息過濾和路由、策略交換和應(yīng)用、安全性、記錄以及交易服務(wù)。每一個提供擴展性的管理器定義一個擴展接口以允許其他管理器來實現(xiàn)該擴展性。例如,消息傳遞層310處的端口312提供了端口擴展,允許管理器為流過該層的流水線消息提供處理機。類似的,各個信道管理器實現(xiàn)擴展以允許類似服務(wù)管理器的模塊鉤住(hook)用于從信道中創(chuàng)建信道實例的消息。
服務(wù)擴展392是由服務(wù)管理器382定義的接口,其允許其他管理器掛鉤連接至(hook into)由架構(gòu)所支持的呼叫路徑擴展點。當(dāng)擴展第一次被建立時,服務(wù)管理器通過服務(wù)擴展向感興趣的管理器傳遞它所知道的服務(wù)類型的反射類型信息。實現(xiàn)服務(wù)擴展的管理器將該反射數(shù)據(jù)和它們自己的配置相結(jié)合以建立在特定的消息/呼叫流入或流出服務(wù)實例時它們所希望做的。消息前和消息后通知由流經(jīng)服務(wù)擴展的事件傳遞給管理器。服務(wù)擴展機制的這種擴展程度在傳統(tǒng)的架構(gòu)中是沒有的。只要架構(gòu)被配置成一般地支持一行為時,除了與行為相關(guān)的管理器以外,不需要修改任何有存儲器或其他組件,以便將該行為引入到架構(gòu)中。
服務(wù)實例376是被管理的編碼服務(wù)類型的實例,其實現(xiàn)與端口/服務(wù)類型相關(guān)的接口,可能是通過被指定為程序設(shè)計模型一部分的包裝(wrapper)來實現(xiàn)。通常,如下面將會詳細描述的,程序設(shè)計模型的一種不同的方法是會話與關(guān)于服務(wù)類型的接口和方法相關(guān)聯(lián)的方式。如圖3所示的示范實施例,相對于有效的程序設(shè)計模型編寫的服務(wù)類型在WSDL會話、操作和消息以及架構(gòu)運行時間管理的編碼接口、方法和自變量類型之間建立直接映射。架構(gòu)也可以支持使用不同程序設(shè)計模型創(chuàng)建服務(wù)類型,這些服務(wù)類型看上去非常不同。除了由相關(guān)聯(lián)的服務(wù)代理使用的接口以外,服務(wù)類型可實現(xiàn)其他接口以將它們自己鉤接到(hook into)架構(gòu)行為的其他方面。例如,一服務(wù)類型可實現(xiàn)特殊的接口以便鉤接至一些服務(wù)存儲器或者參與由服務(wù)擴展實現(xiàn)的一些行為。
如上所述,服務(wù)實例376一般被定址(包括對其自身唯一的服務(wù)場點的引用)。服務(wù)實例通過實現(xiàn)一合適的接口或通過從實現(xiàn)該合適接口的基礎(chǔ)類繼承而被定址。當(dāng)服務(wù)捆綁器372創(chuàng)建一服務(wù)實例時,其使用服務(wù)存儲器378來定址該實例。然后,服務(wù)存儲器通過在相應(yīng)的接口上設(shè)置該服務(wù)端的屬性而定址該實例。該服務(wù)端屬性提供對該實例架構(gòu)狀態(tài)的訪問,包括類似于收集連接到該實例的活動信道的事情。該實例可使用狀態(tài)信息以獲取、審查并修改它的信道。該服務(wù)存儲器也可以在它從該服務(wù)實例的活動信道增加或刪除信道以使其將該信道捆綁至或從該服務(wù)實例上去捆綁時使用該狀態(tài)信息。
對于圖3所示的示范實施例,架構(gòu)被設(shè)計以支持實現(xiàn)從WSDL端口直接映射至用于架構(gòu)運行時間被管理的編碼類型的任何程序設(shè)計模型。一示范程序設(shè)計模型使用被管理的編碼屬性以在WSDL類型和被管理的編碼類型之間建立關(guān)聯(lián)。這類程序設(shè)計模型是由屬性修飾的被管理編碼類,其描述了被管理的編碼類和它們所實現(xiàn)的端口類型的WSLD合同之間的關(guān)系。實現(xiàn)程序設(shè)計模型的工具或者能從用合適屬性修飾的被管理的編碼類和接口中生成WSDL,或者能從WSDL生成用適當(dāng)屬性修飾的被管理的編碼類和接口。其他程序設(shè)計模型可包括遠程對象模型、用于描述商業(yè)進程的邏輯序列的模型,等等。因此,術(shù)語“服務(wù)”應(yīng)該被廣泛地解釋以覆蓋這些及其他程序設(shè)計模型。
一個更傳統(tǒng)的遠程對象模型,例如DCOM,能被認為具有兩個接口,一個在對象客戶機所使用的代理上實現(xiàn),另一個在對象自身上實現(xiàn)。關(guān)于這兩個接口的一申請方法在這類程序設(shè)計模型中通常是相同的,盡管每個接口都可能包含合適于會話的一端或另一端的架構(gòu)方法。
相反,WSDL會話是雙向的。其操作或是單獨的消息,或是請求/應(yīng)答消息對,它們可以作為會話一部分在任何方向上流動。為了支持這些操作,示范程序設(shè)計模型包括四個接口,兩個服務(wù)實現(xiàn)接口和兩個信道控制接口。會話的每一端有一服務(wù)實現(xiàn)接口,該服務(wù)實現(xiàn)接口具有會響應(yīng)消息或請求而運行的編碼,會話的每一端還有一信道控制接口,該信道控制接口具有將向外發(fā)送消息或請求和事件的代理方法,這些消息或請求和事件可被鉤接以增加對到來的消息或請求的處理。
屬性可配置管理編碼類型至WSDL類型的映射細節(jié)以及為運行編碼而創(chuàng)建的實例的質(zhì)量。屬性的范例包括確定實例壽命的屬性,例如是否為每一消息/請求創(chuàng)建一新的邏輯實例或者邏輯實例的持續(xù)是否和連接維持期間同樣長。屬性可指定一操作是消息還是請求/應(yīng)答消息對,適當(dāng)?shù)嘏c屬性和編碼一起指定方法是同步的還是異步的。其他屬性可控制被管理的編碼類型中方法和參數(shù)的名稱以及WSDL操作、消息和部分的名稱之間的關(guān)系。屬性可用于控制將方法呼叫到由該方法呼叫的單獨部分包裝組成的消息的映射,或者到由每個自變量一部分組成的多部分消息的映射。最終,屬性將控制程序設(shè)計模型到文檔/文字或RPC/編碼的消息的映射。同樣可能實現(xiàn)編碼,要求程序設(shè)計模型傳遞以服務(wù)實例為基礎(chǔ)的信道實例,但這在WSDL上無效。
本發(fā)明同樣可以方法的形式描述,該方法包括功能性的步驟和/或無功能性的動作。下面是在實現(xiàn)本發(fā)明中可進行的動作和步驟的描述。通常,功能性的步驟以其完成的結(jié)果的形式描述發(fā)明,而非功能性的動作以用于實現(xiàn)一特定結(jié)果的更具體的動作來描述。盡管功能性的步驟和非功能性的動作可以特定的順序描述或要求,本發(fā)明并不需要限于任何特定的順序或組合的動作和/或步驟。
圖4A-4B圖示了按照本發(fā)明在一消息傳遞架構(gòu)中抽象處理層的方法的示范動作和步驟。用于在消息層內(nèi)抽象一個或多個消息傳遞實現(xiàn)的步驟(420)包括定義一抽象該消息傳遞實現(xiàn)的消息層接口的動作(410)。消息傳遞的范例包括TCP 411、HTTP 413、SMTP 415以及其他傳遞417。端口412是傳遞抽象的一個范例,其向信道層提供一原子的消息發(fā)送/接收抽象。
用于在信道層內(nèi)抽象一個或多個消息交換實現(xiàn)的步驟(440)可包括定義一抽象一個或多個消息交換實現(xiàn)的信道層接口的動作(430)。消息交換實現(xiàn)的范例包括數(shù)據(jù)報431、對話433、獨白435、隊列437以及其他交換實現(xiàn)439。消息交換實例430或信道實例是消息交換抽象的范例。
用于在服務(wù)層中抽象一個或多個捆綁實現(xiàn)的步驟(490)可包括定義一抽象一個或多個捆綁實現(xiàn)的動作(450),該捆綁實現(xiàn)將一個或多個消息交換實現(xiàn)捆綁至用戶碼或消息處理實現(xiàn)。按照程序設(shè)計模型451編寫的用戶碼454作為消息處理實例452。程序設(shè)計模型A、程序設(shè)計模型B、程序設(shè)計模型C等等是程序設(shè)計模型451的范例,其分別具有相應(yīng)的用戶碼A1、用戶碼A2等等,用戶碼B1、用戶碼B2等等,用戶碼C1、用戶碼C2等等,以作為消息處理實例452而運行。用于抽象一個或多個捆綁實現(xiàn)的步驟(490)還可包括把消息層類型映射至服務(wù)層類型(例如,WSDL至管理編碼類型)(460);將消息處理實例捆綁至消息交換實例(例如,服務(wù)實例至信道實例)(470);以及管理消息處理實例(例如,通過服務(wù)存儲器)的物理壽命(480)。
本發(fā)明范圍內(nèi)的實施例也包括用于攜帶或具有計算機可執(zhí)行的指令或保存在其上的數(shù)據(jù)結(jié)構(gòu)的計算機可讀媒介。這種計算機可讀媒介可以是任何現(xiàn)有的可由通用計算機和專用計算機訪問的媒介。例如但不限于,這種計算機可讀媒介包括RAM、ROM、EEPROM、CD-ROM或其他光盤存儲器、磁盤存儲器或其他磁盤存儲設(shè)備、或任何其他媒介,其可用于以計算機可執(zhí)行的指令或者數(shù)據(jù)結(jié)構(gòu)來攜帶或保存期望的程序編碼裝置并可由通用計算機或者專用計算機訪問。當(dāng)信息通過網(wǎng)絡(luò)或其他通信連接(可以是硬線、無線、或者是硬線和無線的組合)而傳輸或提供給一計算機時,該計算機將給連接視為以計算機可讀媒體。這樣,任何這種連接被視為一計算機可讀媒體。上述的組合也包括在計算機可讀媒體的范圍之內(nèi)。計算機可執(zhí)行的指令包括,例如,使通用計算機、專用計算機或者專用處理設(shè)備執(zhí)行特定功能或者功能組的指令和數(shù)據(jù)。
圖5以及下面的討論希望提供本發(fā)明可實現(xiàn)的合適計算環(huán)境的簡要的、一般的描述。盡管并不需要,但本發(fā)明仍將以被網(wǎng)絡(luò)環(huán)境中的計算機執(zhí)行的計算機可執(zhí)行指令的一般內(nèi)容描述,例如程序模塊。通常,程序模塊包括例程、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)等等,其進行特定的任務(wù)或?qū)崿F(xiàn)特定的抽象數(shù)據(jù)類型。計算機可執(zhí)行指令、相關(guān)的數(shù)據(jù)結(jié)構(gòu)、以及程序模塊表示用于這里所公開的方法的執(zhí)行步驟的程序編碼裝置的范例。這些可執(zhí)行指令或相關(guān)數(shù)據(jù)結(jié)構(gòu)的特定序列表示用于實現(xiàn)這些步驟中所描述的功能的相應(yīng)的動作。
熟悉本領(lǐng)域的人員將會明白本發(fā)明可在具有許多類型的計算機系統(tǒng)配置的網(wǎng)絡(luò)計算環(huán)境中實現(xiàn),包括個人計算機、手提式設(shè)備、多處理器系統(tǒng)、基于微處理器或可編程的消費用戶電子元件、網(wǎng)絡(luò)PC、迷你計算機、主機電腦及類似的。本發(fā)明同樣可在分布式計算環(huán)境中實現(xiàn),其中任務(wù)由通過一通信網(wǎng)絡(luò)相連(通過硬線連接、無線連接、或者硬線和無線連接的組合)的本地和遠程處理設(shè)備執(zhí)行。在分布式計算環(huán)境中,程序模塊可位于本地和遠程存儲儲存設(shè)備中。
參考圖5,用于實現(xiàn)本發(fā)明的一示范系統(tǒng)包括以傳統(tǒng)計算機520形式出現(xiàn)的通用計算設(shè)備,包括處理單元521、系統(tǒng)存儲器522以及耦合包括系統(tǒng)存儲器522和處理單元521在內(nèi)多個系統(tǒng)組件的系統(tǒng)總線523。系統(tǒng)總線523可以式多種類型的總線結(jié)構(gòu)中的任意一種,包括存儲器總線或存儲器控制器、外圍總線、以及使用多種總線結(jié)構(gòu)中的任何一種的本地總線。系統(tǒng)存儲器包括只讀存儲器(ROM)524和隨機存取存儲器(RAM)525?;据斎?輸出系統(tǒng)(BIOS)526,包含幫助信息在計算機520的元件之間進行傳遞的基本例程,例如在起動期間可能存儲在ROM 524中的。
計算機520也可包括用于從磁硬盤539上讀取或?qū)懭氲拇庞脖P驅(qū)動器527,用于從可移動磁盤529上讀取或?qū)懭氲拇疟P驅(qū)動器528,以及用于從諸如CD-ROM或其他光媒介的移動光盤531上讀取或?qū)懭氲墓獗P驅(qū)動器530。磁硬盤驅(qū)動器527、磁盤驅(qū)動器528和光盤驅(qū)動器530分別通過硬盤驅(qū)動器接口532、磁盤驅(qū)動器接口533和光盤驅(qū)動器接口534連接到系統(tǒng)總線523。驅(qū)動器以及它們的相關(guān)媒介提供用于計算機520的計算機可執(zhí)行指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和其他數(shù)據(jù)的非易失性的存儲。盡管這里描述的示范環(huán)境使用了磁硬盤539、可移動磁盤529和可移動光盤531,其他類型的用于保存數(shù)據(jù)的計算機可讀媒介也可以使用,包括磁帶、閃存存儲卡、數(shù)字通用光盤、Bernoulli盒帶、RAM、ROM及類似的。
程序編碼裝置包括可保存在硬盤539、磁盤529、光盤531、ROM 524或RAM525中的一個或多個程序模塊,包括一操作系統(tǒng)535,一個或多個應(yīng)用程序536,其他程序模塊537,以及程序數(shù)據(jù)538。用戶可通過鍵盤540、指向裝置542、或其他輸入設(shè)備(沒有示出),例如麥克風(fēng)、游戲手柄、游戲板、衛(wèi)星天線、掃描儀或類似的設(shè)備來輸入命令和信息至計算機520。這些和其他的輸入設(shè)備通常通過耦合到系統(tǒng)總線523的串行接口546連接到處理單元521?;蛘撸斎朐O(shè)備可由其他的接口相連接,例如并行端口,游戲端口或通用串行總線(USB)。監(jiān)視器547或其他顯示設(shè)備也通過接口連接到系統(tǒng)總線523,例如視頻適配器548。除了顯示器,個人電腦一般包括其他外圍輸出設(shè)備(沒有示出),例如揚聲器和打印機。
計算機520可操作于網(wǎng)絡(luò)環(huán)境中,使用邏輯連接至一個或多個遠程計算機,例如遠程計算機549a和549b。遠程計算機549a和549b都可以是另一個個人計算機、服務(wù)器、路由器、網(wǎng)絡(luò)PC、對等設(shè)備或其他普通的網(wǎng)絡(luò)節(jié)點,并一般包括上述的對于計算機520的許多或者全部的元件,盡管圖5中僅圖示了存儲儲存設(shè)備550a和550b以及它們相關(guān)的應(yīng)用程序536a和536b。圖5中說明的邏輯連接包括本地網(wǎng)絡(luò)(LAN)551和廣域網(wǎng)絡(luò)(WAN)552,這里將其示出是作為反了而不是限制。這樣的網(wǎng)絡(luò)環(huán)境是辦公范圍或企業(yè)范圍的計算機網(wǎng)絡(luò)、內(nèi)部網(wǎng)和互聯(lián)網(wǎng)中常有的。
當(dāng)使用LAN網(wǎng)絡(luò)環(huán)境時,計算機520通過一網(wǎng)絡(luò)接口或適配器553連接到本地網(wǎng)絡(luò)551。當(dāng)使用WAN網(wǎng)絡(luò)環(huán)境時,計算機520可包括調(diào)制解調(diào)器554、無線鏈路,或其他用于在廣域網(wǎng)552,例如互聯(lián)網(wǎng)上建立通信的裝置。調(diào)制解調(diào)器554,可以是內(nèi)置的或者是外置的,通過串行端口接口546連接到系統(tǒng)總線523。在網(wǎng)絡(luò)環(huán)境中,對于計算機520或其部分而說明的程序模塊可保存在遠程存儲儲存設(shè)備中。需要了解示出的網(wǎng)絡(luò)連接是示范性的,而其他用于在廣域網(wǎng)絡(luò)552上建立通信的裝置也可以使用。
本發(fā)明可使用其它特定的形式實現(xiàn)而不脫離其原理或基本特征。所描述的實施例應(yīng)被認為在所有的方面只是用于說明而非限制。于是,本發(fā)明的范圍是由權(quán)利要求而非上面的描述而指明。所有在權(quán)利要求或其等同的意義和范圍中的改變應(yīng)被認為在此范圍之內(nèi)。
權(quán)利要求
1.一種實現(xiàn)消息傳遞架構(gòu)的計算機程序產(chǎn)品,該產(chǎn)品抽象架構(gòu)中的各個處理層,其中所述架構(gòu)提供一基本級別的消息傳遞功能,所述抽象處理層是可擴展的,從而可作出改變和提高而不必要重新實現(xiàn)其他抽象處理層中所提供的基本級別的消息傳遞功能,所述計算機程序產(chǎn)品包括一個或多個計算機可讀媒介,其傳遞形式為程序模塊的計算機可執(zhí)行指令,所述程序模塊包括一個或多個消息傳遞層模塊,提供了一個或多個消息的端點對端點傳輸并實現(xiàn)對一個或多個消息傳遞協(xié)議的支持;一個或多個信道層模塊,用于在所述一個或多個消息層模塊的頂上提供消息交換語義;以及一個或多個服務(wù)層模塊,用于在所述一個或多個信道層模塊的頂上提供一個或多個程序設(shè)計模型,用于通過暴露可以被為使用消息傳遞架構(gòu)而設(shè)計的軟件所訪問的消息傳遞架構(gòu)的一個或多個特征,從而與所述消息架構(gòu)互動。
2.如權(quán)利要求1所述的計算機程序產(chǎn)品,其特征在于,所述一個或多個消息傳遞協(xié)議包括命名管道、傳輸控制協(xié)議(TCP)、超文本傳輸協(xié)議(HTTP)以及簡單郵件傳輸協(xié)議(SMTP)中的至少一個。
3.如權(quán)利要求1所述的計算機程序產(chǎn)品,其特征在于,所述一個或多個消息傳遞層模塊允許在消息離開或到達端點時攔截消息。
4.如權(quán)利要求3所述的計算機程序產(chǎn)品,其特征在于,所述一個或多個消息傳遞層模塊實現(xiàn)包括路由、過濾、策略管理、記錄、交易以及安全性中的至少一個的行為。
5.如權(quán)利要求1所述的計算機程序產(chǎn)品,其特征在于,所述一個或多個信道層模塊實現(xiàn)至少下列之一(i)用于單向不相關(guān)信息傳遞的數(shù)據(jù)報信道,(ii)用于雙向相關(guān)消息傳遞的對話信道,(iii)用于單向廣播消息傳遞,包括公布/預(yù)定消息傳遞的獨白信道,以及(iv)用于單向隊列消息傳遞的隊列信道。
6.如權(quán)利要求1所述的計算機程序產(chǎn)品,其特征在于,在所述一個或多個信道層模塊頂上提供一個或多個程序設(shè)計模型的所述一個或多個服務(wù)層模塊在所述消息傳遞架構(gòu)中的一個或多個web服務(wù)描述語言(WSDL)端口類型和一個或多個被管理的類型之間實現(xiàn)直接映射。
7.如權(quán)利要求1所述的計算機程序產(chǎn)品,其特征在于,所述一個或多個消息傳遞層模塊包括為所述一個或多個信道層模塊提供原子消息發(fā)送/接收抽象的端口。
8.如權(quán)利要求1所述的計算機程序產(chǎn)品,其特征在于,所述一個或多個信道層模塊包括一信道管理器,其收集消息并使其相關(guān),并向所述一個或多個服務(wù)層模塊給出高級的信道抽象。
9.如權(quán)利要求1所述的計算機程序產(chǎn)品,其特征在于,所述一個或多個服務(wù)層模塊包括一服務(wù)管理器,其通過在所述一個或多個服務(wù)層模塊中的至少一個以及所述一個或多個信道層模塊中的至少一個之間建立一個或多個連接來協(xié)調(diào)所述消息傳遞架構(gòu)。
10.如權(quán)利要求9所述的計算機程序產(chǎn)品,其特征在于,所述服務(wù)管理器通過把一個或多個任務(wù)委派給所述架構(gòu)中適于所述一個或多個任務(wù)的其他模塊而支持擴展性。
11.如權(quán)利要求9所述的計算機程序產(chǎn)品,其特征在于,所述一個或多個信道層模塊包括一個或多個信道實例,所述一個或多個服務(wù)層模塊包括一個或多個服務(wù)捆綁器、一個或多個服務(wù)實例以及一個或多個服務(wù)代理,服務(wù)代理把所述一個或多個信道實例捆綁到所述一個或多個服務(wù)實例。
12.如權(quán)利要求11所述的計算機程序產(chǎn)品,其特征在于,所述一個或多個服務(wù)實例給出了一個或多個用于與所述消息傳遞架構(gòu)互動的用戶碼實例,所述一個或多個信道實例給出了一個或多個信道的一個或多個實例,用于處理指向或源自所述一個或多個服務(wù)實例的特定類型的一個或多個消息,所述一個或多個服務(wù)捆綁器用于管理所述一個或多個服務(wù)實例以及所述一個或多個信道實例如何通過所述一個或多個服務(wù)代理彼此關(guān)聯(lián)或通信。
13.如權(quán)利要求12所述的計算機程序產(chǎn)品,其特征在于,所述一個或多個服務(wù)層模塊包括(i)管理所述一個或多個服務(wù)實例的物理壽命的服務(wù)存儲器,以及(ii)一個或多個服務(wù)擴展,其攔截流入或流出所述一個或多個服務(wù)實例的一個或多個消息,其中所述一個或多個服務(wù)擴展實現(xiàn)包括路由、過濾、策略管理以及安全性中的至少一個在內(nèi)的行為。
14.在包括為處理一個或多個消息提供特定初始功能的多個處理層的消息傳遞架構(gòu)中,一種在所述消息傳遞架構(gòu)中抽象所述多個處理層的方法,以使之后可對所述消息傳遞架構(gòu)作出改變和提高而同時保留所述特定的初始功能,該方法包括下列動作定義一消息層接口,該接口為所述消息傳遞架構(gòu)中的一個或多個較高層抽象一個或多個消息傳遞實現(xiàn);在所述消息層接口的頂上定義一信道層接口,其中所述信道層接口為所述消息傳遞架構(gòu)中的一個或多個較高層抽象一個或多個消息交換實現(xiàn);以及在所述信道層接口的頂上定義一服務(wù)層接口,其中所述服務(wù)層接口抽象一個或多個捆綁實現(xiàn),其通過所述信道層接口將所述一個或多個消息交換實現(xiàn)捆綁至在所述消息傳遞架構(gòu)的頂上構(gòu)建的一個或多個消息處理實現(xiàn)的用戶碼。
15.如權(quán)利要求14所述的方法,其特征在于,所述服務(wù)層接口至少部分地描述了使用所述消息傳遞架構(gòu)的程序設(shè)計模型。
16.如權(quán)利要求14所述的方法,其特征在于,所述程序設(shè)計模型指定了所述消息傳遞架構(gòu)中的一個或多個web服務(wù)描述語言(WSDL)端口類型以及一個或多個被管理的類型之間的映射。
17.如權(quán)利要求14所述的方法,其特征在于,所述消息層接口、信道層接口和服務(wù)層接口中的每一個都對應(yīng)于用于所述一個或多個消息傳遞實現(xiàn)、所述一個或多個消息交換實現(xiàn)和所述一個或多個捆綁實現(xiàn)的多個程序模塊。
18.如權(quán)利要求14所述的方法,其特征在于,所述一個或多個消息傳遞協(xié)議包括命名管道、傳輸控制協(xié)議(TCP)、超文本傳輸協(xié)議(HTTP)以及簡單郵件傳輸協(xié)議(SMTP)中的至少一個。
19.如權(quán)利要求14所述的方法,其特征在于,所述一個或多個信道層模塊實現(xiàn)至少包括下列之一(i)用于單向不相關(guān)信息傳遞的數(shù)據(jù)報信道,(ii)用于雙向相關(guān)消息傳遞的對話信道,(iii)用于單向廣播消息傳遞、包括公布/預(yù)定消息傳遞的獨白信道,以及(iv)用于單向隊列消息傳遞的隊列信道。
20.如權(quán)利要求14所述的方法,其特征在于,所述消息層接口還抽象了一個或多個端口,其中各個端口都提供一原子消息發(fā)送/接收抽象。
21.如權(quán)利要求14所述的方法,其特征在于,所述一個或多個捆綁實現(xiàn)包括一個或多個服務(wù)捆綁實現(xiàn),其進行將所述一個或多個消息交換實現(xiàn)捆綁至所述一個或多個建立在所述消息傳遞架構(gòu)之上的消息處理實現(xiàn)。
22.如權(quán)利要求21所述的方法,其特征在于,所述一個或多個服務(wù)捆綁器實現(xiàn)使用一個或多個服務(wù)代理實現(xiàn)來執(zhí)行將所述一個或多個消息交換實現(xiàn)捆綁至在所述消息傳遞架構(gòu)頂上構(gòu)建的所述一個或多個消息處理實現(xiàn)。
23.如權(quán)利要求22所述的方法,其特征在于,所述消息傳遞架構(gòu)包括所述一個或多個消息交換實現(xiàn)的一個或多個實例以及所述一個或多個消息處理實現(xiàn)的一個或多個實例,其中分開的服務(wù)代理實例把所述一個或多個消息交換實例的每一個捆綁至對應(yīng)的消息處理實例。
24.如權(quán)利要求23所述的方法,其特征在于,所述服務(wù)層接口抽象了一服務(wù)存儲器實現(xiàn),其管理所述一個或多個消息處理實例的物理壽命。
25.在包括為處理一個或多個消息提供特定初始功能的多個處理層的消息傳遞架構(gòu)中,一種包括一個或多個計算機可讀媒介的計算機程序產(chǎn)品,其攜帶計算機可執(zhí)行指令,所述指令實現(xiàn)一種在所述消息傳遞架構(gòu)中抽象所述多個處理層的方法,以使之后可對所述消息傳遞架構(gòu)作出改變和提高而同時保留所述特定的初始功能,該方法包括下列動作定義一消息層接口,所述接口為所述消息傳遞架構(gòu)中的一個或多個較高層抽象一個或多個消息傳遞實現(xiàn);在所述消息層接口頂上定義一信道層接口,其中所述信道層接口為所述消息傳遞架構(gòu)中的一個或多個較高層抽象一個或多個消息交換實現(xiàn);以及在所述信道層接口頂上定義一服務(wù)層接口,其中所述服務(wù)層接口抽象一個或多個捆綁實現(xiàn),該實現(xiàn)通過所述信道層接口將所述一個或多個消息交換實現(xiàn)捆綁至在所述消息傳遞架構(gòu)上構(gòu)建的一個或多個消息處理實現(xiàn)的用戶碼。
26.如權(quán)利要求25所述的計算機程序產(chǎn)品,其特征在于,所述服務(wù)層接口至少部分地描述了使用所述消息傳遞架構(gòu)的程序設(shè)計模型。
27.如權(quán)利要求25所述的計算機程序產(chǎn)品,其特征在于,所述消息層接口、信道層接口和服務(wù)層接口中的每一個都對應(yīng)于用于所述一個或多個消息傳遞實現(xiàn)、所述一個或多個消息交換實現(xiàn)以及所述一個或多個捆綁實現(xiàn)的多個程序模塊。
28.如權(quán)利要求25所述的計算機程序產(chǎn)品,其特征在于,所述一個或多個消息傳遞協(xié)議包括命名管道、傳輸控制協(xié)議(TCP)、超文本傳輸協(xié)議(HTTP)以及簡單郵件傳輸協(xié)議(SMTP)中的至少一個。
29.如權(quán)利要求25所述的計算機程序產(chǎn)品,其特征在于,所述一個或多個信道層模塊實現(xiàn)包括至少下列之一(i)用于單向不相關(guān)信息傳遞的數(shù)據(jù)報信道,(ii)用于雙向相關(guān)消息傳遞的對話信道,(iii)用于單向廣播消息傳遞、包括公布/預(yù)定消息傳遞的獨白信道,以及(iv)用于單向隊列消息傳遞的隊列信道。
30.如權(quán)利要求25所述的計算機程序產(chǎn)品,其特征在于,所述消息層接口還抽象一個或多個端口,端口中的每一個都提供一原子的消息發(fā)送/接收抽象。
31.如權(quán)利要求25所述的計算機程序產(chǎn)品,其特征在于,所述一個或多個捆綁實現(xiàn)包括一個或多個服務(wù)捆綁實現(xiàn),它執(zhí)行將所述一個或多個消息交換實現(xiàn)捆綁至在所述消息傳遞架構(gòu)上構(gòu)建的一個或多個消息處理實現(xiàn)。
32.如權(quán)利要求25所述的計算機程序產(chǎn)品,其特征在于,所述一個或所個服務(wù)捆綁器實現(xiàn)使用一個或多個服務(wù)代理實現(xiàn)以執(zhí)行將所述一個或多個消息交換實現(xiàn)捆綁至在所述消息傳遞架構(gòu)上構(gòu)建的一個或多個消息處理實現(xiàn)。
33.如權(quán)利要求32所述的計算機程序產(chǎn)品,其特征在于,所述消息傳遞架構(gòu)包括所述一個或多個消息交換實現(xiàn)的一個或多個實例以及所述一個或多個消息處理實現(xiàn)的一個或多個實例,其中分開的服務(wù)代理實例把所述一個或多個消息交換實例中的每一個捆綁至對應(yīng)的消息處理實例,所述服務(wù)層接口抽象一服務(wù)存儲器實現(xiàn),該實現(xiàn)管理用于所述一個或多個消息處理實例的物理壽命。
34.在包括為處理一個或多個消息提供特定初始功能的多個處理層的消息傳遞架構(gòu)中,一種在所述消息傳遞架構(gòu)中抽象所述多個處理層的方法,以使之后可對所述消息傳遞架構(gòu)作出改變和提高而同時保留所述特定的初始功能,該方法包括下列步驟在消息層中,抽象一個或多個消息傳遞實現(xiàn),以用于所述消息傳遞架構(gòu)中的一個或多個其他層;在所述消息層上的信道層中,抽象一個或多個消息交換實現(xiàn),以用于所述消息傳遞架構(gòu)中的一個或多個其他層;以及在所述信道層上的服務(wù)層中,抽象一個或多個捆綁實現(xiàn),用于把所述一個或多個消息交換實現(xiàn)捆綁至與使用所述消息傳遞架構(gòu)的一個或多個消息處理實現(xiàn)相對應(yīng)的用戶碼。
35.如權(quán)利要求34所述的方法,其特征在于,所述服務(wù)層接口至少部分地描述了使用所述消息傳遞架構(gòu)的程序設(shè)計模型。
36.如權(quán)利要求34所述的方法,其特征在于,所述消息層抽象、信道層抽象和服務(wù)層抽象中的每一個都對應(yīng)于用于所述一個或多個消息傳遞實現(xiàn)、所述一個或多個消息交換實現(xiàn)以及所述一個或多個捆綁實現(xiàn)的多個程序模塊。
37.如權(quán)利要求34所述的方法,其特征在于,所述消息層抽象還抽象一個或多個端口,端口中的每一個都提供原子的消息發(fā)送/接收抽象。
38.如權(quán)利要求37所述的方法,其特征在于,所述消息傳遞架構(gòu)包括所述一個或多個消息交換實現(xiàn)的一個或多個實例以及所述一個或多個消息處理實現(xiàn)的一個或多個實例,其中所述一個或多個捆綁實例包括一個或多個服務(wù)捆綁實現(xiàn),它們使用一個或多個服務(wù)代理實例把各個消息交換實例捆綁至對應(yīng)的消息處理實例。
39.如權(quán)利要求38所述的方法,其特征在于,所述服務(wù)層抽象還抽象一服務(wù)存儲器實現(xiàn),該實現(xiàn)管理所述一個或多個消息處理實例的物理壽命。
40.如權(quán)利要求39所述的方法,其特征在于,所述一個或多個消息傳遞協(xié)議包括命名管道、傳輸控制協(xié)議(TCP)、超文本傳輸協(xié)議(HTTP)以及簡單郵件傳輸協(xié)議(SMTP)中的至少一個。
41.如權(quán)利要求40所述的方法,其特征在于,所述一個或多個信道層模塊實現(xiàn)包括至少下列之一(i)用于單向不相關(guān)信息傳遞的數(shù)據(jù)報信道,(ii)用于雙向相關(guān)消息傳遞的對話信道,(iii)用于單向廣播消息傳遞、包括公布/預(yù)定消息傳遞的獨白信道,以及(iv)用于單向隊列消息傳遞的隊列信道。
42.對于包括為處理一個或多個消息提供特定初始功能的多個處理層的消息傳遞架構(gòu)而言,一種包括一個或多個計算機可讀媒介的計算機程序產(chǎn)品,該產(chǎn)品攜帶計算機可執(zhí)行指令,所述指令用于執(zhí)行一種在所述消息傳遞架構(gòu)中抽象所述多個處理層的方法,以使之后可對所述消息傳遞架構(gòu)作出改變和提高而同時保留所述特定的初始功能,該方法包括下列步驟在消息層中,抽象一個或多個消息傳遞實現(xiàn)以用于所述消息傳遞架構(gòu)中的一個或多個其他層;在所述消息層上的信道層中,抽象一個或多個消息交換實現(xiàn)以用于所述消息傳遞架構(gòu)中的一個或多個其他層;以及在所述信道層上的服務(wù)層中,抽象一個或多個捆綁實現(xiàn),其將所述一個或多個消息交換實現(xiàn)捆綁至與使用所述消息傳遞架構(gòu)的一個或多個消息處理實現(xiàn)相對應(yīng)的用戶碼。
43.如權(quán)利要求42所述的計算機程序產(chǎn)品,其特征在于,所述服務(wù)層接口至少部分地描述了使用所述消息傳遞架構(gòu)的程序設(shè)計模型。
44.如權(quán)利要求42所述的計算機程序產(chǎn)品,其特征在于,所述消息層抽象、信道層抽象和服務(wù)層抽象中的每一個都對應(yīng)于用于所述一個或多個消息傳遞實現(xiàn)、所述一個或多個消息交換實現(xiàn)以及所述一個或多個捆綁實現(xiàn)的多個程序模塊。
45.如權(quán)利要求42所述的計算機程序產(chǎn)品,其特征在于,所述消息層抽象還抽象一個或多個端口,端口中的每一個都提供一原子的消息發(fā)送/接收抽象。
46.如權(quán)利要求45所述的計算機程序產(chǎn)品,其特征在于,所述消息傳遞架構(gòu)包括所述一個或多個消息交換實現(xiàn)的一個或多個實例以及所述一個或多個消息處理實現(xiàn)的一個或多個實例,其中所述一個或多個捆綁實例包括一個或多個服務(wù)捆綁實現(xiàn),所述捆綁實現(xiàn)使用一個或多個服務(wù)代理實例把各個消息交換實例捆綁至對應(yīng)的消息處理實例。
47.如權(quán)利要求46所述的計算機程序產(chǎn)品,其特征在于,所述服務(wù)層抽象還抽象一服務(wù)存儲器實現(xiàn),其管理用于所述一個或多個消息處理實例的物理壽命。
48.如權(quán)利要求47所述的計算機程序產(chǎn)品,其特征在于,所述一個或多個消息傳遞協(xié)議包括命名管道、傳輸控制協(xié)議(TCP)、超文本傳輸協(xié)議(HTTP)以及簡單郵件傳輸協(xié)議(SMTP)中的至少一個。
49.如權(quán)利要求42所述的計算機程序產(chǎn)品,其特征在于,所述一個或多個信道層模塊實現(xiàn)包括至少下列之一(i)用于單向不相關(guān)信息傳遞的數(shù)據(jù)報信道,(ii)用于雙向相關(guān)消息傳遞的對話信道,(iii)用于單向廣播消息傳遞、包括公布/預(yù)定消息傳遞的獨白信道,以及(iv)用于單向隊列消息傳遞的隊列信道。
全文摘要
用于在消息傳遞架構(gòu)中抽象處理層的方法、系統(tǒng)和計算機程序產(chǎn)品,以使能夠?qū)軜?gòu)作出改變和提高而同時保留現(xiàn)有的功能。消息傳遞實現(xiàn)在消息層中被抽象,允許架構(gòu)中的其他層以一種更普通的方式與消息進行互動,大大獨立于消息傳遞。傳遞的范例包括命名管道、傳輸控制協(xié)議(TCP)、超文本傳輸協(xié)議(HTTP)、簡單郵件傳輸協(xié)議(SMTP)等等。消息層上的信道層抽象消息交換實現(xiàn),允許架構(gòu)中的其他層以一種更普通的方式發(fā)送并接收消息,大大獨立于指定實現(xiàn)的消息交換語義。消息交換的范例包括數(shù)據(jù)報、對話、獨白、隊列等等。在信道層和消息層之上,服務(wù)層抽象把消息交換實現(xiàn)捆綁至用戶碼實現(xiàn)的捆綁實現(xiàn)。
文檔編號H04L29/10GK1533117SQ20041003176
公開日2004年9月29日 申請日期2004年3月23日 優(yōu)先權(quán)日2003年3月26日
發(fā)明者Y·E·克里斯騰森, R·T·斯圖吉爾, E·B·克里斯騰森, J·魯伊茲-斯考格爾, A·德加那特, M·J·馬魯切克, Y E 克里斯騰森, 克里斯騰森, 幽翹, 斯圖吉爾, 磷 斯考格爾, 馬魯切克 申請人:微軟公司