專利名稱:提供可下載碼用于與分布式系統(tǒng)中的裝置進(jìn)行通信的裝置和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種在分布式系統(tǒng)中在機(jī)器之間傳送對(duì)象的系統(tǒng)和方法,尤其涉及可下載代碼的傳送,該代碼用于與分布式系統(tǒng)中的裝置進(jìn)行通信。
背景技術(shù):
分布式系統(tǒng)中的機(jī)器可以相互通信和訪問(wèn)。當(dāng)裝置想要加入分布式系統(tǒng)時(shí),已經(jīng)在該系統(tǒng)中的機(jī)器通常必須知道如何與裝置進(jìn)行通信。這一要求意味著例如,機(jī)器必須存儲(chǔ)可能加入系統(tǒng)的所有裝置的代碼、驅(qū)動(dòng)器和端口信息。另外,還要求它們存儲(chǔ)與可能加入系統(tǒng)的所有裝置進(jìn)行通信的存根。代理存根是重新構(gòu)造對(duì)象時(shí)使用的對(duì)遠(yuǎn)程對(duì)象的引用,并且這些存根便于在分布式系統(tǒng)中的機(jī)器之間進(jìn)行通信。由于與可能加入系統(tǒng)的裝置進(jìn)行通信要求有預(yù)存的信息量,這些要求會(huì)造成低效并增加存儲(chǔ)器或存儲(chǔ)要求。因此,要求增加為在分布式系統(tǒng)中機(jī)器之間進(jìn)行通信而傳送代碼的靈活性。
按照本發(fā)明的第一種方法從一機(jī)器發(fā)送一個(gè)多信道包,包括加入分布式系統(tǒng)的請(qǐng)求,和包括與機(jī)器進(jìn)行通信的代碼的指示。接收一響應(yīng),該響應(yīng)包括用于對(duì)向系統(tǒng)登記的實(shí)體(entity)的引用(reference),并且將一消息傳送到該實(shí)體,以向系統(tǒng)進(jìn)行登記。
按照本發(fā)明的第二種方法是從一機(jī)器接收一個(gè)多信道包,它包括加入一分布式系統(tǒng)的請(qǐng)求,并包括與該機(jī)器進(jìn)行通信的代碼的指示。該代碼用來(lái)構(gòu)造一響應(yīng),包括用于對(duì)向系統(tǒng)登記的實(shí)體(entity)的引用(reference),并且將一響應(yīng)傳送到該機(jī)器。
按照本發(fā)明的第三個(gè)方法是從一機(jī)器發(fā)送一第一對(duì)象,它包括與第一機(jī)器進(jìn)行通信的代碼指示,并且一第二機(jī)器接收該第一對(duì)象。該代碼用來(lái)構(gòu)造與第一機(jī)器進(jìn)行通信的第二對(duì)象,并且第二對(duì)象從第二機(jī)器傳送到第一機(jī)器。
按照本發(fā)明的第一種裝置是從一機(jī)器接收一個(gè)多信道包,它包括加入一分布式系統(tǒng)的請(qǐng)求,并包括與該機(jī)器進(jìn)行通信的代碼的指示。該裝置接收一個(gè)響應(yīng),包括對(duì)向系統(tǒng)登記的實(shí)體的引用,并向該實(shí)體發(fā)送一條消息,以向系統(tǒng)進(jìn)行登記。
按照本發(fā)明第二個(gè)裝置是從一機(jī)器接收一個(gè)多信道包,它包括加入一分布式系統(tǒng)的請(qǐng)求,并包括與該機(jī)器進(jìn)行通信的代碼的指示。該裝置采用代碼來(lái)構(gòu)造一個(gè)響應(yīng),包括對(duì)向系統(tǒng)進(jìn)行登記的實(shí)體的引用,并將該響應(yīng)發(fā)送到該機(jī)器。
按照本發(fā)明的第三個(gè)裝置從第一個(gè)機(jī)器發(fā)送一個(gè)第一對(duì)象,包括與第一機(jī)器進(jìn)行通信的代碼指示。該裝置在第二機(jī)器處接收該第一對(duì)象,并用該代碼構(gòu)造一個(gè)第二對(duì)象,用來(lái)與第一機(jī)器進(jìn)行通信。將第二對(duì)象從第二機(jī)器傳送到第一機(jī)器。
附圖簡(jiǎn)述作為本說(shuō)明書一部分的附圖與本說(shuō)明書一起說(shuō)明了本發(fā)明的優(yōu)點(diǎn)和原理。圖中,
圖1是按照本發(fā)明的實(shí)施例中可以使用的典型分布式處理系統(tǒng)的圖;圖2是典型的分布式系統(tǒng)結(jié)構(gòu)圖;圖3是圖2中示出的分布式系統(tǒng)結(jié)構(gòu)中計(jì)算機(jī)的圖;圖4是描述加入網(wǎng)絡(luò)的裝置的典型分布式系統(tǒng)的圖;以及圖5是加入分布式系統(tǒng)的裝置的過(guò)程流程圖。
詳細(xì)描述概述按照本發(fā)明的方法和系統(tǒng)提供了一種使裝置加入分布式網(wǎng)絡(luò)的技術(shù)。當(dāng)裝置加入網(wǎng)絡(luò)時(shí),它發(fā)送一個(gè)多信道包,它包括一個(gè)用來(lái)與裝置進(jìn)行通信時(shí)使用的代碼或代碼引用(reference)。網(wǎng)絡(luò)中的接收機(jī)使用該引用下載代碼,以與裝置進(jìn)行通信。因此,接收機(jī)不需要預(yù)存代碼或其他與裝置進(jìn)行通信的信息,這樣可以增強(qiáng)網(wǎng)絡(luò)的效率。
通過(guò)將對(duì)網(wǎng)絡(luò)中的查詢服務(wù)的引用發(fā)送到該裝置,接收機(jī)對(duì)多信道包作出響應(yīng)。采用從至少一個(gè)接收機(jī)得到的引用,裝置向該查詢服務(wù)登記自己。查詢服務(wù)見申請(qǐng)日為同一日的美國(guó)專利申請(qǐng)“便于訪問(wèn)查詢服務(wù)的方法和系統(tǒng)”,該專利已轉(zhuǎn)讓給本發(fā)明的受讓人,在此引述供參考。
分布式處理系統(tǒng)圖1是可以用于本發(fā)明實(shí)施例的典型分布式處理系統(tǒng)100。圖1中,分布式處理系統(tǒng)100由三個(gè)獨(dú)立的、各不相同的平臺(tái)101、102和103組成,它們連接成網(wǎng)絡(luò)結(jié)構(gòu),用網(wǎng)絡(luò)云119來(lái)代表。由網(wǎng)絡(luò)云119代表的網(wǎng)絡(luò)結(jié)構(gòu)的組成和協(xié)議并不重要。只要能夠允許在平臺(tái)101、102和103之間進(jìn)行信息交換即可。另外,只采用三個(gè)平臺(tái)僅僅是為了描述起見,并不意味著是將本發(fā)明限制在特定數(shù)量的平臺(tái)上。另外,特定的網(wǎng)絡(luò)結(jié)構(gòu)對(duì)本發(fā)明的實(shí)施例來(lái)說(shuō),并不是嚴(yán)格要求的。例如,可以用于本發(fā)明實(shí)施例的另一種網(wǎng)絡(luò)結(jié)構(gòu)可以采用一個(gè)平臺(tái)作為可以連接所有其他平臺(tái)的網(wǎng)絡(luò)控制器。
在分布式處理系統(tǒng)100中,平臺(tái)101、102和103都包括一個(gè)處理器116、117和118,以及存儲(chǔ)器104、105和106。存儲(chǔ)器104、105和106中是應(yīng)用程序107、108和109,操作系統(tǒng)110、111和112以及JavaTM遠(yuǎn)程方法調(diào)用元件(RMI)113、114和115。RMI的說(shuō)明例如見下述文件“遠(yuǎn)程方法調(diào)用技術(shù)規(guī)范”(Sun Microsystems,Inc.(1997)),在此引述供參考。該文件可以通過(guò)統(tǒng)一資源定位器(URL)得到http//www.javasoft.com/products/jdk/1.1/docs/guide/rmi/spec/rmiTOC.doc.html應(yīng)用程序107、108和109可以是先前寫入的程序,并且是修改成具有或特別利用了本發(fā)明所提供的服務(wù)的優(yōu)點(diǎn)。應(yīng)用程序107、108和109調(diào)用按照本發(fā)明的實(shí)施例而執(zhí)行的操作。
操作系統(tǒng)110、111和112通常是分別與相應(yīng)的處理器116、117和118相聯(lián)系的標(biāo)準(zhǔn)操作系統(tǒng)。平臺(tái)101、102和103可以是各不相同。例如,平臺(tái)101有一個(gè)由Sun Microsystems,Inc制造的UltraSparc作為處理器116,并采用Solaris操作系統(tǒng)110。平臺(tái)102有一個(gè)由Silicon Graphics Corp制造的MIPS微處理器,作為處理器117,并采用Unix操作系統(tǒng)111。最后,平臺(tái)有一個(gè)IntelCorp制造的奔騰微處理器,作為處理器118,并采用微軟視窗95操作系統(tǒng)112。本發(fā)明并非僅限于上述結(jié)構(gòu),可以適合于各種不同的平臺(tái)。
Sun,Sun Microsystems,Solaris,Java以及Sun Logo是Sun Microsystems,Inc在美國(guó)和其他國(guó)家注冊(cè)的商標(biāo)。UltraSpare和所有SPARC商標(biāo)是在取得許可證的情況下使用的,并且是SPARC International,Inc在美國(guó)和其他國(guó)家注冊(cè)的商標(biāo)。帶有SPARC商標(biāo)的產(chǎn)品是基于Sun Microsystems,Inc開發(fā)的結(jié)構(gòu)的。
存儲(chǔ)器103、104和105具有幾種功能,如用于相關(guān)平臺(tái)的通用存儲(chǔ)。另一個(gè)功能是存儲(chǔ)應(yīng)用程序107、108和109、RMI元件113、114和115和由各個(gè)處理器116、117和118執(zhí)行期間的操作系統(tǒng)110、111和112。另外,部分存儲(chǔ)器103、105和105可以構(gòu)成網(wǎng)絡(luò)119中所有平臺(tái)101、102和103的共享存儲(chǔ)器。注意,RMI元件113、114和115與JVM一起操作,圖中未示出是為了使圖簡(jiǎn)化。
分布式系統(tǒng)結(jié)構(gòu)按照本發(fā)明的系統(tǒng)和方法還可以在特定的分布式系統(tǒng)200中工作,這將參照?qǐng)D2和圖3來(lái)描述。該分布式系統(tǒng)200由各種元件組成,包括硬件和軟件,(1)使得系統(tǒng)用戶能夠在由許多裝置組成的網(wǎng)絡(luò)上共享服務(wù)和資源;(2)向程序員提供能夠進(jìn)行更強(qiáng)的保密的分布式系統(tǒng)的開發(fā)的工具和編程模式;以及(3)簡(jiǎn)化了管理分布式系統(tǒng)的任務(wù)。為了實(shí)現(xiàn)這一目標(biāo),分布式系統(tǒng)200采用Java編程環(huán)境,使得代碼和數(shù)據(jù)都能夠從一個(gè)裝置以無(wú)縫的方式移動(dòng)到另一個(gè)裝置。因此,分布式系統(tǒng)200是處在Java編程環(huán)境的頂層,并充分利用了該環(huán)境的特征,包括它所提供的保密性和它所提供的強(qiáng)打印。
在圖2和圖3所示的分布式系統(tǒng)200中,不同的計(jì)算機(jī)和裝置聯(lián)合成對(duì)用戶來(lái)說(shuō)是一個(gè)單個(gè)的系統(tǒng)。由于看上去是一個(gè)單個(gè)的系統(tǒng),分布式系統(tǒng)200提供訪問(wèn)的簡(jiǎn)化,和可以由單個(gè)系統(tǒng)提供的共享的功效,而無(wú)需放棄個(gè)人計(jì)算機(jī)或網(wǎng)站的靈活性和個(gè)性化響應(yīng)。分布式系統(tǒng)200可以含有幾千個(gè)由用戶操作的裝置,而這些用戶在地理上是分散的,但都接受委托、管理和方針的約定。
在典型的分布式系統(tǒng)中,有各種由一個(gè)或多個(gè)裝置提供的服務(wù)邏輯分組,每一個(gè)邏輯分組都稱為是一個(gè)Djinn?!胺?wù)”指的是一種資源、數(shù)據(jù)或功能,它們可以由用戶、程序、裝置或另一種服務(wù)來(lái)訪問(wèn),并且可以被運(yùn)算,進(jìn)行有關(guān)的存儲(chǔ)、有關(guān)的通信,或涉及向另一用戶提供訪問(wèn)。作為Djinn的一部分提供的服務(wù)例子包括裝置,如打印機(jī)、顯示器和磁盤;軟件,如程序?qū)嵱贸绦?;信息,如?shù)據(jù)庫(kù)和文件;以及系統(tǒng)的用戶。
用戶和裝置都可以加入有關(guān)Djinn。在加入Djinn時(shí),用戶或裝置在Djinn中加入零或多個(gè)服務(wù),并且可以根據(jù)保密性限制,訪問(wèn)它所含有的服務(wù)中的一種服務(wù)。所以,裝置和用戶聯(lián)合成有關(guān)Djinn,以共享對(duì)其服務(wù)的訪問(wèn)。Djinn的服務(wù)從程序方面看來(lái),就象是Java編程環(huán)境的對(duì)象,它可以包括其他的對(duì)象、以不同程序語(yǔ)言書寫的軟件成分,或硬件裝置。一種服務(wù)有一個(gè)接口,它定義了可以對(duì)該服務(wù)進(jìn)行請(qǐng)求的操作,并且服務(wù)的類型決定了組成該服務(wù)的接口。
分布式系統(tǒng)200由計(jì)算機(jī)202、計(jì)算機(jī)204和裝置206組成,由網(wǎng)絡(luò)208互聯(lián)起來(lái)。裝置206可以是任何數(shù)量的裝置,如打印機(jī)、傳真機(jī)、存儲(chǔ)裝置、計(jì)算機(jī)或其他的裝置。網(wǎng)絡(luò)208可以是局域網(wǎng)、廣域網(wǎng)或互聯(lián)網(wǎng)。盡管圖中只繪出只有兩個(gè)計(jì)算機(jī)和一個(gè)裝置包含分布式系統(tǒng)200,但本領(lǐng)域中的技術(shù)人員將能夠理解,分布式系統(tǒng)200可以包括其他的計(jì)算機(jī)或裝置。
圖3描繪的是更詳細(xì)的計(jì)算機(jī)202,示出了分布式系統(tǒng)200的幾個(gè)軟件成分。本領(lǐng)域中的技術(shù)人員將能夠理解,這里計(jì)算機(jī)204和裝置206的配置可以是相似的。計(jì)算機(jī)202包括存儲(chǔ)器302、第二存儲(chǔ)裝置304、中央處理單元(CPU)306、輸入裝置308,以及一個(gè)顯示器310。存儲(chǔ)器302包括查詢服務(wù)312、發(fā)現(xiàn)服務(wù)器314和一個(gè)Java運(yùn)行時(shí)系統(tǒng)316。Java運(yùn)行時(shí)系統(tǒng)316包括JavaRMI系統(tǒng)318和JVM320。第二存儲(chǔ)裝置304包括Java空間322。
如上所述,分布式系統(tǒng)200是基于Java程序環(huán)境的,因此使用的是Java運(yùn)行時(shí)系統(tǒng)316。Java運(yùn)行時(shí)系統(tǒng)316包括Java API庫(kù),使得在Java運(yùn)行時(shí)系統(tǒng)頂部的程序運(yùn)行能夠以與平臺(tái)無(wú)關(guān)的方式訪問(wèn)各種系統(tǒng)功能,包括主操作系統(tǒng)的視窗功能和網(wǎng)絡(luò)能力。由于在運(yùn)行時(shí)系統(tǒng)所移值的所有操作系統(tǒng)上,Java API庫(kù)提供了一個(gè)單個(gè)的公共API,在Java運(yùn)行時(shí)系統(tǒng)頂部運(yùn)行的程序以獨(dú)立平臺(tái)方式運(yùn)行,而不管是什么樣的操作系統(tǒng)或主平臺(tái)的硬件結(jié)構(gòu)。提供的Java運(yùn)行時(shí)系統(tǒng)516作為Java軟件開發(fā)工具的一部分,該軟件開發(fā)工具可從Sun Microsystems,Inc(Mountain View,CA)得到。
JVM320便于平臺(tái)獨(dú)立。JVM320象是一個(gè)抽象計(jì)算機(jī)器,以字節(jié)碼的形式接收來(lái)自程序的指令,并通過(guò)動(dòng)態(tài)地將字節(jié)碼轉(zhuǎn)換成用于執(zhí)行的形式如對(duì)象碼并執(zhí)行之來(lái)解釋這些字節(jié)碼。RMI318通過(guò)使對(duì)象能夠在一個(gè)計(jì)算機(jī)或裝置上執(zhí)行以調(diào)用另一臺(tái)計(jì)算機(jī)或裝置上的對(duì)象的方法,便于進(jìn)行遠(yuǎn)程方法調(diào)用。提供的RMI和JVM也作為Java軟件開發(fā)工具的一部分。
查詢服務(wù)312定義了用于特定Djinn的服務(wù)。即,可以有一個(gè)以上的Djinn,因此,分布式系統(tǒng)200中可以有一個(gè)以上的查詢服務(wù)。查詢服務(wù)312含有一個(gè)對(duì)象用于Djinn中的每一種服務(wù),并且每一對(duì)象含有各種便于對(duì)相應(yīng)的服務(wù)進(jìn)行訪問(wèn)的方法。查詢服務(wù)312的描述見美國(guó)專利申請(qǐng)“便于對(duì)查詢服務(wù)進(jìn)行訪問(wèn)的方法和系統(tǒng)”,該專利申請(qǐng)?jiān)诖艘龉﹨⒖肌?br>
發(fā)現(xiàn)服務(wù)器314檢測(cè)在稱為啟動(dòng)和聯(lián)接(或發(fā)現(xiàn))期間,何時(shí)將新的裝置加入到分布式系統(tǒng)200中,以及何時(shí)這樣一個(gè)新的裝置被檢測(cè)到,發(fā)現(xiàn)服務(wù)器將查詢服務(wù)312的引用(reference)傳送到新裝置,從而新裝置可以向查詢服務(wù)登記它的服務(wù),并變成Djinn的一個(gè)成員。登記以后,新裝置變成Djinn的一個(gè)成員,并且因此可以訪問(wèn)查詢?cè)L問(wèn)312中所含有的所有服務(wù)。啟動(dòng)和聯(lián)接的過(guò)程見美國(guó)專利申請(qǐng)“提供可下載碼用于與分布式系統(tǒng)中的裝置進(jìn)行通信的裝置和方法”,該專利申請(qǐng)?jiān)诖艘龉﹨⒖肌?br>
Java空間322是一個(gè)由分布式系統(tǒng)200中的程序使用的對(duì)象資源庫(kù)。程序采用Java空間322連續(xù)對(duì)對(duì)象進(jìn)行存儲(chǔ),并使它們能夠訪問(wèn)分布式系統(tǒng)200中其他的裝置。Java空間見美國(guó)專利申請(qǐng)08/971,529“采用多種組合形式的輸入和輸入口匹配的數(shù)據(jù)庫(kù)系統(tǒng)”,該申請(qǐng)已轉(zhuǎn)讓給共同的受讓人,其申請(qǐng)日是1997年11月17日,在此引述供參考。本領(lǐng)域中的技術(shù)人員將會(huì)理解,典型的分布式系統(tǒng)400可以包含許多查詢服務(wù)、發(fā)現(xiàn)服務(wù)器和Java空間。
分布式處理系統(tǒng)中的數(shù)據(jù)流圖4是典型的面向?qū)ο蟮姆植际骄W(wǎng)絡(luò)或系統(tǒng)400的圖,網(wǎng)絡(luò)或系統(tǒng)400連接機(jī)器401、408、411和414,如在一個(gè)或多個(gè)計(jì)算機(jī)上執(zhí)行的計(jì)算機(jī)或虛擬機(jī)器,或參照?qǐng)Dl、2和3描述的機(jī)器。如圖4所示,發(fā)送機(jī)器或裝置401包括對(duì)象402和用來(lái)對(duì)對(duì)象進(jìn)行處理的RMI403。裝置401要加入分布式網(wǎng)絡(luò)400,網(wǎng)絡(luò)中包括其他的裝置或機(jī)器,稱為接收機(jī)。網(wǎng)絡(luò)400包括含有查詢服務(wù)407的主機(jī)406,并且還包括接收機(jī)408、411和414。圖中只示出了三個(gè)接收機(jī)是為了描述之用;網(wǎng)絡(luò)400可以包括更少或更多的接收機(jī),并且通常包括許多的接收機(jī)。圖中,每一接收機(jī)含有RMI,圖中用RMI409、412和415表示。用于接收機(jī)的每一RMI構(gòu)成一個(gè)對(duì)對(duì)象402的遠(yuǎn)程引用(reference)。三個(gè)遠(yuǎn)程引用包括對(duì)象410、413和416,分別用于接收機(jī)408、41l和414。
為了加入網(wǎng)絡(luò)400,裝置401發(fā)送一個(gè)多信道包417,包括代碼404的一個(gè)指示,如與裝置401進(jìn)行通信的代碼的引用或代碼本身。多信道包是一個(gè)發(fā)送到網(wǎng)絡(luò)中的多個(gè)裝置的消息。裝置401使用RMI403,以提供靈活性,使得在必要時(shí),代碼與信息或?qū)ο蟮臓顟B(tài)和類型一起能夠移動(dòng)。另外,裝置401在多信道包417中可以包括傳送的對(duì)象類型的標(biāo)識(shí),構(gòu)成對(duì)象的狀態(tài)的數(shù)據(jù),以及成與對(duì)象相關(guān)的代碼的URL形式的網(wǎng)絡(luò)可訪問(wèn)的地址(location)。多信道包417還可以包括一個(gè)與引導(dǎo)裝置通信的存根。URL在本領(lǐng)域中是已知的,其說(shuō)明見“Java指導(dǎo)用于互聯(lián)網(wǎng)的面向?qū)ο蟮木幊獭?作者M(jìn)ary Campione和Kathy Wakrath,由Addison-Wesley,1996年出版,第494-507出版)。
響應(yīng)于多信道包417,接收機(jī)408、4ll和414發(fā)送響應(yīng)418、421和422,每一響應(yīng)包括一個(gè)用于與查詢服務(wù)407進(jìn)行通信的引用。接收時(shí),機(jī)器408接收多信道包417,它識(shí)別傳送的對(duì)象的類型。為了發(fā)送該響應(yīng),以及與裝置401進(jìn)行通信,接收機(jī)408、411和414采用來(lái)自裝置401引用,用以將調(diào)用419、423和424傳送到代碼服務(wù)器405,以便得到與裝置401進(jìn)行通信的代碼404。代碼服務(wù)器是一個(gè)實(shí)體(entity)和過(guò)程,能夠?qū)Υa進(jìn)行訪問(wèn),并對(duì)對(duì)象的特定類型和/或類的請(qǐng)求作出響應(yīng),并返回用于該對(duì)象的代碼。代碼服務(wù)器可以位于裝置401內(nèi)或在另一個(gè)機(jī)器上。同樣,代碼可以停留在同一平臺(tái)如代碼服務(wù)器上,或在另一個(gè)平臺(tái)上。
RMI409可以采用來(lái)自多信道包417的URL來(lái)確定代碼,以及將該代碼的復(fù)制形式轉(zhuǎn)發(fā)到接收機(jī)408。因?yàn)榇a是字節(jié)碼,因而是可移植的,所以,接收機(jī)可以將代碼裝載到RMI內(nèi),重新構(gòu)造對(duì)象。因此,接收機(jī)408、411和414可以重新構(gòu)造具有合適類型的對(duì)象,即使以前機(jī)器上并未出現(xiàn)過(guò)這種類型的對(duì)象。
接收機(jī)408、411和414采用代碼404來(lái)構(gòu)造發(fā)送響應(yīng)418、421和422的對(duì)象。另外,裝置401還發(fā)送代碼,而不是代碼的引用。裝置401接收這些響應(yīng),并用至少一個(gè)已發(fā)送的引用,通過(guò)調(diào)用420將自己向查詢服務(wù)407登記。這些調(diào)用可以是遠(yuǎn)程過(guò)程調(diào)用,并且對(duì)象可以作為字節(jié)流被發(fā)送。裝置401可以發(fā)送一條消息,以向查詢服務(wù)登記,該消息含有識(shí)別裝置的信息,從而使用查詢服務(wù)的機(jī)器可以進(jìn)行訪問(wèn)裝置或與它進(jìn)行通信。遠(yuǎn)程過(guò)程調(diào)用以及用于下載代碼的方法見美國(guó)專利申請(qǐng)08/950,756,其申請(qǐng)日為1997年10月15日,標(biāo)題是“對(duì)象的延遲重構(gòu)和在分布式系統(tǒng)中的遠(yuǎn)程裝載”,該專利申請(qǐng)?jiān)诖艘龉﹨⒖?。Java程序語(yǔ)言中使用的數(shù)據(jù)流包括輸入流和輸出流,在本領(lǐng)域中是已知的,其說(shuō)明見“JavaTM指導(dǎo)用于互聯(lián)網(wǎng)的面向?qū)ο蟮木幊獭?作者M(jìn)ary Campione和MathyWalrath,Addison-Wesley,1996),在此引述供參考。
用于裝置加入網(wǎng)絡(luò)的進(jìn)程圖5是裝置加入網(wǎng)絡(luò)如分布式網(wǎng)絡(luò)400的進(jìn)程500的流程圖。希望加入網(wǎng)絡(luò)的裝置向網(wǎng)絡(luò)發(fā)送一個(gè)多信道包,該多信道包包括一代碼指示,如代碼的引用或代碼本身,用來(lái)與裝置進(jìn)行通信(步驟501)。表1以偽碼的形式給出多信道包中的一例信息。該包可以是從引導(dǎo)程序或發(fā)現(xiàn)請(qǐng)求服務(wù)發(fā)出的,該引導(dǎo)程序或發(fā)現(xiàn)請(qǐng)求服務(wù)是在上述參照?qǐng)D3描述的發(fā)現(xiàn)服務(wù)器上運(yùn)行的,并接受對(duì)查詢服務(wù)引用的請(qǐng)求。所以,當(dāng)本例中一裝置加入網(wǎng)絡(luò)即稱為是“引導(dǎo)”到Djinn中時(shí),它可以采用引導(dǎo)程序請(qǐng)求服務(wù)而引導(dǎo)到網(wǎng)絡(luò)中。
表1
下面是表l中示出的典型包字段的說(shuō)明。“ProtoVersion”字段含有一個(gè)整數(shù),表示裝置加入網(wǎng)絡(luò)時(shí)操作中引導(dǎo)程序協(xié)議的版本?!岸它c(diǎn)”字段封裝了取決于傳送的端點(diǎn)信息,它使得引導(dǎo)程序請(qǐng)求服務(wù)的實(shí)例能夠構(gòu)成引導(dǎo)實(shí)體上引導(dǎo)程序響應(yīng)服務(wù)的有效引用。“id”字段含有“裝置標(biāo)識(shí)(Device ID)串”,它識(shí)別引導(dǎo)裝置?!按a庫(kù)(codebase)”字段提供了引導(dǎo)程序請(qǐng)求服務(wù)的實(shí)例可以下載存根用于引導(dǎo)響應(yīng)服務(wù)的URL?!皊tubType”字段提供了一個(gè)用于引導(dǎo)響應(yīng)服務(wù)的存根類完全合格的名字。
在接收到多信道包以后,網(wǎng)絡(luò)中的接收機(jī)下載代碼,用來(lái)構(gòu)造一個(gè)對(duì)象,用來(lái)與裝置進(jìn)行通信。每一接收機(jī)都向裝置傳送該對(duì)象,該對(duì)象包括網(wǎng)絡(luò)中查詢服務(wù)的引用(步驟502)。接收機(jī)可以采用該引導(dǎo)或發(fā)現(xiàn)響應(yīng)服務(wù),該響應(yīng)或服務(wù)是在發(fā)現(xiàn)(引導(dǎo))實(shí)體上運(yùn)行的,并接受查詢服務(wù)的引用。表2描繪的是用于引導(dǎo)程序響應(yīng)服務(wù)的典型的Java接口。
表2public interfaceResponseService extends java.rmi.Remote(public void advertiseLookup(ServiceRegistrar Lookup)throws java.rmi.RemoteException;)接收機(jī)通過(guò)引導(dǎo)響應(yīng)服務(wù),提供了一個(gè)對(duì)對(duì)象的引用,該對(duì)象構(gòu)成一個(gè)服務(wù)登記員,對(duì)應(yīng)于具有相同申請(qǐng)日的美國(guó)專利申請(qǐng)中的查詢服務(wù),該美國(guó)專利申請(qǐng)已轉(zhuǎn)讓給本發(fā)明的受讓人,在此引述供參考,其標(biāo)題是“分布式系統(tǒng)的動(dòng)態(tài)查詢服務(wù)”。如果裝置沒(méi)有收到多信道包的響應(yīng),則它將繼續(xù)以固定的間隔發(fā)送多信道包。
在接收到對(duì)象以后,裝置使用至少一個(gè)由接收機(jī)傳送的引用,以便通過(guò)服務(wù)登記員(registrar)向查詢服務(wù)登記(步驟503)。在登記以后,查詢服務(wù)因此而含有一個(gè)裝置標(biāo)識(shí),因此它是可以訪問(wèn)網(wǎng)絡(luò)中的其他實(shí)體的。除了向查詢服務(wù)登記以外,裝置還可以有選擇地作出響應(yīng),將其登記或其他的信息通知給它接收到對(duì)多信道包的響應(yīng)的每一個(gè)接收機(jī)(步驟504)。
上述協(xié)議和方法還可以用來(lái)提供一個(gè)目標(biāo),該目標(biāo)含有與特定裝置進(jìn)行通信所必須的所有行為(behavior)。所以,裝置不必要求它們保留用于與特定的裝置進(jìn)行通信的代碼指示,這是因?yàn)樗鼈兛梢杂蒙鲜龇椒◤奶囟ǖ难b置得到該信息。
實(shí)施圖5所示步驟的機(jī)器可以包括用來(lái)執(zhí)行如圖1、2、3和4中所示的功能的計(jì)算機(jī)處理器。它們可以包括使處理器能夠執(zhí)行上述功能的模塊或程序。它們還可以包括存儲(chǔ)器中存儲(chǔ)的計(jì)算機(jī)程序產(chǎn)品。計(jì)算機(jī)程序產(chǎn)品可以包括具有使機(jī)器能夠執(zhí)行上述功能的計(jì)算機(jī)可讀碼的計(jì)算機(jī)可讀介質(zhì)或媒體。媒體可以包括以載波實(shí)施的計(jì)算機(jī)數(shù)據(jù)信號(hào),并代表指令序列,這些指令序列在由處理器執(zhí)行時(shí),使處理器能夠通過(guò)執(zhí)行本說(shuō)明書中描述的方法,可靠地對(duì)位于絕對(duì)地址處的外圍裝置進(jìn)行尋址。該媒體還包括在執(zhí)行本說(shuō)明書中描述的方法時(shí)使用的數(shù)據(jù)結(jié)構(gòu)。
盡管按照本發(fā)明的系統(tǒng)的實(shí)施例是參照根據(jù)JVM技術(shù)規(guī)范執(zhí)行Java程序語(yǔ)言的計(jì)算機(jī)系統(tǒng)來(lái)描述的,但本發(fā)明同樣適合于由不同程序語(yǔ)言得到的其他計(jì)算機(jī)系統(tǒng)處理碼。具體地說(shuō),本發(fā)明可以用面向?qū)ο蟮暮头敲嫦驅(qū)ο蟮木幊滔到y(tǒng)來(lái)實(shí)施。另外,盡管所描述的按照本發(fā)明的實(shí)施例是在Java程序環(huán)境中工作的,但本領(lǐng)域中的技術(shù)人員能夠理解,本發(fā)明也可以用于其他的程序環(huán)境。
盡管本發(fā)明是結(jié)合典型實(shí)施例來(lái)描述的,但應(yīng)當(dāng)理解,還可以有各種修正,并且本申請(qǐng)同時(shí)覆蓋了這些變異形式。例如,在不偏離本發(fā)明的范圍的情況下,還可以采用多信道包的不同的標(biāo)簽或定義。本發(fā)明以權(quán)利要求書限定其保護(hù)范圍。
權(quán)利要求
1.由多個(gè)機(jī)器組成的分布式系統(tǒng)中傳送對(duì)象的方法,其特征在于,它包含從一機(jī)器傳送出一個(gè)多信道包,包括加入分布式系統(tǒng)的請(qǐng)求,并且包括一個(gè)與所述機(jī)器進(jìn)行通信的代碼的指示;接收一響應(yīng),包括對(duì)向系統(tǒng)進(jìn)行登記的實(shí)體的引用;以及向所述實(shí)體發(fā)送一條消息,向系統(tǒng)進(jìn)行登記。
2.如權(quán)利要求1所述的方法,其特征在于,所述傳送包括傳送對(duì)所述響應(yīng)的回應(yīng)。
3.由多個(gè)機(jī)器組成的分布式系統(tǒng)中處理對(duì)象的一種方法,其特征在于,它包含在一機(jī)器處接收多信道包,包括加入所述分布式系統(tǒng)的請(qǐng)求,并包括與所述機(jī)器進(jìn)行通信的代碼指示;采用所述代碼,來(lái)構(gòu)造一響應(yīng),包括對(duì)向系統(tǒng)進(jìn)行登記的實(shí)體的引用;以及將所述響應(yīng)傳送到所述機(jī)器。
4.如權(quán)利要求3所述的方法,其特征在于,所述接收包括接收對(duì)所述響應(yīng)的回應(yīng)。
5.由多個(gè)機(jī)器組成的分布式系統(tǒng)中傳送對(duì)象的方法,其特征在于,它包含從第一機(jī)器處傳送一第一對(duì)象,包括與所述第一機(jī)器進(jìn)行通信的代碼指示;在一第二機(jī)器處接收所述第一對(duì)象;采用所述代碼構(gòu)造與所述第一機(jī)器進(jìn)行通信的第二對(duì)象以及將所述第二對(duì)象從所述第二機(jī)器傳送到所述第一機(jī)器。
6.由多個(gè)機(jī)器組成的分布式系統(tǒng)中傳送對(duì)象的裝置,其特征在于,它包含從一機(jī)器發(fā)送多信道包的模塊,所述包包括加入所述分布式系統(tǒng)的請(qǐng)求,并且包括與所述機(jī)器進(jìn)行通信的代碼指示;接收一響應(yīng)的模塊,所述響應(yīng)包括對(duì)向所述系統(tǒng)進(jìn)行登記的實(shí)體的引用;以及向所述實(shí)體發(fā)送消息以向所述系統(tǒng)進(jìn)行登記的模塊。
7.如權(quán)利要求6所述的裝置,其特征在于,所述發(fā)送模塊包括發(fā)送對(duì)所述響應(yīng)的回應(yīng)的模塊。
8.處理由多個(gè)機(jī)器組成的分布式系統(tǒng)中的對(duì)象的裝置,其特征在于,它包含從一機(jī)器處接收多信道包的模塊,所述包包括加入所述分布式系統(tǒng)的請(qǐng)求,并且包括與所述機(jī)器進(jìn)行通信的代碼指示;用代碼構(gòu)造一響應(yīng)的模塊,所述響應(yīng)包括對(duì)向所述系統(tǒng)進(jìn)行登記的實(shí)體的引用;以及發(fā)送對(duì)所述機(jī)器的響應(yīng)的模塊。
9.如權(quán)利要求8所述的裝置,其特征在于,所述接收模塊包括接收對(duì)所述響應(yīng)的回應(yīng)的模塊。
10.一種在由多個(gè)機(jī)器組成的分布式系統(tǒng)中傳送對(duì)象的裝置,其特征在于,它包含從一第一機(jī)器處發(fā)送第一對(duì)象的模塊,所述對(duì)象包括與所述第一機(jī)器進(jìn)行通信的代碼指示;在第二機(jī)器處接收所述第一對(duì)象的模塊;采用所述代碼構(gòu)造第二對(duì)象的模塊,用來(lái)與所述第一機(jī)器進(jìn)行通信;以及將所述第二對(duì)象從所述第二機(jī)器發(fā)送到所述第一機(jī)器的模塊。
11.一種在由多個(gè)機(jī)器組成的分布式系統(tǒng)中傳送對(duì)象的系統(tǒng),其特征在于,它包含第一機(jī)器;多個(gè)第二機(jī)器;將所述第一機(jī)器與多個(gè)第二機(jī)器連接起來(lái)的網(wǎng)絡(luò);以及使所述第一機(jī)器加入所述網(wǎng)絡(luò)的裝置,所述裝置包括從所述第一機(jī)器發(fā)送多信道包的模塊,所述包包括加入所述分布式系統(tǒng)的請(qǐng)求,并且包括與所述第一機(jī)器進(jìn)行通信的代碼指示;接收響應(yīng)的模塊,所述響應(yīng)包括對(duì)向所述系統(tǒng)進(jìn)行登記的實(shí)體進(jìn)行引用的模塊;以及向所述實(shí)體發(fā)送一條消息用以向所述系統(tǒng)進(jìn)行登記的模塊。
12.如權(quán)利要求11所述的系統(tǒng),其特征在于,所述發(fā)送模塊包括發(fā)送對(duì)所述響應(yīng)的回應(yīng)的模塊。
13.一種由多個(gè)機(jī)器組成的分布式系統(tǒng)中傳送對(duì)象的系統(tǒng),其特征在于,它包含第一機(jī)器;多個(gè)第二機(jī)器;將所述第一機(jī)器與所述多個(gè)第二機(jī)器相連的網(wǎng)絡(luò);以及使所述第一機(jī)器加入所述網(wǎng)絡(luò)的裝置,所述裝置包括從所述第一機(jī)器接收多信道包的模塊,所述包包括加入所述分布式系統(tǒng)的請(qǐng)求,并且包括與所述第一機(jī)器進(jìn)行通信的代碼指示;采用所述代碼構(gòu)造一響應(yīng)的模塊,所述響應(yīng)包括對(duì)向所述系統(tǒng)進(jìn)行登記的一實(shí)體的引用;以及發(fā)送對(duì)所述第一機(jī)器的響應(yīng)的模塊。
14.如權(quán)利要求13的系統(tǒng),其特征在于,所述接收模塊包括接收對(duì)所述響應(yīng)的回應(yīng)的模塊
15.一種在由多個(gè)機(jī)器組成的分布式系統(tǒng)中傳送對(duì)象的系統(tǒng),其特征在于,它包含第一機(jī)器;第二機(jī)器;使所述第一機(jī)器與所述多個(gè)第二機(jī)器相連的網(wǎng)絡(luò);以及在所述第一機(jī)器和第二機(jī)器之間進(jìn)行通信的裝置,所述裝置包括從所述第一機(jī)器發(fā)送第一對(duì)象的模塊,所述第一對(duì)象包括與所述第一機(jī)器進(jìn)行通信的代碼指示;在所述第二機(jī)器處接收所述第一對(duì)象的模塊;使用所述代碼構(gòu)造第二對(duì)象的模塊,用來(lái)與所述第一機(jī)器進(jìn)行通信;以及將所述第二對(duì)象從所述第二機(jī)器發(fā)送到所述第一機(jī)器的模塊。
16.一種計(jì)算機(jī)程序產(chǎn)品,其特征在于,它包含含有對(duì)計(jì)算機(jī)系統(tǒng)進(jìn)行控制以執(zhí)行一種方法的指令的計(jì)算機(jī)可讀介質(zhì),所述方法包括從一機(jī)器發(fā)送一多信道包,所述包包括加入所述分布式系統(tǒng)的請(qǐng)求,并且包括與所述機(jī)器進(jìn)行通信的代碼指示;接收一響應(yīng),所述響應(yīng)包括對(duì)向所述系統(tǒng)進(jìn)行登記的實(shí)體的引用;以及向所述實(shí)體發(fā)送一條消息用以向所述系統(tǒng)進(jìn)行登記。
17.如權(quán)利要求16所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述發(fā)送包括傳送對(duì)所述響應(yīng)的回應(yīng)。
18.一種計(jì)算機(jī)程序產(chǎn)品,其特征在于,它包含含有對(duì)計(jì)算機(jī)系統(tǒng)進(jìn)行控制以執(zhí)行一種方法的指令的計(jì)算機(jī)可讀介質(zhì),所述方法包括從一機(jī)器接收一多信道包,所述包包括加入所述分布式系統(tǒng)的請(qǐng)求,并且包括與所述機(jī)器進(jìn)行通信的代碼指示;采用所述代碼,構(gòu)造一個(gè)響應(yīng),所述響應(yīng)包括用來(lái)對(duì)向所述系統(tǒng)登記的一實(shí)體的引用;以及傳送對(duì)所述機(jī)器的響應(yīng)。
19.如權(quán)利要求18所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述接收包括對(duì)所述響應(yīng)的回應(yīng)。
20.一種計(jì)算機(jī)程序產(chǎn)品,其特征在于,它包含含有對(duì)計(jì)算機(jī)系統(tǒng)進(jìn)行控制以執(zhí)行一種方法的指令的計(jì)算機(jī)可讀介質(zhì),所述方法包括從第一機(jī)器傳送一第一對(duì)象,它包括用來(lái)與所述第一機(jī)器進(jìn)行通信的代碼指示;在第二機(jī)器處接收所述第一對(duì)象;采用所述代碼構(gòu)造與所述第一機(jī)器進(jìn)行通信的第二對(duì)象;以及將所述第二對(duì)象從所述第二機(jī)器傳送到所述第一機(jī)器。
21.一種制造產(chǎn)品,它指定計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中存儲(chǔ)的表述,并能夠在分布式系統(tǒng)的機(jī)器之間進(jìn)行電子傳輸,其特征在于,所述制造產(chǎn)品包含要傳送到系統(tǒng)中的多個(gè)機(jī)器的多信道包的對(duì)象,所述包包括機(jī)器加入所述系統(tǒng)的請(qǐng)求,并且包括與所述機(jī)器進(jìn)行通信時(shí)使用的代碼指示。
22.一種制造產(chǎn)品,它指定計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中存儲(chǔ)的對(duì)象的表述,并能夠在分布式系統(tǒng)的機(jī)器之間進(jìn)行電子傳輸,其特征在于,所述制造產(chǎn)品包含要從所述系統(tǒng)中的第一機(jī)器傳送到第二機(jī)器的對(duì)象,所述對(duì)象包括與所述第一機(jī)器進(jìn)行通信時(shí)使用的代碼指示。
23.一種在由多個(gè)機(jī)器組成的分布式系統(tǒng)中傳送對(duì)象的裝置,其特征在于,它包含從一機(jī)器傳送一多信道包的裝置,所述包包括加入所述系統(tǒng)的請(qǐng)求,并且包括與所述機(jī)器進(jìn)行通信的代碼指示;接收一響應(yīng)的裝置,所述響應(yīng)包括用來(lái)對(duì)向所述系統(tǒng)進(jìn)行登記的一實(shí)體的引用;以及將一條消息傳送到所述實(shí)體用以向所述系統(tǒng)進(jìn)行登記的裝置。
全文摘要
下載用于與加入網(wǎng)絡(luò)的裝置進(jìn)行通信的代碼。當(dāng)裝置加入網(wǎng)絡(luò)時(shí),它發(fā)送一個(gè)多信道包,該多信道包包括與裝置進(jìn)行通信時(shí)使用的代碼引用。網(wǎng)絡(luò)中的接收機(jī)采用該引用下載該代碼,用來(lái)構(gòu)造與裝置進(jìn)行通信的對(duì)象,并且接收機(jī)引用網(wǎng)絡(luò)中的查詢服務(wù)作出響應(yīng)。采用來(lái)自接收機(jī)的引用,裝置向查詢服務(wù)進(jìn)行登記。
文檔編號(hào)G06F15/16GK1298505SQ99805364
公開日2001年6月6日 申請(qǐng)日期1999年2月16日 優(yōu)先權(quán)日1998年2月26日
發(fā)明者B·奧沙利文, R·謝夫勒, P·C·瓊斯, A·M·沃爾蕾斯, K·C·R·C·阿諾德, J·H·瓦爾多 申請(qǐng)人:太陽(yáng)微系統(tǒng)公司