專利名稱:分布系統(tǒng)中動態(tài)驗證信息的裝置和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及了一種在分布系統(tǒng)的機器之間傳送對象的系統(tǒng)和方法,尤其涉及分布系統(tǒng)中動態(tài)驗證信息。
背景技術(shù):
利用用于遠程終端訪問和文件傳輸?shù)膶S脜f(xié)議,經(jīng)常能恰當和有效地處理集中于點對點數(shù)據(jù)傳輸?shù)姆植汲绦颉_@種協(xié)議被專門處理成一個程序,但并不提供建立各種分布程序(如,分布操作系統(tǒng),電子郵件系統(tǒng),計算機會議系統(tǒng)等)的基礎(chǔ)。
雖然常規(guī)的傳輸服務(wù)可以用作建立分布程序的基礎(chǔ),但這些服務(wù)暴露了許多結(jié)構(gòu)上的問題,例如,不同機器中使用了不同數(shù)據(jù)類型,缺乏同步以及未提供簡單編程范例的規(guī)定。
分布系統(tǒng)通常包含由通訊網(wǎng)絡(luò)相互連接的多個不同型號的機器。每一個機器有他自己的內(nèi)部數(shù)據(jù)類型,自己地址的配置規(guī)則,和自己的操作系統(tǒng)。當建立分布系統(tǒng)時,這種結(jié)構(gòu)上的差異便產(chǎn)生了問題。其結(jié)果是,在對這種有差異性的分布系統(tǒng)的程序開發(fā)中,程序的開發(fā)者必須具有確保在不同的機器上能一致地處理和解釋信息的處理能力。
然而,注意到大量程序使用了過程之間的請求和應(yīng)答交互方式,可提供一種簡單方法,這里在啟動程序(即開始傳遞的程序)被阻直到返回應(yīng)答信號,在這期間程序是空閑的。這可以通過過程之間的一個程序調(diào)用機理來模擬。這種機理被稱之為遠程程序調(diào)用(RPC)。 RPC是一種提供在相同機器或不同機器上運行的兩個過程(如,程序、applet等)之間同步通訊的機理。在一個簡單的情況中,一個過程(如客戶程序)把信息傳送到另一個過程(如服務(wù)器程序)。在這個情況中,無論信息被傳送或接收都不需要同步。對客戶程序來說,它有可能發(fā)送消息,然后開始一項新的活動,對服務(wù)程序的環(huán)境來說,也可能緩沖進來的信息直到服務(wù)程序準備處理一個新消息。
然而,RPC對同步施加約束,因為它接近于模擬局部程序調(diào)用,局部程序調(diào)用要求以一個方向傳送參數(shù),中斷調(diào)用過程(即客戶程序)直到服務(wù)程序的調(diào)用過程結(jié)束,然后返回一個應(yīng)答。這樣,在調(diào)用周期中,RPC涉及到兩個消息傳遞,和兩個過程的同步。
RPC機理通常用局部程序調(diào)用范例在兩個處理部分中實現(xiàn),其中一個部分是在客戶方,而另一部分是在服務(wù)器方。以下參照
圖1說明這兩部分。
圖1是一個說明使用RPC機理的調(diào)用信息的流程圖。如圖1所示,客戶程序100發(fā)出了一個調(diào)用(步驟102)。接著RPC機理101對調(diào)用打包,作為調(diào)用包的自變量(步驟103),然后RPC機理101將其發(fā)送給服務(wù)器程序109(步驟104)。調(diào)用包還包含識別首先發(fā)出調(diào)用的的客戶程序100的信息。在調(diào)用包被發(fā)傳后(步驟104),RPC機理101進入等待狀態(tài),在這期間等待來自服務(wù)器程序109的應(yīng)答。
服務(wù)程序109的RPC108的機理(當服務(wù)器程序109是和客戶程序100處在相一平臺時,它的機理和RPC101的機理可以相同)是接收調(diào)用包(步驟110),拆閱來自調(diào)用包(步驟111)的調(diào)用的自變量,利用調(diào)用信息來識別所要調(diào)用的服務(wù)程序109,以及將調(diào)用自變量提供給服務(wù)程序109。
服務(wù)器程序接收調(diào)用(步驟112),通過調(diào)用適當程序來處理該調(diào)用(步驟115),并將應(yīng)答返回給RPC機理108(步驟116)。然后,RPC108將該應(yīng)答打包在應(yīng)答包中(步驟114)中并將其發(fā)送給客戶程序100(步驟113)。
接收到應(yīng)答包(步驟107)便觸發(fā)RPC機理101退出等待狀態(tài)并拆閱來自應(yīng)答包(步驟106)的應(yīng)答。然后RPC101提供應(yīng)答給客戶程序100以響應(yīng)調(diào)用。這是在局部程序調(diào)用后典型RPC機理模擬的流程。由于RPC機理使用局部程序調(diào)用,因此客戶程序100中斷調(diào)用直到接收到應(yīng)答。于是,在發(fā)出調(diào)用后,客戶程序100和它本身的處理不連續(xù);而是,它等待來自服務(wù)器程序109的應(yīng)答。
JavaTM編程語言是一種面向?qū)ο蟮某绦蛘Z言,利用字節(jié)代碼指令集通常被編譯為與平臺無關(guān)的格式,能在支持Java虛擬機器(JVM)的任何平臺上運行。這種語言在由James Gosling、Bill Joy和Guy Steele于1996年Addison-Wesley出版的“Java語言技術(shù)規(guī)范”一文中予以介紹,在此引用僅供參考。JVM在由Tim Lindholm,F(xiàn)rank Yellin于1996年Addison Wesley出版的“Java虛擬機器技術(shù)規(guī)范”一文中予以介紹,在此引用僅供參考。
由于JVM可以在任何類型的平臺上實現(xiàn),使用JVM實現(xiàn)分布程序顯著地減少了為不同結(jié)構(gòu)分布系統(tǒng)開發(fā)程序的困難。更進一步,JVM使用Java遠程方法調(diào)用系統(tǒng)(RMI)可以保證程序之間的通訊。在例如下面的文件“虛擬遠程方法調(diào)用的技術(shù)規(guī)范”(Sun Microsystems,Inc.1977)中解釋了RMI,在此引作參考,該文件也能通過統(tǒng)一資源定位器(URL)得到http// www.javasoft.com/products/jdk/1.1/docs/guide/rmi/spec/rmiTOC.doc.html.圖2說明了在包括機器201和202的面向?qū)ο蠓植枷到y(tǒng)200中采用JVM發(fā)送和接收方法調(diào)用的對象流程框圖。在系統(tǒng)200中,通過將對象轉(zhuǎn)換為字節(jié)流207(它包括發(fā)送對象類型和構(gòu)成對象數(shù)據(jù)的標識),機器201使用RMI205來應(yīng)答對象203的調(diào)用。當機器201應(yīng)答對象203調(diào)用時,在系統(tǒng)200中同一或其它機器上運行的過程可以連續(xù)工作,而不需等待它所要求的應(yīng)答。
機器202接收字節(jié)流207。使用RMI206,機器202自動將它轉(zhuǎn)換為對應(yīng)的對象204,它是對象203的復(fù)制并由在機器202執(zhí)行的程序使對象可以使用。機器202也可以先將對象轉(zhuǎn)換為字節(jié)流,然后再傳送到第三個機器,把這個對象發(fā)送到另一個機器,它也可以自動地將字節(jié)流轉(zhuǎn)換為對應(yīng)的目標。
機器之間的通訊也包含了數(shù)據(jù)或其它信息的驗證。這種驗證經(jīng)常需要驗證特定數(shù)據(jù)或其它信息的多次調(diào)用,這就導(dǎo)致了由于驗證而產(chǎn)生的大量調(diào)用和潛在費用的增加。因此,在分布系統(tǒng)中,僅僅需要數(shù)據(jù)或其它信息的有效驗證。
發(fā)明摘要本發(fā)明所提到的第一種方法發(fā)送一個驗證對象的請求。接收對請求的應(yīng)答,包括對應(yīng)于驗證對象的第一代碼的指示和于驗證相關(guān)的處理的第二代碼的指示。采用指示的第一代碼來構(gòu)成驗證對象并且使用指示的第二代碼來驗證信息。
本發(fā)明所提到的第二個方法發(fā)送一個驗證對象的請求。接收對請求的應(yīng)答,該應(yīng)答包括對應(yīng)于驗證對象的代碼的指示。采用所指示的代碼構(gòu)成驗證對象并基于構(gòu)成的對象來驗證信息。
本發(fā)明所提到的第三個方法在機器中接收一個驗證對象的請求。發(fā)送對請求的應(yīng)答,該應(yīng)答包括構(gòu)成驗證對象的第一代碼的指示和于驗證相關(guān)的處理的第二代碼的指示。
本發(fā)明所提到的第一個裝置發(fā)送一個驗證對象的請求。該裝置接收對該請求的應(yīng)答,包括對應(yīng)于驗證對象的第一代碼的指示和與驗證相關(guān)的處理的第二代碼的指示。裝置使用指示的第一代碼來構(gòu)成驗證對象和使用指示的第二代碼來驗證信息。
本發(fā)明所提到的第二個裝置發(fā)送一個驗證對象的請求和接收對該請求的應(yīng)答,應(yīng)答包括對應(yīng)于驗證對象的代碼的指示。裝置使用指示的代碼來構(gòu)成驗證對象和基于構(gòu)成的對象來驗證信息。
本發(fā)明所提到的第三個裝置在機器中接收用于驗證的對象的請求。裝置發(fā)送對請求的應(yīng)答,該應(yīng)答包括對應(yīng)于構(gòu)成驗證對象的第一代碼的指示和與驗證相關(guān)的處理的第二代碼的指示。
附圖簡述附圖構(gòu)成了本說明的一部分,與說明一起解釋本發(fā)明的優(yōu)點和原理。在圖中,圖1是說明使用RPC機理的調(diào)用信息的流程框圖。
圖2是說明面向?qū)ο蟮姆植枷到y(tǒng)中對象發(fā)送的框圖。
圖3是用于實施本發(fā)明的示例的分布處理系統(tǒng)圖。
圖4是示例的分布系統(tǒng)基礎(chǔ)結(jié)構(gòu)的圖。
圖5是在圖4所示的分布系統(tǒng)基礎(chǔ)結(jié)構(gòu)中的計算機圖。
圖6是用于策略對象的傳送的示例分布網(wǎng)絡(luò)的圖。
圖7是使用策略對象作數(shù)據(jù)驗證的過程的流程圖。
詳細描述概述本發(fā)明所提到的機器可以使用策略對象,也可稱為驗證對象,在分布系統(tǒng)中,當需要驗證時策略對象執(zhí)行處理。機器下載策略對象,它含有對控制數(shù)據(jù)或其它信息驗證的代碼的參考。機器利用參考值來獲得到代碼,以及局部驗證例如在項、數(shù)據(jù)項或?qū)ο螽斨袛?shù)據(jù)約束。驗證對象也可用于驗證其他類型信息。當數(shù)據(jù)或信息的具體規(guī)則變化時,可以更新策略對象,以提供下載的新規(guī)則的代碼的參考值。
本發(fā)明所提到的系統(tǒng)使用改型RPC或RMI,將自變量和返回值從一個過程傳給另一個過程,每個過程可以在不同機器上,可以有效地傳遞策略對象。在本文中的“機器”一詞可認為物理機器或虛擬機器。多個虛擬機器可以存在于同一物理機器中。RPC系統(tǒng)的例子包括分布計算環(huán)境(DCE)RPC和Microsoft分布公用模式(DCOM)RPC。
分布處理系統(tǒng)圖3說明了實現(xiàn)本發(fā)明的一個典型的分布處理系統(tǒng)300,在圖3中,分布處理系統(tǒng)300包括了三個獨立和異構(gòu)的平臺301,302和303,它們采用以網(wǎng)絡(luò)云319表示的網(wǎng)絡(luò)配置相連接。只要允許在平臺301,302和303之間的信息通訊,由網(wǎng)絡(luò)云319表示的網(wǎng)絡(luò)配置的組成和協(xié)議都不再是重要的。另外,只使用三個平臺也僅僅是為了說明,而不是限制實現(xiàn)本發(fā)明的使用平臺的具體數(shù)目。此外,本發(fā)明的實施例也沒有確定具體的網(wǎng)絡(luò)結(jié)構(gòu)。例如,用于實現(xiàn)本發(fā)明的另一個網(wǎng)絡(luò)結(jié)構(gòu)將使用一個平臺作為連接其他平臺的網(wǎng)絡(luò)控制器。
在分布處理系統(tǒng)300的實現(xiàn)中,平臺301,302和303分別包括處理器316,317和318和存儲器304,305和306。在每個存儲器304,305和306中都分別包括了應(yīng)用程序307,308和309,操作系統(tǒng)310,311和312以及RMI元件313,314和315。
應(yīng)用程序307,308和309可以是事先寫入的程序,和由實現(xiàn)本發(fā)明而提供的服務(wù)器根據(jù)操作而改寫的程序,或者利用本發(fā)明提供的服務(wù)器的優(yōu)點而專門寫入的程序。應(yīng)用程序307,308和309調(diào)用按照本發(fā)明執(zhí)行的操作。
操作系統(tǒng)310,311和312是典型標準操作系統(tǒng),他們分別對應(yīng)于處理器316,317和318。平臺301,302和303可以是不同結(jié)構(gòu)的。例如,平臺301是由Sun Microsystems有限公司制造的UltraSparc微處理器作為處理器316,并且使用Solaris操作系統(tǒng)310。平臺302是由Silicon Graphics公司生產(chǎn)的MIPS微處理器作為處理器317,并使用Unix操作系統(tǒng)311。最后,平臺303是由Intel公司生產(chǎn)的Pentium微處理器作為處理器318,并使用微軟視窗95操作系統(tǒng)312。本發(fā)明的實現(xiàn)并沒有限制以及也適合于相同結(jié)構(gòu)的平臺。
Sun,Sun Microsystems,,Solaris,Java和Sun Logo是Sun Microsystems有限公司在美國和其他國家的商標或注冊商標。UltraSparc和所有其他的SPARC商標在有許可證的條件下才可使用并且是SPARC國際有限公司在美國和其他國家的商標。具有SPARC商標的產(chǎn)品是基于Sun Mcrosystems有限公司開發(fā)的結(jié)構(gòu)。
存儲器304,305和306提供幾種功能,如作為輔助平臺的常用存儲器。另一個功能是在各自處理器316,314和315執(zhí)行期間,存儲應(yīng)用程序307,308和309、RIM元件313,314和315以及操作系統(tǒng)310,311和312。此外,存儲器的一部分304,305和306可以構(gòu)成用于網(wǎng)絡(luò)319中所有平臺310,302和303的共享存儲器。值得注意是連結(jié)JVM的RMI元件313,314和315的操作,沒有在簡化的示意圖中顯示出來。
分布系統(tǒng)的基礎(chǔ)結(jié)構(gòu)本發(fā)明所提到的系統(tǒng)和方法也可在一個具體的分布系統(tǒng)400中操作,它將參照圖4和圖5給予描述。這個分布系統(tǒng)400包括了硬件和軟件的各種部件,該系統(tǒng)(1)允許系統(tǒng)用戶共享在許多設(shè)備的網(wǎng)絡(luò)中的服務(wù)和資源;(2)提供帶有工具的編程器和提供允許開發(fā)完善的和保密的分布系統(tǒng)的編程模式;以及(3)簡化分布系統(tǒng)的管理任務(wù)。為了達到這些目標,分布系統(tǒng)400利用Java編程環(huán)境,允許代碼和數(shù)據(jù)兩者以固定方式在設(shè)備間移動。于是分布系統(tǒng)400是在Java編程環(huán)境的上層,而且發(fā)揮了這環(huán)境的特點,環(huán)境特點包括由環(huán)境提供的安全性和存儲類型。
在圖4和圖5的分布系統(tǒng)400中,不同的計算機和設(shè)備結(jié)合為用戶的單一系統(tǒng)。隨著單一系統(tǒng)出現(xiàn),分布系統(tǒng)400提供簡化的訪問,提供單一系統(tǒng)提供而沒有放棄個人計算機或工作站的靈活和個人化應(yīng)答的共享電源。分布系統(tǒng)400可以包含上千個設(shè)備,它們由分散在不同地理位置上、但在委托、管理和政策上基本一致的用戶操作。
在一個示例的分布系統(tǒng)內(nèi)由一個或更多的設(shè)備提供的各種服務(wù)的邏輯組合,每一個這樣的邏輯組被稱為Djinn?!胺?wù)”可以看作為能夠由用戶,程序,設(shè)備或另外服務(wù)器訪問的資源,數(shù)據(jù)或功能,并且它們是可計算的,與存儲有關(guān),與通信有關(guān),以及與其它用戶提供的訪問有關(guān)的。作為Djinn的一部分的服務(wù)例子包括設(shè)備,如打印機,顯示器和磁盤;軟件,如程序或應(yīng)用程序;信息,如數(shù)據(jù)庫和文件;和系統(tǒng)的用戶。
用戶和設(shè)備兩者可以連接Djinn。當與Djinn連接時,用戶或設(shè)備附加零或更多的服務(wù)給Djiin并且可在安全約束條件下訪問它包含的任何服務(wù)之一。這樣,為了共享訪問它的服務(wù),設(shè)備和用戶都連接到Djinn。Djiin的服務(wù)以Java編程環(huán)境的對象有計劃地出現(xiàn),對象也可以包括其它對象、用不同編程語言寫的軟件,或者硬件設(shè)備。服務(wù)具有一個被服務(wù)請求操作所定義的界面,而且服務(wù)的類型決定了組成服務(wù)的界面。
分布系統(tǒng)400包含了由網(wǎng)絡(luò)408互連的計算機402,計算機404和設(shè)備406。設(shè)備406可以是若干個設(shè)備中的任何一個,如打印機、傳真機、存儲設(shè)備、計算機或其它設(shè)備。網(wǎng)絡(luò)408可以是局域網(wǎng),寬域網(wǎng)或互聯(lián)網(wǎng)。雖然圖中僅有兩臺計算機和一個設(shè)備作為分布系統(tǒng)400的組成,但熟悉的該領(lǐng)域的人將會明白分布系統(tǒng)400可以包括更多計算機和設(shè)備。
為了說明分布系統(tǒng)400的一些軟件部件,圖5非常詳細地描述了計算機402。熟悉的該領(lǐng)域的人都會明白可以以相似的方法配置計算機404或設(shè)備406。計算機402包括存儲器502,第二存儲器件504,中央處理單元(CPU)506,輸入設(shè)備508和視頻顯示器510。存儲器502包括查找服務(wù)512,發(fā)現(xiàn)服務(wù)器514和Java運行時間系統(tǒng)516。Java運行時間系統(tǒng)516包括Java RMI系統(tǒng)518和JVM520。第二存儲器件504包括Java空間522。
正如以上所提到的,分布系統(tǒng)400是基于Java編程環(huán)境并且由此使用Java運行時間系統(tǒng)516。Java運行時間系統(tǒng)516包括Java API庫,它允許程序具有多種系統(tǒng)功能(包括主機操作系統(tǒng)的窗口能力和組網(wǎng)能力)以獨立平臺的方式在訪問的Java運行時間系統(tǒng)的上部運行。因為Java API庫提供了一個跨接所有操作系統(tǒng)的、也是Java運行時間系統(tǒng)的入口的單一常用的API,所以運行在Java運行時間系統(tǒng)的上部的程序可以獨立平臺的方式運行,而與主機平臺的操作系統(tǒng)或硬件配置無關(guān)。Java運行時間系統(tǒng)516可以作為Java軟件開發(fā)工具箱的一部分,從美國加州Mountain View的Sun Microsystems有限公司得到。
JVM520也便于平臺獨立性。JVM520起著一個簡單的計算機機器的作用,以字節(jié)代碼的形式接收來自程序的指令,通過動態(tài)將這些字節(jié)代碼轉(zhuǎn)換為可執(zhí)行的形式(如目標代碼)來翻譯這些字節(jié)代碼并執(zhí)行它們。RMI518有助于遠程方法調(diào)用,它通過允許在一個計算機或設(shè)備上執(zhí)行的對象來調(diào)用另一個計算機或設(shè)備的對象的方法。RIM和JVM兩著都作為Java軟件開發(fā)工具箱的一部分提供。
查找服務(wù)512限定對特定Djinn有效的服務(wù)。即,可以是多個Djinn,因此是分布系統(tǒng)中的多個的查找服務(wù)。查找服務(wù)512包含在Dujinn中每一個服務(wù)的對象并且每一個對象含有不同的有助于對應(yīng)服務(wù)訪問的方法。在題為“便于訪問查找服務(wù)的方法和系統(tǒng)”的美國專利申請中描述了查找服務(wù)512,該專利作為參考,已在前面引用。
當在被稱為引導(dǎo)和連接(或發(fā)現(xiàn))的過程期間一個新的設(shè)備被添加到分布系統(tǒng)400時,發(fā)現(xiàn)服務(wù)器514進行檢測,當檢測到這個新設(shè)備時,發(fā)現(xiàn)服務(wù)器把對查找服務(wù)512的參考傳送給新的設(shè)備,以致于新的設(shè)備用查找服務(wù)登記其服務(wù)并成為Djinn中的一個成員。在登記注冊后,新設(shè)備就成為Djinn的一個成員,因而,它可以訪問在查找服務(wù)512中所包含的所有服務(wù)。該引導(dǎo)和連接過程在題為“提供與分布系統(tǒng)中的設(shè)備通訊用的可下載代碼的裝置和方法”的美國專利申請中作了描述,該專利作為參考已在前面引用。
Java空間522是在分布系統(tǒng)400中由程序使用存儲對象的對象存儲庫。程序使用Java空間522來永久地存儲對象,以及使對象能被分布系統(tǒng)400中的其他設(shè)備訪問。Java空間在1997年11月17日提交申請的題為“采用多組合入口和入口匹配的數(shù)據(jù)庫系統(tǒng)”的美國專利中被描述,其申請?zhí)枮?8/971,529,已轉(zhuǎn)讓給一共同受讓人,作為參考,已在前面引用。熟悉該領(lǐng)域的人會發(fā)覺示例的分布系統(tǒng)400可以含有許多查找服務(wù),發(fā)現(xiàn)服務(wù)器和Java空間。
分布處理系統(tǒng)中的數(shù)據(jù)流程圖6是用于傳輸驗證的策略對象的面向?qū)ο蠓植季W(wǎng)絡(luò)600框圖。網(wǎng)絡(luò)600包括客戶機器601和服務(wù)器機器604,它可以參照圖3,4和5中所描述的一個或多個計算機或機器執(zhí)行的計算機或虛擬機器來實現(xiàn)??蛻魴C器601包括RMI602和相關(guān)對象603。服務(wù)器機器604包括RMI605和相關(guān)策略對象606。
客戶機器601利用RMI602來發(fā)送一個調(diào)用或請求609給請求策略對象606的RIM605。作為響應(yīng),RMI605在調(diào)用610中發(fā)送策略對象606或策略對象的參考值。RMI602和客戶機器601使用對象603來代表的策略對象,以驗證數(shù)據(jù)或其它信息。如果需要的話,RMI602可以訪問代碼服務(wù)器607以獲得由策略對象使用的代碼608。代碼服務(wù)器是訪問代碼和對象特定類型或種類的請求作出應(yīng)答的實體和過程以及返回那個對象的代碼。代碼服務(wù)器可以放置于在機器604中或其它的機器上。代碼也可以置于于代碼服務(wù)器相同的平臺或單獨的平臺。
對與對象有關(guān)的代碼,RMI602以URL的形式采用可訪問網(wǎng)絡(luò)位置可以訪問這樣的代碼。在技術(shù)和解釋上,URL是眾所周知,這里引用參考,例如,題為“Java課程互聯(lián)網(wǎng)際中面向?qū)ο蟮某绦颉?1996年Addison-Wesley出版由Mary Campione and Kathy Walrath編寫,其中第494至507頁)。
對象可以作為對象流來發(fā)送,正如從Sun Microsystems有限公司得到的“對象系列技術(shù)說明”或“RMI技術(shù)說明”兩者中所描述的那樣。流,包括輸入和輸出流,也在以下舉例的題為“Java課程互聯(lián)網(wǎng)際中面向?qū)ο蟮某绦颉?1996年Addison-Wesley出版由Mary Campione and Kathy Walrath編寫,其中第325至353頁)。
策略對象的傳送圖7是使用策略對象的驗證(也稱為驗證對象)的過程700的流程圖。機器首先決定是否請求驗證(步驟701)。如果是,它向服務(wù)器(步驟702)請求一個策略對象和接收包括用于驗證數(shù)據(jù)或其它信息的代碼的參考值的策略對象(步驟703)。使用該參考值,它下載用于驗證的代碼(步驟704)。代碼的下載出現(xiàn)于題為“分布系統(tǒng)中的對象延遲重構(gòu)和遠程加載”的美國專利(申請?zhí)?8/950,756,1997年10月15日提交申請)的描述中,已作為參考被引用。
接著機器獲得數(shù)據(jù)或其它信息(步驟705)。它決定數(shù)據(jù)或信息是否是有效使用策略對象(步驟706),它可以通過局部過程出現(xiàn)。驗證是基于具體預(yù)定義的標準。如果數(shù)據(jù)或者信息是無效的,它獲得新的數(shù)據(jù)或信息;例如,它提供一個用戶請求數(shù)據(jù)再進入(步驟707)的信息。然后機器決定是否有更多的數(shù)據(jù)或信息要處理(步驟708)。如果是,它返回到步驟705去接收和驗證新增的數(shù)據(jù)。不然,它指示使用驗證的數(shù)據(jù)和其它信息(步驟709);例如,它可以提交數(shù)據(jù)給服務(wù)器。在這些步驟期間,服務(wù)器可以送出一個指示代碼,如一個代碼的參考或代碼本身,來更新關(guān)于驗證的策略或規(guī)則。因此,策略或規(guī)則可以自動的更新使客戶機器接收和保持適用于當前策略或規(guī)則的代碼或者代碼的參考。
實現(xiàn)圖7所示步驟的機器可以包括執(zhí)行圖3、4、5和6圖中所示功能的計算機處理器。它們可以包括引起計算機去執(zhí)行以上功能的模式或程序配置。它們也可以包括存放于存儲器中的計算機程序產(chǎn)品。計算機程序產(chǎn)品可以包括計算機可讀媒體或編入為了使機器完成上述技術(shù)說明功能的計算機可讀代碼的媒體。媒體可以包括在載波包含的并表示指令順序的計算機數(shù)據(jù)信號,當處理器執(zhí)行這些信號時,通過本技術(shù)說明描述方法的執(zhí)行,使處理器在一個絕對地址上安全地對周圍設(shè)備選址。媒體還包括執(zhí)行本技術(shù)說明描述方法的數(shù)據(jù)結(jié)構(gòu)。另外,圖7所示的過程可以通過使用智能代理地址發(fā)生,在與本發(fā)明同時提交的題為“分布系統(tǒng)中執(zhí)行與遠程過程調(diào)用有關(guān)過程的可下載智能代理地址”的美國專利申請中作了描述,專利已轉(zhuǎn)讓給一個共同受讓人,并作為參考在此引用。
策略對象的舉例以下提供了用本發(fā)明的策略對象來驗證消費報告中數(shù)據(jù)的實例。表1提供了采用Java程序語言編寫的遠程策略界面的實例,定義對于這個消費報告例子客戶能夠在服務(wù)器上調(diào)用的方法。
表1Public interface ExpenseServer extends Remote{Policy getPolicy()throws RemoteException;Void submitReport(ExpenseReport report)throws RemoteException,InvalidreportException;}表1所示的界面提供了兩種方法。一種獲得策略(“getPolicy”)方法返回實現(xiàn)界面的對象。提交報告(“submitReport”)方法提交一個完成的消費請求,如果由于各種原因報告產(chǎn)生變形,發(fā)出(產(chǎn)生)一個例外。策略界面申報一種如表2所示的方法,通知用戶是否可接收添加消費報告的入口。
表2Public interface Policy{
Void checkValid (ExpenseEntry entry)Throws Policy ViolationException}如果消費報告入口是有效的,就意味著它和當前的策略相匹配,方法也就正常返回。不然它發(fā)出一個說明錯誤的例外。典型的策略界面可以是局部(不是遠程)并且這可以由客戶的局部對象來實現(xiàn)。表3說明了客戶怎樣操作這個實例。
表3Policy curPolicy=server.getPolicy()start a new expense reportshow the GUI to the userwhile(user keeps adding entries){try{cruPolicy.checkValid(entry);∥throws exception if not OKadd the entry to the expense report}catch(policyViolationException e){show the error to the user}}server.submitReport(report)當一個用戶請求開始一個新的消費報告的客戶軟件時,用戶向請求服務(wù)器請求“server.getPolicy”方法以返回一個編入當前消費策略的對象。每一個加入的入口首先被提交給要批準的策略對象。如果策略對象報告沒有錯誤,入口被加到報告;否則錯誤就顯示給有修正能力的用戶。當用戶完成入口添加到報告時,入口報告被提交。
表4說明服務(wù)器如何操作這個實例。
表4import java.rmi.*;import java.rmi.server.*;class ExpenseServerImplextends UnicastRemoteObjectimplements ExpenseServer{ExpenseServerImpl () thows RemoteException {//…set up server state...
}public Policy getpolicy ()return new TodaysPolicy (O;}public void submitReport (ExpenseReport report) {//…write the report into the db…}}類型“UnicastRemoteObject”定義了對應(yīng)這個服務(wù)器的遠程對象的種類,在這個實例中一個單個服務(wù)器不同于復(fù)制的服務(wù)器。Java編程語言類“ExpenseServerImpl”實現(xiàn)了遠程界面“ExpenseServer”的方法。在遠程主機的客戶能使用RMI對“ExpenseServerImpl”對象發(fā)送信息。
表5提供了一個實現(xiàn)這個消費報告實例策略的實例。
表5public class todaysPolicy implements Policy {Public void checkValid (ExpenseEntry entry)throws PolicyViolationexception{if(entry. dollars ()<20 {return;// no receipt required} else if (entry.haveReceipt()==false {throw new PolicyViolationException (“receipt required”);}}
}表5定義的策略是檢查確保沒有任何收據(jù)是少于20美元的入口。如果明天策略變化,那么20美元以下的菜單就從“請求收受”策略中消除,表6提供了新的策略的實現(xiàn)。
表6public class TomorrowsPolicyimplements Policy{public void checkValid(ExpenseEntry entry)throws PolicyViolationException{if(entry.isMeal()&&entry.dollars()<20){return;// no receipt required}else if(entry.haveReceipt()==false){throw new PolicyViolationException(“receipt required”);}}}表6定義的新策略(“TomorrowsPolicy”)可以安裝到服務(wù)器上,然后服務(wù)器可以用新策略對象來替代當前(”TodaysPolicy”)對象。當客戶請求服務(wù)器要得到策略的方法時,在客戶上的RMI驗證返回的對象是一種已知的型號。第一次每一個客戶與一個“TomorrwsPolicy”對象相遇,客戶的RMI在“getPoliicy”程序返回之前下載用于策略的實現(xiàn),并且客戶開始實施新策略。這個消費報告范例僅僅是使用要驗證策略對象實例之一,并且可能有許多其他的策略對象的應(yīng)用。
雖然本發(fā)明所提及的系統(tǒng)實施例說明的描述是參考了在JVM技術(shù)說明中Java編程語言實現(xiàn)的計算機系統(tǒng),但本發(fā)明同樣可應(yīng)用到采用不同編程語言處理代碼的其它計算機系統(tǒng)。特別是,本發(fā)明可以采用面向?qū)ο蠛头敲嫦驅(qū)ο蟮膬煞N編程系統(tǒng)來實現(xiàn)。另外,雖然本發(fā)明所提到的實施例是作為在Java編程環(huán)境中操作來描述,但熟悉本領(lǐng)域的人也可以在本發(fā)明中使用其它編程環(huán)境。
當本發(fā)明結(jié)合一個典型的實施例來描述時,可以意識到對熟悉本領(lǐng)域的人來說,許多種改進將是顯而易見的,因此本申請包涵了任何改變或變化。例如,對策略對象使用不同的標注或定義沒有超越本發(fā)明的核心范圍。因此,本發(fā)明受到所附的權(quán)利要求及其等同內(nèi)容的限制。
權(quán)利要求
1.一種在由多個機器組成的分布系統(tǒng)中發(fā)送對象的方法,其特征在于所述方法包括發(fā)送驗證對象的請求;接收對該請求的應(yīng)答,應(yīng)答包括對應(yīng)于驗證對象的第一代碼的指示和與驗證有關(guān)的處理的第二代碼的指示;利用所指示的第一代碼構(gòu)成驗證對象;及利用所指示的第二代碼來驗證信息。
2.如權(quán)利要求1所述的方法,其特征在于驗證包括局部執(zhí)行對信息進行驗證的處理。
3.如權(quán)利要求1所述的方法,其特征在于接收包括接收與驗證相關(guān)的更新處理的第三代碼的指示。
4.一種由多個機器組成分布系統(tǒng)中發(fā)送對象的方法,其特征在于所述方法包括發(fā)送驗證對象的請求;接收對該請求的應(yīng)答,應(yīng)答包括對應(yīng)于驗證對象的代碼的指示;利用所指示的代碼構(gòu)成驗證對象;及基于所構(gòu)成的對象來驗證信息。
5.一種在多個機器組成的分布系統(tǒng)中發(fā)送對象的方法,其特征在于所述方法包括由機器接收用于驗證的對象的請求;及發(fā)送對該請求的應(yīng)答,應(yīng)答包括構(gòu)成驗證對象的第一代碼的指示和與驗證有關(guān)的處理的第二代碼的指示。
6.一種在多個機器組成分布系統(tǒng)中發(fā)送對象的裝置,其特征在于所述裝置包括為發(fā)送驗證對象的請求而配置的模塊;為接收對該請求的應(yīng)答而配置的模塊,應(yīng)答包括對應(yīng)于驗證對象的第一代碼的指示和與驗證有關(guān)的處理的第二代碼指示;為利用所指示第一代碼構(gòu)成驗證對象而配置的模塊;為利用所指示第二代碼驗證信息而配置的模塊。
7.如權(quán)利要求6所述的裝置,其特征在于驗證模塊包括為局部執(zhí)行對信息進行驗證的處理而配置的模塊。
8.如權(quán)利要求6所述的裝置,其特征在于接收模塊包括為接收與驗證相關(guān)的更新處理的第三代碼的指示而配置的模塊。
9.一種由多個機器組成分布系統(tǒng)中發(fā)送對象的裝置,其特征在于所述裝置包括為發(fā)送驗證對象的請求而配置的模塊;為接收對該請求的應(yīng)答而配置的模塊,應(yīng)答包括對應(yīng)于驗證對象的代碼的指示;為利用所指示代碼構(gòu)成驗證對象而配置的裝置;及為基于所構(gòu)成對象驗證信息而配置的裝置。
10.一種在多個機器組成的分布系統(tǒng)中處理對象的裝置,其特征在于所述裝置包括為在機器上接收用于驗證的對象的請求而配置的模塊;及為發(fā)送對該請求的應(yīng)答而配置的模塊,應(yīng)答包括構(gòu)成驗證對象的第一代碼的指示和與驗證有關(guān)的處理的第二代碼的指示。
11.一種由多個機器組成的分布系統(tǒng)中發(fā)送對象的系統(tǒng),其特征在于所述系統(tǒng)包括第一個機器;第二個機器;連接第一機器與第二機器的網(wǎng)絡(luò);及接收對象的裝置,該裝置包括為發(fā)送驗證對象的請求而配置的模塊;為接收對該請求的應(yīng)答而配置的模塊,應(yīng)答包括對應(yīng)于驗證對象的第一代碼的指示和與驗證有關(guān)的處理的第二代碼的指示;為利用所指示第一代碼構(gòu)成驗證對象而配置的模塊;及為利用所指示第二代碼來驗證信息而配置的模塊。
12.如權(quán)利要求11中所述的系統(tǒng),其特征在于驗證模塊包含為驗證信息局部執(zhí)行處理而配置的模塊。
13.如權(quán)利要求11中所述的系統(tǒng),其特征在于接收模塊包括為接收與驗證有關(guān)的更新處理的第三代碼的指示而配置的模塊。
14.一種由多個機器組成分布系統(tǒng)中發(fā)送對象的系統(tǒng),其特征在于所述系統(tǒng)包括第一個機器;第二個機器;連接第一機器與第二機器的網(wǎng)絡(luò);及接收對象的裝置,該裝置包括為發(fā)送驗證對象的請求而配置的模塊;為接收對該請求的應(yīng)答而配置的模塊,應(yīng)答包括對應(yīng)于驗證對象的代碼的指示;為利用指示的代碼構(gòu)成驗證對象而配置的模塊;及基于構(gòu)造的對象驗證信息而配置的模塊。
15.一種由多個機器組成的分布系統(tǒng)中發(fā)送對象的系統(tǒng),其特征在于所述系統(tǒng)包括第一個機器;第二個機器;連接第一機器與第二機器的網(wǎng)絡(luò);及發(fā)送對象的裝置,該裝置包括為在機器上接收用于驗證的對象的請求而配置的模塊;及為發(fā)送對該請求的應(yīng)答而配置的模塊,應(yīng)答包括構(gòu)成驗證對象的第一代碼指示和與驗證有關(guān)處理的第二代碼指示。
16.一種計算機程序產(chǎn)品,其特征在于它包括計算機可讀的媒體,含有控制計算機系統(tǒng)執(zhí)行一方法的指令,該方法包括發(fā)送驗證對象的請求;接收對該請求的應(yīng)答,應(yīng)答包括對應(yīng)于驗證對象的第一代碼指示和與驗證有關(guān)處理的第二代碼指示。利用指示的第一代碼構(gòu)成驗證對象;及利用指示的第二代碼來驗證信息。
17.如權(quán)利要求16中所述的計算機程序產(chǎn)品,其特征在于驗證包括局部執(zhí)行驗證信息的處理。
18.如權(quán)利要求16中所述的計算機程序產(chǎn)品,其特征在于接收包括接收與驗證有關(guān)的更新處理的第三代碼的指示。
19.計算機程序產(chǎn)品,其特征在于所述產(chǎn)品包括計算機可讀的媒體,含有控制計算機系統(tǒng)執(zhí)行一方法的指令,該方法包括發(fā)送驗證對象的請求;接收對該請求的應(yīng)答,應(yīng)答包括對應(yīng)于驗證對象的代碼的指示;利用指示的代碼構(gòu)成驗證對象;及基于構(gòu)成的對象來驗證信息。
20.一種計算機程序產(chǎn)品,其特征在于它包括計算機可讀的媒體,含有控制計算機系統(tǒng)執(zhí)行一方法的指令,該方法包括在機器上接收用于驗證的對象的請求;及發(fā)送對該請求的應(yīng)答,應(yīng)答包括構(gòu)造驗證對象的第一代碼指示和與驗證有關(guān)的處理的第二代碼的指示。
21.一種規(guī)定對象的表示的制造物品,該對象存儲在計算機可讀存儲媒體中并能在分布系統(tǒng)的機器之間進行電子傳輸,該制造物品包括響應(yīng)于一請求從第一個機器被發(fā)送到第二個機器的對象驗證,該驗證對象包括執(zhí)行信息驗證的處理的代碼的指示。
22.一種在由多個機器組成的分布系統(tǒng)中發(fā)送對象的裝置,其特征在于它包括發(fā)送驗證對象的請求的裝置;接收對該請求的應(yīng)答的裝置,應(yīng)答包括對應(yīng)于驗證對象的第一代碼指示和與驗證有關(guān)的處理的第二代碼指示。利用指示的第一代碼來構(gòu)成驗證對象的裝置;及利用指示的第二代碼來驗證信息的裝置。
全文摘要
使用策略對象作分布系統(tǒng)中的驗證。機器下載一策略對象,含有對控制數(shù)據(jù)驗證的代碼的參考值。機器使用參考值獲得代碼并局部驗證數(shù)據(jù)或其它信息。當數(shù)據(jù)的具體規(guī)則改變時,可以更新該策略對象,在下載時以提供新規(guī)則的代碼的參考值。
文檔編號G06F9/46GK1292115SQ99803342
公開日2001年4月18日 申請日期1999年2月16日 優(yōu)先權(quán)日1998年2月26日
發(fā)明者K·C·R·C·阿諾德, A·M·沃爾蕾斯, J·H·瓦爾多 申請人:太陽微系統(tǒng)公司