專利名稱:分布式軟件開發(fā)環(huán)境的制作方法
本申請(qǐng)要求申請(qǐng)?zhí)枮?0/131,506的臨時(shí)申請(qǐng)的優(yōu)先權(quán),該臨時(shí)申請(qǐng)題為“分布式軟件開發(fā)環(huán)境”,其整體內(nèi)容在此通過(guò)引用而加入到本申請(qǐng)中。
在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,對(duì)象一般被定義為數(shù)據(jù)和對(duì)這些數(shù)據(jù)進(jìn)行操作的組合。一個(gè)應(yīng)用網(wǎng)絡(luò)通常是由對(duì)象(程序)構(gòu)成的結(jié)合體,它們通過(guò)通用的接口結(jié)合在一起以完成一個(gè)指定的任務(wù)。面向?qū)ο蟮能浖到y(tǒng)一般提供一個(gè)結(jié)構(gòu)規(guī)范,歸結(jié)為一種對(duì)象模式,使開發(fā)的對(duì)象能在一個(gè)應(yīng)用程序中協(xié)調(diào)工作。
稱做對(duì)象管理組織(“OMG”)的產(chǎn)業(yè)聯(lián)盟在公共對(duì)象請(qǐng)求代理體系結(jié)構(gòu)(Common Object Reguest Broker Architecture)(“CORBA”)規(guī)范下制定了一個(gè)面向?qū)ο蟮南到y(tǒng)的標(biāo)準(zhǔn)。CORBA規(guī)范定義了針對(duì)處于一種分布式客戶一服務(wù)器環(huán)境下的對(duì)象所構(gòu)成的分布式計(jì)算環(huán)境。遵循CORBA規(guī)范的對(duì)象代理(broker)提供了一種機(jī)制,通過(guò)它,對(duì)象或其他應(yīng)用可以向系統(tǒng)管理下的其他對(duì)象發(fā)出請(qǐng)求并得到應(yīng)答。CORBA方法根據(jù)需要在分布式系統(tǒng)的不同部分利用了多種對(duì)象代理,以適應(yīng)系統(tǒng)資源的增長(zhǎng)或重新配置。這些對(duì)象代理的任何一個(gè)都能訪問相應(yīng)的運(yùn)行和接口庫(kù)的信息。對(duì)象的申請(qǐng)對(duì)用戶是透明的,這種透明性在于一個(gè)對(duì)象的操作可以在一組計(jì)算設(shè)備上執(zhí)行,調(diào)用對(duì)象操作的實(shí)體不必知道對(duì)象操作在哪里駐留和執(zhí)行。從而,通過(guò)使用CORBA方法,單獨(dú)的用戶不必再考慮特定程序是在哪里駐留和執(zhí)行的,因?yàn)檫@些細(xì)節(jié)由基于CORBA的系統(tǒng)來(lái)管理。進(jìn)一步說(shuō),通過(guò)定義一個(gè)固定的操作集,CORBA方法使來(lái)自不同經(jīng)銷商的對(duì)象代理能夠相互通訊,使系統(tǒng)具有更普遍的兼容性。
通過(guò)改變各自的屬性庫(kù)的信息,新對(duì)象可以簡(jiǎn)單地加入基于CORBA的系統(tǒng)中,因?yàn)榕c對(duì)象交流和執(zhí)行對(duì)象的所有信息都包含在接口和執(zhí)行庫(kù)中。這樣,基于CORBA的系統(tǒng)可以很容易地升級(jí)以適應(yīng)新的或修改過(guò)的對(duì)象。因?yàn)槊嫦驅(qū)ο蟮姆椒ㄔ试S一個(gè)對(duì)象操作的實(shí)際執(zhí)行對(duì)用戶透明,現(xiàn)存的應(yīng)用只需修改它們的接口以在一個(gè)基于CORBA的系統(tǒng)中工作。這樣,現(xiàn)有的應(yīng)用程序就不需要完全重寫了。
專利號(hào)為5,838,970的美國(guó)專利介紹CORBA有幾個(gè)限制。第一,CORBA不提供在一個(gè)對(duì)象被創(chuàng)建后移動(dòng)這個(gè)對(duì)象的機(jī)制。第二,CORBA不構(gòu)造為能夠通過(guò)網(wǎng)絡(luò)訪問的個(gè)人用戶信息,或許可系統(tǒng)資源在用戶級(jí)或?qū)ο蠹?jí)被管理起來(lái)。CORBA不支持一個(gè)給定對(duì)象類型的多個(gè)版本的使用。CORBA也不能對(duì)用戶高頻使用的資源的復(fù)制提供有效的方法。970號(hào)專利描述了一個(gè)面向?qū)ο蟮挠?jì)算機(jī)環(huán)境,其中處理或傳送信息的方式可以在操作過(guò)程中被改變。環(huán)境是通過(guò)一些屬性庫(kù)來(lái)管理的,它們?cè)趯?duì)象的生命周期內(nèi)可以被訪問,還有啟動(dòng)對(duì)象操作所需的信息。屬性庫(kù)可以被賦予不同的優(yōu)先級(jí)以控制存儲(chǔ)信息的分布。通過(guò)利用檢索自可改變的屬性庫(kù)的信息去影響目標(biāo)的操作,基于信息處理的計(jì)算機(jī)可以按照需要擴(kuò)展。通過(guò)改變應(yīng)用屬性庫(kù)的內(nèi)容也可以實(shí)現(xiàn)軟件升級(jí)。CORBA還有一些缺點(diǎn),就是不能提供選擇和決定共享變量,不能選擇兼容的應(yīng)用系統(tǒng)和對(duì)可用的CORBA組件做動(dòng)態(tài)重配置,并且CORBA只支持單一接口。
CORBA工具還處在它的幼年階段,因?yàn)樗笠郧坝懻撨^(guò)的那樣不能從事系統(tǒng)管理(對(duì)于大型的面向網(wǎng)絡(luò)的應(yīng)用)。另外,眾所周知,CORBA在設(shè)計(jì)過(guò)程中沒有考慮到實(shí)施系統(tǒng)(管理網(wǎng)絡(luò)和支持網(wǎng)絡(luò)提供者的操作和服務(wù))對(duì)于對(duì)象和交互型的影響。例如,CORBA阻止信息的發(fā)送者直到接收方接收并予以確認(rèn)。這使分布式應(yīng)用的并發(fā)操作更加繁忙。另外在發(fā)送者與接收者之間會(huì)發(fā)生鎖死。還有,CORBA不支持多循環(huán)事務(wù)而不支持對(duì)象和接口的版本變化。此外,XORBA不解決與異步通信相關(guān)的緩沖損耗。這樣,程序員不得不處理作為與共享接口相關(guān)的結(jié)構(gòu)和協(xié)議的一部分的緩沖區(qū)的可能損耗,從而增加了接口的復(fù)雜性。而且,這使使用CORBA IDL的異步的CORBA組件的接口描述非常復(fù)雜。
在一個(gè)軟件應(yīng)用中安裝新版本的對(duì)象或接口的常規(guī)方式是關(guān)閉這個(gè)應(yīng)用再安裝新的版本。當(dāng)這個(gè)應(yīng)用拒絕這個(gè)軟件的用戶時(shí),這種模式可能導(dǎo)致一個(gè)難以可接受的延遲。人工管理者可以檢查版本以確定他們是否兼容。對(duì)象間的不兼容可能由至少一個(gè)對(duì)象接口的修正引起,從而使對(duì)象不兼容。人工管理者可以手工找出兼容的系統(tǒng)并選擇運(yùn)行那一個(gè)。這種手工技術(shù)已經(jīng)被Rakesh Agraway,和H.V.Jagadish在1989年關(guān)于超大型數(shù)據(jù)庫(kù)的國(guó)際會(huì)議第十五屆會(huì)議會(huì)刊中的文章“On Correctly Configuring Versioned Objects(關(guān)于正確地配置版本化的對(duì)象)”中作了描述??墒?,如果一個(gè)對(duì)象有很多版本,人工管理者是很難確定兼容的對(duì)象的。
常規(guī)的自動(dòng)技術(shù)用一種基于規(guī)則的方法來(lái)管理兼容的應(yīng)用系統(tǒng),例如,參看R.H.Katz,和E.Chang在1987年關(guān)于超大型數(shù)據(jù)庫(kù)的國(guó)際會(huì)議第十3屆會(huì)議會(huì)刊中的文章“Managing Change in a Comp-AidedDesign Database(在計(jì)算機(jī)輔助設(shè)計(jì)數(shù)據(jù)庫(kù)中的管理變化)”中作了介紹。然而,在大的網(wǎng)絡(luò)應(yīng)用中,不同接口的結(jié)構(gòu)和協(xié)議用規(guī)則來(lái)表達(dá)是復(fù)雜和困難的。從而,就需要提供一種面向?qū)ο蟮能浖_發(fā)環(huán)境,在應(yīng)用執(zhí)行過(guò)程中,能支持動(dòng)態(tài)地更新應(yīng)用程序的版本,動(dòng)態(tài)地維護(hù)兼容的系統(tǒng)和進(jìn)行動(dòng)態(tài)重配置,從而避免關(guān)機(jī),方便接口的改進(jìn)。
對(duì)象的每個(gè)接口有一個(gè)唯一的全局標(biāo)識(shí)值。兼容接口的確認(rèn)是通過(guò)在一個(gè)管理結(jié)構(gòu)內(nèi)登記接口的全局標(biāo)識(shí)和接口的版本實(shí)現(xiàn)的。更適宜的是,該管理結(jié)構(gòu)用一種增量方式賦予對(duì)象和接口版本號(hào)。該管理結(jié)構(gòu)可以用一種分布式的選擇方式為所有唯一的兼容接口應(yīng)用系統(tǒng)生成一個(gè)局部順序。
修改的CORBA IDL結(jié)構(gòu)通過(guò)實(shí)現(xiàn)語(yǔ)義的精確性和與對(duì)象協(xié)調(diào)問題無(wú)關(guān)的重要的對(duì)象接口根本性來(lái)從根本上改變?cè)O(shè)計(jì)過(guò)程。這個(gè)環(huán)境簡(jiǎn)化了復(fù)雜的非獨(dú)立/獨(dú)立的面向網(wǎng)絡(luò)應(yīng)用的事物處理過(guò)程的描述。其支持人工管理的能力,如讀/寫對(duì)象的狀態(tài)的能力、取得/設(shè)置對(duì)象狀態(tài)的能力、從外部取得/設(shè)置時(shí)鐘的狀態(tài)而不需要其組件參與的能力、利用從修改過(guò)的CORBA IDL說(shuō)明中獲得類型資料將原始數(shù)據(jù)轉(zhuǎn)換為有用數(shù)據(jù),然后利用修改過(guò)的CORBA IDL結(jié)構(gòu)將有意義的說(shuō)明放入事物處理中的能力,使得對(duì)應(yīng)用程序的外部觀察與控制容易了。
本環(huán)境可以被用來(lái)建立一個(gè)應(yīng)用網(wǎng)絡(luò)和對(duì)應(yīng)用網(wǎng)絡(luò)做一致性的和透明的動(dòng)態(tài)修改。管理結(jié)構(gòu)可以包括與應(yīng)用對(duì)象相關(guān)的管理對(duì)象。管理對(duì)象將其信息傳送給人工管理者對(duì)象。
因此,人工管理者對(duì)象可以在建立和重配置應(yīng)用網(wǎng)絡(luò)時(shí)控制對(duì)象的運(yùn)轉(zhuǎn)而不需要對(duì)象的參與。在設(shè)計(jì)階段時(shí),管理結(jié)構(gòu)也可以被軟件開發(fā)者用來(lái)進(jìn)行無(wú)范圍的協(xié)商。
本發(fā)明將參考下列附圖得到全面說(shuō)明。
附圖的說(shuō)明
圖1是一個(gè)根據(jù)本發(fā)明構(gòu)思的分布式軟件開發(fā)環(huán)境的結(jié)構(gòu)圖。
圖2A是一個(gè)多對(duì)象的分布式網(wǎng)絡(luò)的示意圖。
圖2B是一個(gè)處于二相位事物處理的多對(duì)象的分布式網(wǎng)絡(luò)的示意圖。
圖3A是一個(gè)交互網(wǎng)絡(luò)和相位的示意圖。
圖3B是在一個(gè)交互時(shí)鐘不同相位的步驟示意圖。
圖4是一個(gè)分布的管理網(wǎng)絡(luò)的示意圖。
圖5是一個(gè)生命周期各階段的示意圖。
圖6是一個(gè)網(wǎng)絡(luò)應(yīng)用的示意圖。
圖7是一個(gè)無(wú)范圍協(xié)商的方法的示意圖。
圖8是一個(gè)協(xié)商網(wǎng)絡(luò)的示意圖。
圖9是一個(gè)執(zhí)行一個(gè)網(wǎng)絡(luò)應(yīng)用的步驟的方框圖。
圖10是一個(gè)確定兼容性應(yīng)用軟件的方法的流程圖。
圖11A是一個(gè)發(fā)展的網(wǎng)絡(luò)應(yīng)用的示意圖。
圖11B是一個(gè)由于圖11A的發(fā)展導(dǎo)致的更多兼容應(yīng)用的示意圖。
圖12A是一個(gè)由人工管理者設(shè)立的一致和透明的網(wǎng)絡(luò)應(yīng)用的示意圖。
圖12B是一個(gè)使達(dá)到靜止的所用的中斷最小化的示意圖。
圖13是一個(gè)設(shè)立一致和透明的應(yīng)用網(wǎng)絡(luò)的方法的流程圖。
圖14是一個(gè)如圖11所示的網(wǎng)絡(luò)應(yīng)用為更換對(duì)象而重配置時(shí)的示意圖。
圖15是一個(gè)如圖11所示的網(wǎng)絡(luò)應(yīng)用為實(shí)現(xiàn)新版本的接口而重配置時(shí)的示意圖。
詳細(xì)說(shuō)明現(xiàn)在將更詳細(xì)地對(duì)本發(fā)明的一個(gè)優(yōu)選的實(shí)施例進(jìn)行參照說(shuō)明,它的一個(gè)例子示于附圖中。無(wú)論如何,在可能的情況下,同樣的參照數(shù)據(jù)在相同或部分相同的情況下將貫穿始終的用于圖形和說(shuō)明中。
圖1是一個(gè)按照本發(fā)明的教導(dǎo)構(gòu)造的分布式軟件開發(fā)環(huán)境10的簡(jiǎn)化的體系結(jié)構(gòu)圖。環(huán)境10包括多個(gè)結(jié)構(gòu)。每個(gè)結(jié)構(gòu)可以獨(dú)立運(yùn)行或與一個(gè)或多個(gè)其他結(jié)構(gòu)相互作用來(lái)設(shè)計(jì)、實(shí)現(xiàn)、管理和維護(hù)面向網(wǎng)絡(luò)的應(yīng)用程序12的各個(gè)方面。分布式網(wǎng)絡(luò)結(jié)構(gòu)14動(dòng)態(tài)地建立了對(duì)象和對(duì)象間的連接。事物處理結(jié)構(gòu)15提供了對(duì)象間事物處理的控制。交互結(jié)構(gòu)16提供了對(duì)象間交互的控制。修改后的CORBA IDL結(jié)構(gòu)18提供了面向?qū)ο蟮牟僮骱投x對(duì)象接口的接口描述語(yǔ)言(IDL)。人工管理結(jié)構(gòu)19提供了對(duì)象信息和對(duì)象接口的集中化的管理。生命周期結(jié)構(gòu)20定義了軟件開發(fā)的不同階段。人員維數(shù)結(jié)構(gòu)21定義了人員與生命周期結(jié)構(gòu)20的交互作用。
分布式網(wǎng)絡(luò)14結(jié)構(gòu)包含了由兼容接口連接的對(duì)象組成的交互式網(wǎng)絡(luò)。對(duì)象是異步處理的實(shí)體,它可以啟動(dòng)對(duì)其他對(duì)象的事物處理請(qǐng)求,接收來(lái)自其他連接的對(duì)象的事物請(qǐng)求和為其提供服務(wù)。對(duì)象可以是數(shù)據(jù)結(jié)構(gòu)的集合,以及對(duì)這些數(shù)據(jù)結(jié)構(gòu)進(jìn)行操作的方法的集合。對(duì)象與其它對(duì)象通過(guò)對(duì)象端口共享其接口。在一個(gè)兼容的接口中,數(shù)據(jù)結(jié)構(gòu)是相同的,其協(xié)議可以被所有連接到這個(gè)接口的對(duì)象端口很好地理解。對(duì)象端口可以被對(duì)象動(dòng)態(tài)創(chuàng)建。每個(gè)對(duì)象有一個(gè)狀態(tài)。它的狀態(tài)是由一系列完整地描述對(duì)象及其運(yùn)行時(shí)行為的狀態(tài)變量的值構(gòu)成的。由對(duì)象啟動(dòng)的事物處理影響相應(yīng)的接收對(duì)象的狀態(tài)。每個(gè)對(duì)象可以和很多對(duì)象的端口發(fā)生關(guān)聯(lián)。一個(gè)分布式網(wǎng)絡(luò)的狀態(tài)包括其組件對(duì)象的內(nèi)部狀態(tài)和對(duì)象間接口的狀態(tài)。
圖2A展示了分布式網(wǎng)絡(luò)結(jié)構(gòu)14的組件,其中對(duì)象30a包括對(duì)象端口32a。接口34a連接到對(duì)象端口32a,接口34也連接到對(duì)象30c的對(duì)象端口32a。對(duì)象30c的對(duì)象端口32d連接到接口34b。接口34b也連接到對(duì)象30b的對(duì)象端口32b。從而,對(duì)象30a通過(guò)對(duì)象30c連接到對(duì)象30b。例如,對(duì)象30a可以是一個(gè)客戶或啟動(dòng)一個(gè)事物處理的啟動(dòng)者對(duì)象。對(duì)象30c可以是一個(gè)接收者或接收來(lái)自對(duì)象30a的事物處理的處理和內(nèi)容的服務(wù)器。
事物處理結(jié)構(gòu)15利用事物處理相位提供了動(dòng)態(tài)的外部觀察和控制。一個(gè)事物處理是在兩個(gè)或多個(gè)對(duì)象間交換的消息流,它由其中的一個(gè)對(duì)象啟動(dòng)。因此,在本發(fā)明中,一個(gè)事物處理過(guò)程包含一個(gè)啟動(dòng)者對(duì)象,它和一個(gè)或多個(gè)數(shù)量動(dòng)態(tài)變化的接收對(duì)象交換信息。這個(gè)事物處理在啟動(dòng)者對(duì)象中完成。假定事物處理在有限的時(shí)間內(nèi)完成而且事物處理的啟動(dòng)者對(duì)象知道事物處理的完成。每個(gè)對(duì)象端口有一個(gè)結(jié)構(gòu)和協(xié)議為其接口執(zhí)行這個(gè)事物處理。一個(gè)非獨(dú)立的事物處理是指這種一種事物處理,其完成需要依靠其他的事物處理。一個(gè)獨(dú)立的事物處理是指這樣一種事物處理,其完成由自己決定而不需要依靠其他任何事物處理。每個(gè)對(duì)象端口可同時(shí)初始化和服務(wù)于多個(gè)獨(dú)立或非獨(dú)立事物處理。
一個(gè)事物處理可包含一個(gè)或多個(gè)事物處理周期。事物處理的相位被分配到事物處理周期中。每個(gè)事物處理相位被分配一個(gè)值。事物處理相位的數(shù)量對(duì)面向網(wǎng)絡(luò)的應(yīng)用程序是特定的。動(dòng)態(tài)變化的對(duì)象端口數(shù)可以和事物處理相位相關(guān)聯(lián)。被調(diào)諧到緊接著的較高階事物處理相位的對(duì)象端口可以觀察和控制調(diào)諧到緊接著的較低階事物處理的對(duì)象端口而不需要調(diào)諧到較低階的對(duì)象端口的參與。事物處理的內(nèi)容可以作為一個(gè)數(shù)據(jù)包利用一個(gè)分布式郵件系統(tǒng)用郵包方式傳送。低階事物處理相位的數(shù)據(jù)包和控制被傳送到一個(gè)緊接著的較高階。一旦當(dāng)前最高階相位得到一個(gè)最高階相位數(shù)據(jù)包,事物處理和控制就會(huì)返回緊接著的較最低階的對(duì)象端口。
參看圖2B,作為一個(gè)事物處理結(jié)構(gòu)15的例子,對(duì)象30a、對(duì)象30b和對(duì)象30c被連接到一個(gè)循環(huán)的通訊路徑36。對(duì)象30a和30b是在以相位0代表的較低相位。對(duì)象30c是在以相位1代表的較高相位。對(duì)象30c從對(duì)象30a和對(duì)象30b接受數(shù)據(jù)包35和控制。對(duì)象30c可以修改數(shù)據(jù)包35和將其返回給對(duì)象30a和對(duì)象30b。例如,對(duì)象30c可能是一個(gè)需要知道較低相位事物處理內(nèi)容的測(cè)試器或管理對(duì)象代理。在測(cè)試階段,測(cè)試器可以修改對(duì)象的輸入。管理對(duì)象代理可以利用低階事物對(duì)象處理的內(nèi)容支持事物處理的故障和恢復(fù)。
交互結(jié)構(gòu)16是一組交互機(jī)制,交互工作按步驟處理,以為兩個(gè)或更多的對(duì)象端口提供連接或通訊路徑。一個(gè)交互框架16的例子在S.Das等人的"Foundations for Concurrency Among Objects(對(duì)象并行操作的基礎(chǔ))",COMPCON,(1991年2月)和P.Bhattacharya等人的"Microkernel for Wireless Information Networks(無(wú)線信息網(wǎng)絡(luò)的微核)",Kluwer Academic,(1993年春)中得到了說(shuō)明,其教導(dǎo)結(jié)合于本申請(qǐng)中作為參考。交互結(jié)構(gòu)16支持一個(gè)事物處理中所有對(duì)象的共享信息的選擇和決定。一個(gè)對(duì)象的每個(gè)接口都和交互端口的時(shí)鐘相關(guān),互聯(lián)的對(duì)象端口之間所有的事物處理都是通過(guò)對(duì)象端口和交互端口時(shí)鐘實(shí)現(xiàn)的。交互框架16可以用具有循環(huán)通訊路徑的交互網(wǎng)絡(luò)來(lái)描述,如上述那樣,稱為一個(gè)環(huán)。對(duì)象可以通過(guò)對(duì)象端口連成環(huán)。上述數(shù)據(jù)包在連接對(duì)象組之間圍繞著該環(huán)在一個(gè)方向上運(yùn)動(dòng)。每個(gè)對(duì)象端口可以調(diào)諧到與該環(huán)相關(guān)的時(shí)鐘相位上。連到一個(gè)特定時(shí)鐘相定的對(duì)象端口數(shù)目是可以動(dòng)態(tài)變化的。時(shí)鐘相位也叫時(shí)鐘端口。
從每個(gè)對(duì)象端口,一個(gè)時(shí)鐘端口接收數(shù)據(jù)和兩個(gè)(異步)控制信號(hào)一個(gè)釋放(指示用于這一相位的步驟結(jié)束)和一個(gè)觸發(fā)器(指出其他連接的對(duì)象端口的對(duì)該相位的直接意圖)。一旦所有的端口都釋放并且至少一個(gè)被觸發(fā)了,則時(shí)鐘端口將升級(jí)的信號(hào)和收集到的數(shù)據(jù)返回到環(huán)上存在的下一個(gè)時(shí)鐘端口。接收到這個(gè)信號(hào)的下一個(gè)時(shí)鐘端口把它發(fā)送到調(diào)諧到這個(gè)時(shí)鐘端口的所有對(duì)象端口。如果沒有更高的相位,時(shí)鐘端口將升級(jí)發(fā)送回連接到同一相位的對(duì)象端口。
按步驟進(jìn)行每個(gè)對(duì)象端口的設(shè)定交互操作。每個(gè)步驟隨著時(shí)交互時(shí)鐘升級(jí)的接收開始,在來(lái)自前相位的對(duì)象端口的釋放和/或觸發(fā)信號(hào)之后,隨當(dāng)前相位的釋放和/或觸發(fā)信號(hào)結(jié)束。應(yīng)用交互的狀態(tài)在連接在一起的組成對(duì)象和時(shí)鐘端口中分布??梢愿鶕?jù)應(yīng)用的需要?jiǎng)?chuàng)建和取消任何數(shù)目的時(shí)鐘端口。在取消前,所有的對(duì)象端口被解調(diào)諧。當(dāng)一個(gè)對(duì)象端口在一個(gè)應(yīng)用中被使用時(shí),它被連接到一個(gè)特定的相位,并被稱作調(diào)諧到該時(shí)鐘端口的那個(gè)相位。只有在成功地調(diào)諧到一個(gè)特定的相位后,對(duì)象端口才能從時(shí)鐘端口接收一個(gè)升級(jí)信號(hào)和數(shù)據(jù)包。對(duì)象端口只能在相位停止活動(dòng)后調(diào)諧入一個(gè)相位,因?yàn)檎{(diào)諧到有效相位的對(duì)象端口目前已經(jīng)接到級(jí)信息并且這個(gè)相位中的步驟還沒有完成。如果一個(gè)對(duì)象端口從環(huán)中斷開,它就被認(rèn)為已從一個(gè)時(shí)鐘端口的特定相位中解調(diào)諧。一旦解調(diào)諧,一個(gè)對(duì)象端口將不再接收到數(shù)據(jù)包或?qū)ο蠖丝诘纳?jí)信號(hào)。
圖3A和圖3B展示了一個(gè)由交互結(jié)構(gòu)16的執(zhí)行構(gòu)成的交互網(wǎng)絡(luò)39的一個(gè)例子。交互網(wǎng)絡(luò)39包括了沿環(huán)36放置的對(duì)象30a-30d。對(duì)象30a-d的每個(gè)對(duì)象都由對(duì)象ID標(biāo)識(shí)值來(lái)標(biāo)識(shí)。每個(gè)對(duì)象端口32a-d都由唯一的端口ID標(biāo)識(shí)值來(lái)標(biāo)識(shí)。時(shí)鐘環(huán)36的緩沖區(qū)大小為1。每個(gè)對(duì)象端口32a-b被調(diào)諧到時(shí)鐘環(huán)36的時(shí)鐘端口38a(相位0或基相位)。同樣,對(duì)象端口32c-d被調(diào)到時(shí)鐘環(huán)36的時(shí)鐘端口38b(相位1)。所有這些對(duì)象30a-d共享同樣的接口34。在這個(gè)例子里,對(duì)象30a有對(duì)象ID 1,端口ID 500,接口ID 9,并被調(diào)到相位0。對(duì)象30b有對(duì)象ID 1,端口ID 600,接口ID 9,并被調(diào)到相位0。對(duì)象30c有對(duì)象ID 3,端口ID 700,接口ID 9,并被調(diào)到相位1。對(duì)象30d有對(duì)象ID 4,端口ID 800,接口ID 9,并被調(diào)到相位1。
當(dāng)時(shí)鐘環(huán)36被創(chuàng)建后,基相位0被自動(dòng)建立。就象圖3B所示,相位0有步驟1、步驟2、步驟3直到步驟n。當(dāng)調(diào)到相位0的端口32a和32b釋放,并且對(duì)象端口32a或32b至少有一個(gè)觸發(fā)相位1升級(jí)到步驟1。處于相位0的時(shí)鐘環(huán)36收集數(shù)據(jù)包35并發(fā)送采集到的數(shù)據(jù)包35和升級(jí)信息給調(diào)到相位1的對(duì)象端口32c和32d。調(diào)到相位1的對(duì)象端口32c和32d可以讀取和修改接收到的數(shù)據(jù)包35。當(dāng)對(duì)象端口32c和32d結(jié)束讀/寫操作,對(duì)象端口32c和32d釋放和觸發(fā)到相位1,相位1上的時(shí)鐘環(huán)36再收集數(shù)據(jù)包35并發(fā)送采集到的數(shù)據(jù)包35和升級(jí)信息給調(diào)到相位2的所有端口。在圖3A中,因?yàn)闆]有調(diào)到相位2或更高相位的端口,時(shí)鐘環(huán)36沿著其自身發(fā)送采集到的數(shù)據(jù)包35和升級(jí)信息,所有調(diào)到基相位的對(duì)象端口32a-32b為基相位的下一步獲取升級(jí)信息和數(shù)據(jù)包35。同樣,如果有對(duì)象端口調(diào)到此處,隨著相位0的步驟1的結(jié)束,相位1的步驟1的開始。同樣地,當(dāng)相位1步驟1結(jié)束時(shí)相位2的步驟1開始。如果沒有調(diào)到相位2的,那么基相位的步驟2開始。這些過(guò)程本身重復(fù)進(jìn)行直到整個(gè)事物處理完成。
一般來(lái)說(shuō),升級(jí)信息的到達(dá)指示對(duì)每個(gè)對(duì)象端口確認(rèn)在以前步驟中被所有的對(duì)象端口寫的所有內(nèi)容都發(fā)送到事物處理的所有接收方了。時(shí)鐘環(huán)提供了數(shù)據(jù)的持續(xù)性,因?yàn)閿?shù)據(jù)將被保持直到其他部分訪問它。如果作為一個(gè)特定的對(duì)象端口,一個(gè)升級(jí)信息不被發(fā)送到下一步,然后它會(huì)指出以前步驟的數(shù)據(jù)還沒有被發(fā)送。可以用其他方式通知該對(duì)象失敗。由時(shí)鐘環(huán)為任何相位步驟間的每個(gè)對(duì)象端口提供的大小為1的緩沖區(qū)以簡(jiǎn)化理解的復(fù)雜性,這對(duì)于處理如對(duì)象故障、時(shí)鐘故障、外部事物恢復(fù)、和內(nèi)部事物恢復(fù)之類的故障是需要的。
每個(gè)對(duì)象端口發(fā)出釋放信息為那個(gè)相位指出當(dāng)前步驟的完成。這個(gè)釋放必須在限定時(shí)間內(nèi)產(chǎn)生以保證事物處理的連續(xù)運(yùn)行。在這個(gè)步驟中,對(duì)象端口可能已讀取了來(lái)自前一個(gè)步驟的數(shù)據(jù)、寫入其希望已經(jīng)采集和發(fā)送的數(shù)據(jù)(這可能包括多次寫入),或者它什么也沒做,立即發(fā)送一個(gè)釋放信號(hào)。在任何情況下,一旦對(duì)象發(fā)送一個(gè)釋放,它就不再讀寫數(shù)據(jù)包。調(diào)諧到特定交互網(wǎng)絡(luò)的對(duì)象端口的釋放是這樣一個(gè)事件,它由異步對(duì)象生成,并指示對(duì)象的狀態(tài)不被運(yùn)行在高段相位上的通信所影響,直到收到來(lái)自時(shí)鐘相位的下一個(gè)升級(jí)信息。釋放通知對(duì)象的動(dòng)態(tài)重配置、靜止、健全和對(duì)象的點(diǎn),對(duì)象狀態(tài)對(duì)直到相位的下一個(gè)升級(jí)信息的接收為止的交互作用是穩(wěn)定的。
對(duì)象端口觸發(fā)器指示其對(duì)其他在下一個(gè)較高相位調(diào)諧至?xí)r鐘環(huán)的對(duì)象端口的直接意圖。為了對(duì)時(shí)間連模,至少一個(gè)觸發(fā)器必須被時(shí)鐘環(huán)接收,從一個(gè)對(duì)象端口走向下一步以表示其意圖。這個(gè)單一的意圖信號(hào)被傳送到所有的對(duì)象端口作為下一步的直接升級(jí),在當(dāng)前步驟的結(jié)尾。時(shí)鐘環(huán)記錄下有多少對(duì)象端口調(diào)諧到每個(gè)相位而非對(duì)象端口。一旦它接收到來(lái)自這些對(duì)象端口所有的釋放信息和至少一個(gè)觸發(fā)器,它采集這些單個(gè)的元素以構(gòu)造一個(gè)數(shù)據(jù)包,然后發(fā)送這些數(shù)據(jù)包和升級(jí)信息給所有調(diào)諧到下一個(gè)較高相位的對(duì)象端口。從而,時(shí)鐘從外部提供了同步。它跟蹤大量調(diào)諧到不同相位的對(duì)象端口而后最終發(fā)送一個(gè)升級(jí)信息和數(shù)據(jù)包給下一個(gè)高相位。這減少了調(diào)至較高相位的對(duì)象端口的復(fù)雜性,因?yàn)槊總€(gè)對(duì)象端口只查詢一個(gè)事件、升級(jí)信息的到達(dá),而不是所有來(lái)自每個(gè)調(diào)至低相位對(duì)象端口的所有事件,并提供了無(wú)限的協(xié)作。
表1說(shuō)明了一個(gè)原代碼的執(zhí)行,它創(chuàng)建適當(dāng)尺寸和數(shù)量的對(duì)象端口,并用人工管理結(jié)構(gòu)19作了登記,就象下面描述的一樣。
表1<pre listing-type="program-listing"><![CDATA[//一個(gè)對(duì)象的原代碼展示了它怎樣創(chuàng)建端口,和它在收到升級(jí)時(shí)//做了什么,所用術(shù)語(yǔ)是Port Advance Handler(端口升級(jí)句柄)。端口創(chuàng)建ret=OMF_CreatePort(PortID,PortSize);//用唯一的端口id(PortID)創(chuàng)建端口,PortID是一個(gè)整數(shù),PortSize以字節(jié)為單位。ret=OMF_Register(PortID);//端口由對(duì)象創(chuàng)建并和管理對(duì)象一起登錄。//對(duì)象中沒有與建立連接相關(guān)的代碼。//面向連接的連接是由來(lái)自外部的第三方建立的,僅在那時(shí)之//后的第一次的升級(jí)信息由端口接收。//被各個(gè)調(diào)諧到一個(gè)特定的時(shí)鐘相位的端口執(zhí)行的操作稱為//端口升級(jí)句柄。//以下是端口升級(jí)句柄的模板。//在接收到升級(jí)信號(hào)前,對(duì)象狀態(tài)相對(duì)于該接口是穩(wěn)定的,//因?yàn)闆]有輸入。對(duì)象必須根據(jù)這個(gè)接口維持以前的穩(wěn)定狀態(tài)//端口升級(jí)句柄開始。If ret=OMF_Advanced(PortID)//如果以上是真,則端口已經(jīng)升級(jí)了,對(duì)象端口收到了升級(jí)信息,//并收到了管理對(duì)象中的時(shí)鐘發(fā)送的收集的數(shù)據(jù)包。//對(duì)象狀態(tài)會(huì)受到從連接到這個(gè)接口的相臨對(duì)象發(fā)出的應(yīng)用信//息的影響。相應(yīng)地改變對(duì)象的狀態(tài)//Do//如果有更多要素從采集來(lái)的時(shí)鐘包中讀取,以下ReadData函數(shù)返回真If(OMF_ReadData(PortID)==false)then //在包中沒有更多的要素要讀取,退出Do循環(huán) Exit DoEnd if//然后將元素讀入變量RecvData。其根據(jù)接口類型可以是一結(jié)構(gòu)或一//串。如果知道類型就可以進(jìn)行規(guī)定,否則就規(guī)定一個(gè)字節(jié)陣列并將//原數(shù)據(jù)讀入該陣列。ret=OMF_LoadData(PortID,SizeOf(RecvData),RecvData)//這里讀取接收到的所有不同的消息然后相應(yīng)地處理它們。//如果對(duì)象根據(jù)不同的消息需要執(zhí)行一些動(dòng)作,則調(diào)用這類//合適的方法并產(chǎn)生輸出。Loop//DO READ LOOP循環(huán)結(jié)束。//構(gòu)成要發(fā)送至不同的接收消息的輸出響應(yīng),或發(fā)送對(duì)其它對(duì)象的請(qǐng)求//以得到服務(wù)。然后將數(shù)據(jù)按需要次數(shù)寫入端口。該應(yīng)用針對(duì)特定的協(xié)//議的??梢圆粚懭魏蝺?nèi)容。Ret=OMF_WriteData(PortID,SizeOf(SendData),SendData);//此時(shí),對(duì)象狀態(tài)相對(duì)于該接口是穩(wěn)定的。這必須在有限的時(shí)間實(shí)現(xiàn)。//該狀態(tài)可以任何情況。但穩(wěn)定的狀態(tài)必須被對(duì)象維持,直到在該端//口接收到下一升級(jí)。同時(shí),同一穩(wěn)定的對(duì)象狀態(tài)可以根據(jù)其它端口//的升級(jí)的到來(lái)而改變。應(yīng)用對(duì)象可以給出能指出動(dòng)態(tài)重配置所需的//健全點(diǎn)的釋放信號(hào)。ret=OMF_Release(PortID);//釋放發(fā)給端口的信號(hào)//以下是指示對(duì)連接至該時(shí)鐘的其他對(duì)象端口的直接意圖的觸發(fā)信號(hào)//連接到時(shí)鐘。這也是對(duì)應(yīng)用程序所特定的。ret=OMF_Trigger(PortID);//發(fā)給端口的觸發(fā)信號(hào) }//端口升級(jí)句柄結(jié)束]]></pre>修改的CORBAIDL結(jié)構(gòu)18是由環(huán)境10支持的軟件開發(fā)中的面向?qū)ο蟮募夹g(shù)。修改的CORBA IDL框架18包括了CORBA標(biāo)準(zhǔn),它由對(duì)象管理組在1992年出版的標(biāo)題為“The Common Object RequestBrokerArchitecture and Specification(公用對(duì)象請(qǐng)求代理結(jié)構(gòu)和規(guī)范)”的文件中作了說(shuō)明。以下稱為CORBA規(guī)范,其被作為參考結(jié)合到本申請(qǐng)中??梢岳斫猓瑹o(wú)論如何,本發(fā)明的內(nèi)容可以被應(yīng)用到面向?qū)ο笙到y(tǒng)的不同應(yīng)用中去。CORBA規(guī)范定義了一個(gè)對(duì)象請(qǐng)求代理(ORB)使對(duì)象可以在一個(gè)分布式環(huán)境中透明地建造,并接收請(qǐng)求和回應(yīng)。對(duì)象服務(wù)是執(zhí)行接口和對(duì)象的服務(wù)的集合,它支持通過(guò)使用和執(zhí)行對(duì)象支持基本的功能,就象在《CORBA服務(wù)公共對(duì)象服務(wù)規(guī)范》中描述的那樣。公共工具是應(yīng)用程序可以共享的服務(wù)的集合,對(duì)象服務(wù)比它要更基礎(chǔ)一些,就象在《CORBA工具公共對(duì)象工具規(guī)范》中描述的那樣。
客戶通過(guò)發(fā)出請(qǐng)求來(lái)請(qǐng)求服務(wù)。請(qǐng)求是一個(gè)事件,就象發(fā)生在特定時(shí)候的一些事。與請(qǐng)求相關(guān)的信息由操作、目標(biāo)對(duì)象,零個(gè)以上(實(shí)際)的參數(shù)、或者再加上申請(qǐng)內(nèi)容構(gòu)成。對(duì)象的引用是對(duì)象名,它可靠地表示一個(gè)特定的對(duì)象。特定情況下,對(duì)象引用每次在用于一個(gè)請(qǐng)求時(shí)標(biāo)識(shí)同一對(duì)象。對(duì)象可以被多個(gè)不同的對(duì)象引用所表示。一個(gè)請(qǐng)求可以擁有把數(shù)據(jù)傳到目的對(duì)象的參數(shù);它也可以有一個(gè)提供關(guān)于該請(qǐng)求的其它信息的請(qǐng)求內(nèi)容。可以將結(jié)果和例外(如果有的話)返回給客戶。
對(duì)象可以創(chuàng)建和破壞。對(duì)象創(chuàng)建的結(jié)果是以表示新對(duì)象的對(duì)象引用的形式展現(xiàn)給客戶的。類型是一種具有由數(shù)值確定的相關(guān)判定(具有布爾型結(jié)果的單變量數(shù)學(xué)函數(shù))的可確認(rèn)的實(shí)體。如果對(duì)于一個(gè)數(shù)值判定為真,則這個(gè)數(shù)值滿足一種類型。滿足的數(shù)值稱作該類型的成員。在CORBA標(biāo)準(zhǔn)中定義了兩種基本數(shù)據(jù)類型基本類型,包括整數(shù)、浮點(diǎn)數(shù)、字符、布爾量、枚舉和字符串;構(gòu)造類型,包括記錄、區(qū)分聯(lián)合、序列、數(shù)組和接口。
接口是一組客戶可能請(qǐng)求對(duì)象進(jìn)行的操作的描述。如果在每個(gè)由接口描述的可能的請(qǐng)求中對(duì)象都能指定為目標(biāo)對(duì)象,則該對(duì)象滿足該接口。接口類型是由滿足特定接口的對(duì)象所滿足的類型。在修訂版CORBA IDL中定義了接口和操作。可以用兩種方式定義對(duì)象的接口。在修訂版CORBA IDL中可以靜態(tài)地定義接口。這種語(yǔ)言根據(jù)可能在對(duì)象上進(jìn)行的操作和這些操作的參數(shù)來(lái)定義對(duì)象的類型。另外也可以在(CORBA Interface Repository Service)(CORBA接口庫(kù)服務(wù))中添加接口。
如CORBA規(guī)范所定義的,客戶通過(guò)ORB向?qū)ο髠魉驼?qǐng)求。客戶是希望對(duì)對(duì)象進(jìn)行操作的實(shí)體,對(duì)象實(shí)現(xiàn)是實(shí)際實(shí)現(xiàn)對(duì)象的代碼和數(shù)據(jù)。ORB負(fù)責(zé)所有的為請(qǐng)求查找對(duì)象實(shí)現(xiàn)、準(zhǔn)備對(duì)象實(shí)現(xiàn)以接收請(qǐng)求、和傳送構(gòu)成請(qǐng)求的數(shù)據(jù)所需的機(jī)制。在客戶看來(lái),接口與對(duì)象的位置、實(shí)現(xiàn)的編程語(yǔ)言、或?qū)ο蠼涌诓环从车钠渌蛩厥峭耆珶o(wú)關(guān)的。
為提出請(qǐng)求,客戶可以使用CORBA動(dòng)態(tài)調(diào)用接口或CORBA IDL占位程序(Stub)。對(duì)于一些函數(shù),客戶也可以直接與ORB交互操作。對(duì)象實(shí)現(xiàn)通過(guò)CORBA IDL生成的程序框架或通過(guò)動(dòng)態(tài)程序框架接受調(diào)用請(qǐng)求。在處理請(qǐng)求時(shí),或其它的時(shí)候,對(duì)象實(shí)現(xiàn)可以調(diào)用對(duì)象適配器和ORB??蛻敉ㄟ^(guò)對(duì)對(duì)象的對(duì)象引用進(jìn)行操作,并知道對(duì)象的類型和所希望進(jìn)行的操作,來(lái)進(jìn)行請(qǐng)求。
在CORBA結(jié)構(gòu)中,ORB不需要作為單個(gè)部件實(shí)現(xiàn),而是由它的接口定義。任何提供適當(dāng)接口的ORB實(shí)現(xiàn)都是可以接受的。接口分組為三類對(duì)所有ORB實(shí)現(xiàn)都相同的操作;隨特定類型的對(duì)象而不同的操作;以及隨特定形式的對(duì)象實(shí)現(xiàn)而不同的操作。ORB接口是直接與ORB聯(lián)系的接口,對(duì)所有ORB都是相同的,并不取決于對(duì)象接口或?qū)ο筮m配器。
修訂版CORBA IDL的結(jié)構(gòu)18還包括以下描述本發(fā)明中使用的實(shí)現(xiàn)的方面。修訂版CORBA IDL的結(jié)構(gòu)18為異步部件而設(shè)計(jì),即其中調(diào)用程序和被調(diào)用程序是異步的。每個(gè)函數(shù)的說(shuō)明都連著關(guān)鍵字“async”,以說(shuō)明異步的狀態(tài)。據(jù)此,在收到接收方的確認(rèn)之前,發(fā)送端不需要被鎖住。而且因?yàn)閷?duì)象使用交互結(jié)構(gòu)16進(jìn)行相互作用,因此設(shè)計(jì)者無(wú)須考慮緩沖區(qū)的損失。
修訂版CORBA IDL的結(jié)構(gòu)18定義了事物處理的多循環(huán)步驟。以下是修訂版CORBA IDL的結(jié)構(gòu)18中使用處理框架16的多循環(huán)處理的結(jié)構(gòu)描述。
<pre listing-type="program-listing"><![CDATA[Interface MYLocalTypeName{Attribute INT Message Type;………………OMSOFT_TransactionName-"AddSum";OMSOFT_DependentIndependent-"Independent";OMSOFT_InitiatorReceiver-"Initiator";ADVANCED_STEP 1//這里說(shuō)明步驟1所有相關(guān)的方法。//進(jìn)行讀操作//通過(guò)適當(dāng)?shù)男袨樘幚硭械妮斎胄畔ⅰ?/向端口寫必要的信息。async OMF Release(PortID),async OMF Trigger(PortID);ADVANCED_STEP 2 ………………async OMF Release(PortID),async OMF Trigger(Portm);//此處添加其它的步驟ADVANCED_STEP nasync OMF Release(PortID),async OMF-Trigger(PortID);]]></pre>可以使用修訂版CORBA IDL的結(jié)構(gòu)18實(shí)現(xiàn)接口34。在對(duì)象30中提供了系統(tǒng)范圍內(nèi)的唯一的全局句柄,包括索引、ObjectID、PortID、InterfaceID、時(shí)鐘環(huán)36、以及時(shí)鐘相位38-b。全局句柄與它們的位置和它們所實(shí)現(xiàn)的語(yǔ)言無(wú)關(guān)。
圖4顯示的是作為管理網(wǎng)絡(luò)40發(fā)布的人工管理結(jié)構(gòu)19的具體實(shí)現(xiàn)。對(duì)象30和接口34(未示出)由管理對(duì)象42管理。對(duì)象30的對(duì)象版本分配給管理對(duì)象42。管理對(duì)象42對(duì)連接的對(duì)象30的信息進(jìn)行集中管理。管理對(duì)象42通過(guò)網(wǎng)絡(luò)發(fā)展接口(INE)45向人工管理者對(duì)象44發(fā)送信息。人工管理者對(duì)象44根據(jù)從管理對(duì)象42接收到的信息作出接口發(fā)展的決策。人工管理者對(duì)象44結(jié)合管理對(duì)象42所提供的信息。每個(gè)管理對(duì)象42的復(fù)雜度是O(TNLog(N))。如果沒有管理對(duì)象42,則應(yīng)用程序中對(duì)象30的總數(shù)目是M×T。兼容系統(tǒng)分布的選擇的復(fù)雜度是O((T+M)NLog(N))。這樣,如果T和N是常量,則兼容系統(tǒng)分布選擇的復(fù)雜度是NLogG(N)。人工管理者對(duì)象44支持圖形用戶接口(GUI),以讓人工管理者47通過(guò)管理對(duì)象42交互地管理對(duì)象,從而配置和控制應(yīng)用程序的發(fā)展。對(duì)象30的設(shè)計(jì)隨應(yīng)用程序而異。
圖5顯示的是生命周期進(jìn)程的結(jié)構(gòu)20的具體實(shí)現(xiàn)。要求階段50決定了諸如費(fèi)用、絕限、可靠性或?qū)ο蟠a大小等的約束條件。工程管理規(guī)劃階段51決定了諸如可交付性、時(shí)間表和預(yù)算等軟件開發(fā)的主要部件,以提供工程管理規(guī)劃。規(guī)范和面向?qū)ο蟮姆治鲭A段52將要求階段50的要求分成一套具有接口34的對(duì)象30,從而生成規(guī)范。要求的劃分可以取決于在項(xiàng)目管理規(guī)劃階段51中生成的項(xiàng)目管理規(guī)劃和對(duì)象的適當(dāng)水平的可重復(fù)使用性。對(duì)象的可重復(fù)使用性可以通過(guò)檢查全部或部分匹配的對(duì)象的接口34和對(duì)象30而確定。完全匹配的對(duì)象30可以全部重復(fù)使用。部分匹配的對(duì)象30可以指定給開發(fā)者,從而擴(kuò)展現(xiàn)有的功能性以滿足新的要求。
設(shè)計(jì)階段53在規(guī)范和面向?qū)ο蟮姆治鲭A段52形成的規(guī)范的基礎(chǔ)上確定對(duì)象30和接口34。多個(gè)開發(fā)者可以通過(guò)協(xié)商從而開發(fā)能夠交互作用的對(duì)象30。開發(fā)者協(xié)商接口34的結(jié)構(gòu)和協(xié)議。
實(shí)施階段54確定對(duì)象30和接口34的具體實(shí)現(xiàn)??梢栽谧詣?dòng)單個(gè)單元測(cè)試階段55由第三方進(jìn)行單個(gè)單元測(cè)試。在測(cè)試成功之后,可以如下所述地在管理結(jié)構(gòu)19注冊(cè)。在兼容系統(tǒng)檢測(cè)階段56確定兼容系統(tǒng)。
在面向網(wǎng)絡(luò)的源代碼預(yù)排階段57,對(duì)對(duì)象30和接口34的具體實(shí)現(xiàn)進(jìn)行測(cè)試。測(cè)試結(jié)果傳遞給管理結(jié)構(gòu)19,管理結(jié)構(gòu)19將結(jié)果傳遞給有關(guān)的開發(fā)者和管理人員。
面向網(wǎng)絡(luò)的集成測(cè)試階段58對(duì)對(duì)象30的集成進(jìn)行測(cè)試,檢查對(duì)象30是否被正確地接入,以提供滿足規(guī)范和面向?qū)ο蟮姆治鲭A段52確定的規(guī)范的產(chǎn)品??梢詼y(cè)試對(duì)象30的接口輸入和輸出。測(cè)試結(jié)果傳遞給管理結(jié)構(gòu)19,管理結(jié)構(gòu)19將結(jié)果傳遞給有關(guān)的開發(fā)者和管理者。
維護(hù)階段59在驗(yàn)收之后提供對(duì)階段50-58開發(fā)的軟件的修改支持。在維護(hù)中,對(duì)象30的測(cè)試版可以動(dòng)態(tài)地更新。維護(hù)階段59可以返回到要求階段50、工程管理規(guī)劃階段51、規(guī)范和面向?qū)ο蟮姆治鲭A段52、設(shè)計(jì)階段53、實(shí)施階段54、面向網(wǎng)絡(luò)的源代碼預(yù)排階段57或面向網(wǎng)絡(luò)的分配語(yǔ)義測(cè)試階段58。
在生命周期結(jié)構(gòu)20中描述的生命周期階段,人員數(shù)組結(jié)構(gòu)21給軟件開發(fā)組成員指定相關(guān)的活動(dòng)。表2顯示了人員尺度結(jié)構(gòu)21指定的具體實(shí)現(xiàn)。
表2
在規(guī)范和面向?qū)ο蟮姆治鲭A段52,開發(fā)者獲得每個(gè)對(duì)象30的全部說(shuō)明,這說(shuō)明了初始的對(duì)象30和接口34。此后,開發(fā)者可能需要增強(qiáng)已經(jīng)可用的對(duì)象30的一個(gè)具體版本,以滿足新的要求,或只給了對(duì)象30的InterfaceID,而沒有給予每個(gè)接口的任何結(jié)構(gòu)或協(xié)議。在第二種情況下,開發(fā)者需要完全地設(shè)計(jì)一個(gè)新的對(duì)象30。
在設(shè)計(jì)階段53,開發(fā)者可以與其他開發(fā)者進(jìn)行協(xié)商。例如,在協(xié)商的每一步,開發(fā)者可以為每個(gè)接口34用修訂版CORBA IDL寫協(xié)商腳本。協(xié)商腳本在人工管理結(jié)構(gòu)19進(jìn)行注冊(cè)。開發(fā)者從其他連接的開發(fā)者處接收用修訂版CORBA IDL寫成的協(xié)商腳本。開發(fā)者可以用接收到的說(shuō)明其他開發(fā)者對(duì)某個(gè)接口的結(jié)構(gòu)和協(xié)議的觀點(diǎn)的信息來(lái)修改協(xié)商腳本。所有的接口協(xié)商完畢之后,開發(fā)者用修訂版CORBA IDL寫成對(duì)象接口描述,并在管理結(jié)構(gòu)19注冊(cè)該對(duì)象接口描述。管理結(jié)構(gòu)19將由修訂版CORBA IDL的描述生成的代碼返回給開發(fā)者。以下詳細(xì)地說(shuō)明一個(gè)優(yōu)選的協(xié)商過(guò)程的具體實(shí)施。
在實(shí)施階段54,開發(fā)者完成實(shí)施,并進(jìn)行單個(gè)單元的測(cè)試。開發(fā)者在管理結(jié)構(gòu)19注冊(cè)實(shí)施的對(duì)象30,比如測(cè)試之后作為修訂的結(jié)果可以增加對(duì)象的版本。兼容應(yīng)用系統(tǒng)的檢測(cè)56建立兼容應(yīng)用系統(tǒng)。在面向網(wǎng)絡(luò)的源代碼預(yù)排階段57和發(fā)布語(yǔ)言測(cè)試階段的結(jié)果的基礎(chǔ)上,開發(fā)者采取必要的行動(dòng)。
在面向網(wǎng)絡(luò)的集成測(cè)試階段58,進(jìn)行分配語(yǔ)義測(cè)試,檢查對(duì)象30是否正確地接入,以得到滿足規(guī)范的產(chǎn)品。在面向網(wǎng)絡(luò)的集成測(cè)試階段58,對(duì)接口34進(jìn)行仔細(xì)的測(cè)試??梢杂蓽y(cè)試人員對(duì)接口、狀態(tài),以及對(duì)象的輸入/輸出進(jìn)行測(cè)試。測(cè)試人員確定錯(cuò)誤,將它們排序,將結(jié)果輸入管理結(jié)構(gòu)19,但不改正它們。
在維護(hù)階段59,維護(hù)管理者通過(guò)遞送錯(cuò)誤報(bào)告或規(guī)范說(shuō)明,來(lái)通知維護(hù)程序員,以增強(qiáng)已有的對(duì)象30。維護(hù)程序員提供改正的和適合的維護(hù)修改,并作為測(cè)試者和開發(fā)者的結(jié)合,以尋找和修正用上述的階段50-59開發(fā)出來(lái)的軟件。
以下是運(yùn)用生命周期結(jié)構(gòu)20在軟件開發(fā)環(huán)境10中分布的網(wǎng)絡(luò)應(yīng)用程序的開發(fā)示例。在請(qǐng)求階段50,從最終用戶或客戶處收集關(guān)于網(wǎng)絡(luò)應(yīng)用程序的信息。圖6顯示的是由請(qǐng)求階段50生成的網(wǎng)絡(luò)應(yīng)用程序。網(wǎng)絡(luò)應(yīng)用程序60包括對(duì)象30a,其具有ObjectID 01,在下文中稱為Object 01;對(duì)象30b,其具有ObjectID 02,在下文中稱為Object 02;對(duì)象30c,其具有ObjectID 03,在下文中稱為Object 03。每個(gè)對(duì)象30a-c具有各自的狀態(tài)對(duì)象端口61a-c,通過(guò)這些狀態(tài)對(duì)象端口可以設(shè)置或接收每個(gè)對(duì)象30的狀態(tài)。每個(gè)對(duì)象30a-30c具有各自的狀態(tài)接口63a-63c,分別指定為狀態(tài)InterfaceID 1,2,3,狀態(tài)InterfaceID 1,2,3分別分配給Object 01,Object 02,Object 03。每個(gè)對(duì)象30a-c具有各自的基本服務(wù)對(duì)象端口62a-c,通過(guò)基本服務(wù)對(duì)象端口,每個(gè)對(duì)象30發(fā)出請(qǐng)求或接收請(qǐng)求、處理請(qǐng)求、以及送回響應(yīng)。如上所述,基本服務(wù)對(duì)象端口62可以是對(duì)象端口32?;痉?wù)接口64連接Object 01、Object02、Object 03的基本服務(wù)對(duì)象端口62。接口64被分配以InterfaceID 4。最好狀態(tài)對(duì)象端口61a-c和基本服務(wù)操作端口62a-c能包含對(duì)象端口32和狀態(tài)接口63,并且基本服務(wù)接口64包含接口34。
在網(wǎng)絡(luò)應(yīng)用程序60中,Object 01通過(guò)基本服務(wù)接口64發(fā)送請(qǐng)求消息到Object 02,以進(jìn)行平方運(yùn)算。Object 01通過(guò)基本服務(wù)接口64從Object 02接收平方值。Object 01通過(guò)基本服務(wù)接口64發(fā)送請(qǐng)求消息到Object 03,以進(jìn)行加法運(yùn)算。通過(guò)把n,n-1,...,1相加得到n(n+1)/2,進(jìn)行加和(n)。Object 01通過(guò)基本服務(wù)接口64從Object 03接收和值。假定在Object 01、Object 02、Object 03之間傳遞的是整數(shù)。相應(yīng)地,Object 02和Object 03只提供服務(wù),不提出請(qǐng)求。
在規(guī)范和面向?qū)ο蟮姆治鲭A段52,接口ID1-4可以設(shè)為空??梢源_定以下的規(guī)范。Object 01有兩個(gè)具有InterfaceID 1,4的接口。InterfaceID 1是對(duì)狀態(tài)端口61a的接口,其支持獲取和設(shè)定狀態(tài),并支持通過(guò)設(shè)定狀態(tài)的操作來(lái)釋放Object 01?;痉?wù)對(duì)象端口62a能發(fā)送平方或求和的請(qǐng)求,并接收適當(dāng)?shù)捻憫?yīng)。Object 02有兩個(gè)具有InterfaceID 2,4的接口。InterfaceID 2是對(duì)狀態(tài)端口61b的接口,其支持獲取和設(shè)定狀態(tài),并支持通過(guò)設(shè)定狀態(tài)的操作來(lái)破壞Object 02?;痉?wù)對(duì)象端口62b接收平方請(qǐng)求,計(jì)算并輸出響應(yīng)。Object 03有兩個(gè)具有InterfaceID 3,4的接口。InterfaceID 3是對(duì)狀態(tài)端口61c的接口,其支持獲取和設(shè)定狀態(tài),并支持通過(guò)設(shè)定狀態(tài)的操作來(lái)破壞Object03。Object 03的基本服務(wù)對(duì)象端口62c接收加和請(qǐng)求,計(jì)算并輸出響應(yīng)。在設(shè)計(jì)階段63,管理者給標(biāo)識(shí)為D1、D2、D3的三個(gè)開發(fā)者分別分配設(shè)計(jì)Object 01、Object 02、Object 03的任務(wù)。
在設(shè)計(jì)階段53,在應(yīng)用程序的軟件開發(fā)過(guò)程中,環(huán)境10可以用于在開發(fā)者之間進(jìn)行協(xié)商。圖7是根據(jù)本發(fā)明教導(dǎo)的無(wú)范圍協(xié)商方法的實(shí)施流程圖。無(wú)范圍協(xié)商按步驟進(jìn)行以提供協(xié)商。在過(guò)程塊72中,人工管理者對(duì)象44給開發(fā)者分配設(shè)計(jì)和實(shí)現(xiàn)對(duì)象的任務(wù)。在過(guò)程塊73中,在開發(fā)者和管理對(duì)象42之間建立協(xié)商網(wǎng)絡(luò)。圖8是能用于圖6所示的類似的應(yīng)用網(wǎng)絡(luò)60的協(xié)商網(wǎng)絡(luò)80的實(shí)現(xiàn)。協(xié)商網(wǎng)絡(luò)80包括開發(fā)者D1、D2、D3。開發(fā)者D1、D2、D3分別由人工管理者對(duì)象44指定開發(fā)稱為Object 01、Object 02、Object 03的對(duì)象30。在過(guò)程塊73中,人工管理者對(duì)象44可以在協(xié)商網(wǎng)絡(luò)80的建立中指定參數(shù)。例如在協(xié)商網(wǎng)絡(luò)80的建立中,人工管理者對(duì)象44可以指定每個(gè)開發(fā)者D1、D2、D3的登錄名和密碼,以及對(duì)象01、02、03的ObjectID和InterfaceID。每個(gè)開發(fā)者D1、D2、D3為對(duì)象30a、對(duì)象30b、對(duì)象30c創(chuàng)建各自的開發(fā)者協(xié)商對(duì)象端口82a、82b、83c。每個(gè)開發(fā)者D1、D2、D3創(chuàng)建各自的對(duì)象端口32a、32b、32c,作為開發(fā)者狀態(tài)端口。在管理對(duì)象42注冊(cè)開發(fā)者協(xié)商和狀態(tài)端口。開發(fā)者使用他們的狀態(tài)對(duì)象端口獲取設(shè)計(jì)規(guī)范、ObjectID、InterfaceID、以及開發(fā)者所需的作為生命周期結(jié)構(gòu)20一部分的其他服務(wù)。在實(shí)施和單個(gè)單元測(cè)試階段54的最后,開發(fā)者使對(duì)象與管理對(duì)象42和它們的實(shí)現(xiàn)相一致。管理對(duì)象42使用相同的接口向開發(fā)者返回對(duì)象版本信息。在協(xié)商過(guò)程的每一步驟最后,每個(gè)開發(fā)者使用這個(gè)接口登記到IDL修訂版之中。人工管理者對(duì)象44在管理對(duì)象42和INE管理對(duì)象端口83中創(chuàng)建相應(yīng)的管理側(cè)狀態(tài)端口對(duì)象84a-84c。在人工管理者對(duì)象44中創(chuàng)建人工管理者協(xié)商對(duì)象端口85b和人工管理者INE端口85a。
在管理對(duì)象42中注冊(cè)人工管理者INE端口85a、人工管理者協(xié)商端口85b、管理INE端口83、管理協(xié)商端口84a-c。人工管理者對(duì)象44創(chuàng)建時(shí)鐘,并將人工管理者INE端口85a和管理INE端口83聯(lián)結(jié)在管理側(cè)。使用INE接口45,人工管理者47(未示出)用人工管理者對(duì)象44控制整個(gè)協(xié)商過(guò)程。人工管理者對(duì)象44向管理對(duì)象42發(fā)送協(xié)商關(guān)系數(shù)據(jù)。管理對(duì)象42使開發(fā)者狀態(tài)對(duì)象端口32a-c和管理對(duì)象上的管理協(xié)商端口84a-c之間的聯(lián)結(jié)生效。在這個(gè)方案中,網(wǎng)絡(luò)80、人工管理者47決定直接觀察協(xié)商過(guò)程。在管理對(duì)象42中創(chuàng)建協(xié)商時(shí)鐘86。人工管理者對(duì)象44的人工管理者協(xié)商對(duì)象端口85b調(diào)到協(xié)商時(shí)鐘86的基本相位。當(dāng)端口85b升級(jí)時(shí),其被保持。所有的三個(gè)開發(fā)者協(xié)商對(duì)象端口82a-c調(diào)到協(xié)商時(shí)鐘86的高相位。然后端口85b釋放端口,開發(fā)者協(xié)商對(duì)象端口82a-c得到升級(jí)信號(hào)。
在過(guò)程塊77中,開發(fā)者互相進(jìn)行協(xié)商,直到開發(fā)者協(xié)商取得一致。例如,開發(fā)者D1、D2、D3可以反復(fù)地通過(guò)開發(fā)者協(xié)商對(duì)象端口82a-c傳送用修訂版CORBA IDL結(jié)構(gòu)18和英語(yǔ)寫成的協(xié)商腳本,從而達(dá)成一致,釋放和觸發(fā)上述的機(jī)制。開發(fā)環(huán)境支持的后端(backend)IDL編譯器對(duì)開發(fā)者在協(xié)商的每一步驟最后寫成的修訂版CORBA IDL進(jìn)行檢查,以改正語(yǔ)法錯(cuò)誤。
在這個(gè)例子中,開發(fā)者D1、D2、D3進(jìn)行協(xié)商而對(duì)接口版本1.0的接口的結(jié)構(gòu)和協(xié)議取得一致,該接口是公共全局接口InterfaceID 4。無(wú)論哪個(gè)開發(fā)者D1、D2、D3都能對(duì)與他們的個(gè)人設(shè)計(jì)相容的InterfaceID=4的結(jié)構(gòu)和協(xié)議的完整描述進(jìn)行協(xié)商。例如,在步驟1中,開發(fā)者D2和D3可能不想作任何提議。相應(yīng)地,D2和D3釋放,并且可能會(huì)也可能不會(huì)觸發(fā)步驟1。在步驟1中,開發(fā)者D1作了一個(gè)提議。表3是開發(fā)者D1的協(xié)商腳本的例子。
表3開發(fā)者D1為步驟1寫的協(xié)商腳本,InterfaceID=4
開發(fā)者D1將協(xié)商腳本傳送至開發(fā)者協(xié)商對(duì)象端口82a,然后釋放并觸發(fā)開發(fā)者協(xié)商對(duì)象端口82a。觸發(fā)被發(fā)送,以盡早地將開發(fā)者D1的協(xié)商腳本與開發(fā)者D2和開發(fā)者D3交換。這個(gè)時(shí)候,開發(fā)者D1、D2、D3已經(jīng)釋放并觸發(fā),并且只有開發(fā)者D1寫入了開發(fā)者協(xié)商對(duì)象端口82a。協(xié)商時(shí)鐘86收集協(xié)商腳本并形成數(shù)據(jù)包35(未示出)。這種情況下,在數(shù)據(jù)包35中只有一個(gè)協(xié)商結(jié)構(gòu)元件,因?yàn)樵诋?dāng)前步驟中只有開發(fā)者D1發(fā)送了協(xié)商腳本。協(xié)商時(shí)鐘86將數(shù)據(jù)包35和升級(jí)傳送給調(diào)到不同相位0的人工管理者協(xié)商端口85b。接收到升級(jí)后,人工管理者對(duì)象44可以查看數(shù)據(jù)和接收到的協(xié)商腳本,并理解團(tuán)體協(xié)商步驟1的進(jìn)程。人工管理者對(duì)象44得知開發(fā)者D1提出了一個(gè)改動(dòng)。檢查完成之后,人員管理者對(duì)象44向人工管理者協(xié)商對(duì)象端口85b回寫數(shù)據(jù),這樣人工管理者協(xié)商對(duì)象端口85b收到的元件不被破壞或修改,并可以發(fā)送給聯(lián)結(jié)到不同相位1的開發(fā)者D2、D3。人工管理者對(duì)象44對(duì)基本相位釋放并觸發(fā)人工管理者協(xié)商對(duì)象端口85b。協(xié)商時(shí)鐘86收集這個(gè)新的相位數(shù)據(jù)并形成數(shù)據(jù)包35。協(xié)商時(shí)鐘86發(fā)送數(shù)據(jù)包35和升級(jí)給調(diào)到相位1的開發(fā)者協(xié)商對(duì)象端口82a-c。接收到升級(jí)后,開發(fā)者D1可以在步驟2中什么也不做。開發(fā)者D1釋放,并且可能觸發(fā)也可能不觸發(fā)。開發(fā)者D2、D3閱讀并理解開發(fā)者D1提議的修改,可以不同意或完全同意結(jié)構(gòu)和協(xié)議的個(gè)人部分。如果開發(fā)者D2和開發(fā)者D3都同意,協(xié)商就完成了。或者反復(fù)進(jìn)行協(xié)商,直到所有的開發(fā)者D1、D2、D3都取得一致。表4是開發(fā)者為步驟2的協(xié)商腳本的例子。
表4開發(fā)者D2的協(xié)商腳本
表5是開發(fā)者D3由步驟2而來(lái)的協(xié)商腳本的例子。
表5開發(fā)者D3的協(xié)商腳本
開發(fā)者D2和開發(fā)者D3都可以用修訂版CORBA IDL和英語(yǔ)向他們各自的開發(fā)者協(xié)商對(duì)象端口82b和82c寫他們的個(gè)人接受聲明,以及釋放和觸發(fā)各自的開發(fā)者協(xié)商對(duì)象端口82b和82c。協(xié)商時(shí)鐘86再次向人工管理者對(duì)象44發(fā)送收集到的數(shù)據(jù)包35和升級(jí)。人工管理者對(duì)象44注意到開發(fā)者D2和開發(fā)者D3已經(jīng)同意。相應(yīng)地,人工管理者對(duì)象44不干預(yù)解決這個(gè)步驟中的沖突。人工管理者對(duì)象44將接收到的單元不作任何改動(dòng)地寫回到人工管理者協(xié)商對(duì)象端口85b,并向人工管理者協(xié)商對(duì)象端口85b發(fā)送釋放和觸發(fā)命令。協(xié)商時(shí)鐘86將這個(gè)新的數(shù)據(jù)包35和升級(jí)發(fā)送給開發(fā)者對(duì)象端口32a-32c。開發(fā)者D2和開發(fā)者D3可以什么也不做。開發(fā)者D1得知開發(fā)者D2和開發(fā)者D3已經(jīng)同意,這就是接口版本=1.0,InterfaceID=4的結(jié)構(gòu)和協(xié)議。
在過(guò)程塊78中,開發(fā)者D1、D2、D3完成實(shí)施階段54中他們的各自對(duì)象版本(包括InterfaceID=4、InterfaceID=1.0)的實(shí)施。每個(gè)開發(fā)者D1、D2、D3寫實(shí)施完成消息,并釋放/觸發(fā)他們的協(xié)商端口。人工管理者協(xié)商對(duì)象端口85b得到升級(jí)并檢查其內(nèi)容時(shí),人工管理者對(duì)象44得知開發(fā)者已經(jīng)完成了實(shí)施。人工管理者對(duì)象44寫、釋放/觸發(fā)人工管理者協(xié)商對(duì)象端口85b。對(duì)象端口32a-32c在第四步驟升級(jí)。所有的開發(fā)者D1、D2、D3得知實(shí)施已經(jīng)完成,這時(shí),接口版本=1.0,InterfaceID=4的協(xié)商事務(wù)已經(jīng)完成。此時(shí),在新的配置中,任何開發(fā)者可以向這個(gè)協(xié)商過(guò)程中加進(jìn)新的開發(fā)者端口30、開始新的事務(wù)。
如上所述,在應(yīng)用中,人工管理者對(duì)象44調(diào)到每一個(gè)協(xié)商進(jìn)程,并透明地觀察和控制協(xié)商過(guò)程。在大的網(wǎng)絡(luò)應(yīng)用程序中,可能會(huì)有好幾百個(gè)不同的活動(dòng)的協(xié)商組。人工管理者對(duì)象44可能需要幾百個(gè)端口來(lái)從外面進(jìn)行觀察和控制。人工管理者對(duì)象44除了直接調(diào)到所有的協(xié)商進(jìn)程(通過(guò)在管理者對(duì)象中創(chuàng)建端口),也可以使用具有管理協(xié)商對(duì)象端口的管理對(duì)象42,其中管理協(xié)商對(duì)象端口已經(jīng)調(diào)到應(yīng)用中的所有時(shí)鐘,以得到所有的信息(協(xié)商進(jìn)程)。這個(gè)方法涉及到向管理對(duì)象發(fā)送多個(gè)指令,但減少了人工管理者對(duì)象44的端口數(shù)目的人工管理者對(duì)象44,其中原始的方法減少了人工管理者對(duì)象44和管理對(duì)象42之間的請(qǐng)求消息的數(shù)目。可以根據(jù)網(wǎng)絡(luò)應(yīng)用來(lái)選擇使用的方法。
一般而言,因?yàn)槭怯蓞f(xié)商時(shí)鐘86,而不是由開發(fā)者自己發(fā)送升級(jí),所以只在每個(gè)新步驟(有升級(jí)到來(lái))的開始開發(fā)者的注意力會(huì)從設(shè)計(jì)的主要任務(wù)上分開,和前面所述的因素?zé)o關(guān),因此是無(wú)范圍協(xié)商(協(xié)作)。在上述的協(xié)商中,人工管理者對(duì)象42在不同相位涉及的對(duì)于開發(fā)者是完全透明的。當(dāng)人工管理者對(duì)象在基本相位得到升級(jí)時(shí),這時(shí)所有的高相位開發(fā)者協(xié)商端口已經(jīng)主動(dòng)釋放,開發(fā)者不知道數(shù)據(jù)去哪兒了。在每一個(gè)步驟,人工管理者的對(duì)象端口得到一個(gè)升級(jí)和整個(gè)開發(fā)者組的收集數(shù)據(jù)包,從而提高人工管理者的生產(chǎn)效率,降低復(fù)雜性。而且,人員開發(fā)者不知道有多少個(gè)開發(fā)者聯(lián)接到協(xié)商進(jìn)程、他們的位置、他們何時(shí)工作。這可以提高開發(fā)者的生產(chǎn)效率。每個(gè)開發(fā)者等待從協(xié)商端口來(lái)的下一個(gè)步驟的升級(jí),這和前面所述的因素?zé)o關(guān)。與升級(jí)一起接收到的數(shù)據(jù)包中元件的數(shù)目顯示涉及到多少個(gè)開發(fā)者,它是動(dòng)態(tài)的,并由時(shí)鐘設(shè)定。時(shí)鐘控制升級(jí)到達(dá)調(diào)到不同相位的端口,這也取決于有多少個(gè)開發(fā)者調(diào)到了時(shí)鐘,并且是動(dòng)態(tài)變化的。
表6是在修訂版CORBA IDL中被凍結(jié)的協(xié)商最后的設(shè)計(jì)。
表6步驟1對(duì)象端口向步驟1前進(jìn)時(shí),D1的Object 01向基本服務(wù)對(duì)象端口寫適當(dāng)?shù)南?,從而啟?dòng)事務(wù)。根據(jù)用戶的選擇,這可以是進(jìn)行平方的請(qǐng)求或進(jìn)行加法的請(qǐng)求。用戶輸入的數(shù)據(jù)以適當(dāng)?shù)南㈩愋蛷?fù)制到結(jié)構(gòu)中。然后Object 01為步驟1釋放并觸發(fā)這個(gè)基本服務(wù)對(duì)象端口。當(dāng)Object 02和Object 03接收到步驟1升級(jí)時(shí),它們釋放并觸發(fā)。
步驟2對(duì)象端口向步驟2前進(jìn)時(shí),除了釋放和觸發(fā)外,Object 01什么也不做。Object 02和Object 03讀數(shù)據(jù)并解釋它。如果是平方請(qǐng)求,Object 02計(jì)算平方,以適當(dāng)?shù)南㈩愋蛯㈨憫?yīng)復(fù)制到輸出結(jié)構(gòu)中。Object 02將輸出結(jié)構(gòu)寫到基本服務(wù)對(duì)象端口中,釋放并觸發(fā)該端口。除了釋放和觸發(fā)外,Object 03什么也不做。如果是求和請(qǐng)求,Object 03計(jì)算響應(yīng),并將其寫到基本服務(wù)對(duì)象端口中。Object 02和Object 03釋放并觸發(fā)它們的基本服務(wù)對(duì)象端口。
步驟3當(dāng)對(duì)象端口向步驟3前進(jìn)時(shí),Object 01讀輸入的數(shù)據(jù)并進(jìn)行解釋,得知它已經(jīng)接收到了最終的輸出。這說(shuō)明啟動(dòng)者(Object01)中的事務(wù)結(jié)束。Object 02和Object 03釋放并觸發(fā)它們的基本服務(wù)對(duì)象端口,但不寫任何東西。Object 01可以立即開始另一個(gè)事務(wù)或者僅僅是釋放并觸發(fā),不向端口寫任何東西。
在實(shí)施階段54,開發(fā)者可以按照?qǐng)D9所示的步驟來(lái)實(shí)施圖6所示的網(wǎng)絡(luò)應(yīng)用60。在功能塊90中,對(duì)象30a-c的狀態(tài)被確定,并且實(shí)現(xiàn)各自的狀態(tài)接口63a-c,以支持對(duì)象30a-c獲取和設(shè)定狀態(tài)以及破壞對(duì)象30a-c。例如,狀態(tài)可以選擇為反映網(wǎng)絡(luò)應(yīng)用60中事務(wù)的相應(yīng)整數(shù)。在網(wǎng)絡(luò)應(yīng)用60中,每個(gè)狀態(tài)端口61a-61c被定義為具有兩個(gè)字段第一個(gè)字段是消息類型字段,表示獲取或設(shè)定操作;第二個(gè)字段是狀態(tài)值字段,容納對(duì)象30a-c的狀態(tài)。開發(fā)者D1將Object 01的初始狀態(tài)選為0。相應(yīng)的,無(wú)論何時(shí)Object 01發(fā)出服務(wù)請(qǐng)求,它的狀態(tài)變?yōu)?。接收到響應(yīng)后,Object 01的狀態(tài)變?yōu)?。同樣地,開發(fā)者D2和開發(fā)者D3將它們相應(yīng)的對(duì)象狀態(tài)初始化設(shè)為0。當(dāng)Object 02和Object 03從Object 01接收到請(qǐng)求時(shí),狀態(tài)變?yōu)?。在同一個(gè)步驟中,一旦發(fā)出響應(yīng),狀態(tài)變回為0。例如,狀態(tài)消息類型可以如下定義1表示設(shè)定,2表示獲取,3表示設(shè)定確認(rèn)(ack),4表示獲取確認(rèn)(get_ack),5表示被請(qǐng)求釋放,6表示接收到并正在釋放。根據(jù)本發(fā)明,這些消息數(shù)和狀態(tài)類型可以隨對(duì)象而不同,由開發(fā)者決定,但相應(yīng)的開發(fā)者必須在每個(gè)對(duì)象中提供總體支持。
在功能塊92中,對(duì)象的每個(gè)對(duì)象接口都有一個(gè)對(duì)象端口與之相聯(lián)系。相應(yīng)地,各狀態(tài)接口63a-63c有狀態(tài)端口61a-61c與之相聯(lián)系,基本服務(wù)接口64有基本服務(wù)對(duì)象端口62a-62c與之相聯(lián)系。在功能塊94中,為處理請(qǐng)求和輸入的消息確定事務(wù)。在功能塊96中,可以用接口。每個(gè)對(duì)象接口有單獨(dú)的修訂版CORBA IDL的描述。修訂版CORBAIDL描述對(duì)對(duì)象接口的結(jié)構(gòu)和事務(wù)進(jìn)行描述,舉例來(lái)說(shuō),包括InterfaceID,接口版本,以及啟動(dòng)器/接收器信息。在網(wǎng)絡(luò)應(yīng)用60中,在Object01中開發(fā)者D1為具有接口ID為1和4的兩個(gè)接口寫兩個(gè)單獨(dú)的修訂版CORBA IDL。表7顯示了Object 01接口ID 1的修訂版CORBA IDL描述的實(shí)現(xiàn)。
表7由D1為Object 01的InterfaceID=1寫的修訂版CORBA IDL描述。
<pre listing-type="program-listing"><![CDATA[//Object 01的修訂版CORBA IDL描述;由開發(fā)者D1所寫////InterfaceID=1,InterfaceVersion 1.0 STATE PORT 01//interface StateObjectl//包括另外一些設(shè)定和獲取操作的方法。文件01 Interfacel.idl//StateObjectl是01中為狀態(tài)接口而設(shè)的LocalTypeName。//MyLocalState是在對(duì)象中保持當(dāng)前狀態(tài)的局部狀態(tài)變量。//MessageType=1為SET操作。可以從外部設(shè)定對(duì)象狀態(tài)。//MyLocalState=InputStructReceived.StateValue;//MessageType=2為GET操作。外部需要對(duì)象的內(nèi)部狀態(tài)。OutputStructToBeSent.StateValue=MyLocalState;//MessageType=3為給設(shè)定操作的SET_ACK。接收到SET請(qǐng)求時(shí),對(duì)象向外部對(duì)象發(fā)送SET_ACK。//MessageType=4為給獲取操作的GET_ACK。接收到GET請(qǐng)求時(shí),對(duì)象向外部對(duì)象發(fā)送GET_ACK。//MessageType=5為REQ_TO_DIE操作。對(duì)象必需釋放。//MessageType=6為RECEIVED_REQ_TO_DIE,是對(duì)象響應(yīng)消息5而發(fā)送的ACK。在下一個(gè)步驟中,當(dāng)對(duì)象確認(rèn)另一方已經(jīng)接收到消息6時(shí),對(duì)象退出。struct x{Attribute int MessageType; Attribute int StateValue;struct x in,out; if OMF_Advanced(PortID) { if(In.MessageType==1)mylocal state=in.stateValue;out.MessageType=3;end ifif(In.MessageType==2) out.StateValue=mylocal state; out.MessageType=4;end ifif(In.MessageType==5) out.MessageType=6; cleanup(); end ifOMF_WRITE(PortID,OUT)size of(struct out))OMF_Release(PortID);OMF_Trigger(PortID);};}]]></pre>表8顯示了Object 01,InterfaceID 4的修訂版CORBA IDL描述的實(shí)現(xiàn)。
表8由D1為Object 01的InterfaceID=4而寫的修訂版CORBA IDL描述。
<pre listing-type="program-listing"><![CDATA[//Object 01的修訂版CORBA IDL描述;由開發(fā)者D1所寫////InterfaceID=4,01的InterfaceVersion 1.0 BasicServicePort////包括另外一些方法。文件01_Interface4.idl//MyLocalState是在對(duì)象中保持當(dāng)前狀態(tài)的局部狀態(tài)變量interfaceBasicServicePortObjectlattribute int MessageType;attribute int Data;//PortID是在整個(gè)應(yīng)用系統(tǒng)中對(duì)象端口的唯一服務(wù)ID。//BasicServicePortObjectl是01中InterfaceID=4的LocalTypeName//獨(dú)立事務(wù)為TRANSAC_NAME_SQUARESUM//事務(wù)的啟動(dòng)器,必需在01中結(jié)束]]></pre>步驟1向端口寫消息類型OM_SQUARE(1)或OM_SUMMATION(3)//向端口寫數(shù)據(jù)用戶輸入數(shù)據(jù)MyLocalState=1;
//進(jìn)入穩(wěn)定對(duì)象狀態(tài);現(xiàn)在釋放端口//OMF_Release(PortID);OMF_Trigger(PortID);步驟2//對(duì)象狀態(tài)穩(wěn)定(因?yàn)闆]有有效的輸入,所以狀態(tài)沒有變化)OMF_Release(PortID);OMF_Trigger(PortID);步驟3//從端口讀消息類型OM_SQUARE_OUTPUT(2)或OM_SUMMATION_OUTPUT(4)//從端口讀數(shù)據(jù),顯示,步驟3中啟動(dòng)器的事務(wù)結(jié)束MyLocalState=0;//如果沒有從用戶來(lái)的有效數(shù)據(jù),通過(guò)開始下一個(gè)事務(wù)來(lái)重新寫//01可能已經(jīng)保持了控制。但這個(gè)步驟中什么也不寫OMF_Release(PortID);OMFTrigger(PortID);};表9顯示了Object 02,InterfaceID 4的修訂版CORBA IDL描述的實(shí)現(xiàn)。可以類似地確定開發(fā)者D2的InterfaceID=2的修訂版CORBAIDL描述,以及開發(fā)者D3的修訂版CORBA IDL描述。
表9由D2為Object 02的InterfaceID=4寫的修訂版CORBA IDL描述。
<pre listing-type="program-listing"><![CDATA[//Object 02的修訂版CORBA IDL描述;由開發(fā)者D2所寫////InterfaceID=4,02的InterfaceVersion 1.0 BasicServicePort////包括另外一些方法。文件02_Interface4.idl//MyLocalState是在對(duì)象中保持當(dāng)前狀態(tài)的局部狀態(tài)變量interface BasicServicePortObject2{attribute int MessageType;attribute int Data;//PortID是在整個(gè)應(yīng)用系統(tǒng)中對(duì)象端口的唯一服務(wù)ID。//BasicServicePortObject2是02中InterfaceID=4的LocalTypeName//獨(dú)立事務(wù)為TRANSAC_NAME_SQUARESUM//事務(wù)的接收者]]></pre>步驟1OMF_Release(PortID);OMF_Trigger(PortID);步驟2//從端口讀消息類型OM_SQUARE(1)MyLocalState=1;//從端口讀數(shù)據(jù)類型Response=ComputeSquare(InputStructRecd.Data)//向端口寫消息類型OM_SQUARE_INPUT(2)//向端口寫數(shù)據(jù)把響應(yīng)寫到數(shù)據(jù)區(qū)MyLocalState=0;//對(duì)象狀態(tài)穩(wěn)定OMF_Release(PortID);OMF_Trigger(PortID);步驟3//啟動(dòng)器中步驟3的事務(wù)結(jié)束OMF_Release(PortID0OMF_Trigger(PortID);};在功能塊97中,每個(gè)確定的對(duì)象接口是作為單獨(dú)的源文件而實(shí)施。單獨(dú)的源文件確定了網(wǎng)絡(luò)應(yīng)用60的全部對(duì)象的代碼。例如,Object01的源代碼包括兩個(gè)端口具有StatePortID的狀態(tài)對(duì)象端口61,以及適當(dāng)大小的具有ServicePortID的基本服務(wù)端口62a。PortID說(shuō)明兩個(gè)端口服務(wù)是不相同的,在應(yīng)用系統(tǒng)中是獨(dú)一無(wú)二地區(qū)分的。為了得到這些端口提供的服務(wù),人工管理者必需知道相應(yīng)的PortID。PortID或ServiceID類似于對(duì)象的能力,人工管理者必需從對(duì)象中獲取它們以使用其服務(wù)。
以下是用于創(chuàng)建源代碼的函數(shù)例子和它們的描述。
OMF_CreatePort(PortID,PortSize)這個(gè)方法使對(duì)象30創(chuàng)建大小為PortSize的端口。對(duì)象30通過(guò)這個(gè)端口接收和/或發(fā)送數(shù)據(jù)。PortID是一個(gè)整數(shù),在整個(gè)應(yīng)用系統(tǒng)中獨(dú)一無(wú)二地確定了對(duì)象服務(wù)。例如,對(duì)象端口可以是對(duì)象端口32、狀態(tài)對(duì)象端口61或服務(wù)對(duì)象端口62。
OMF_Registration(PortID)這個(gè)方法使對(duì)象30在管理處以PortID注冊(cè)它的端口,使管理者能夠訪問對(duì)象的服務(wù)。
OMF_Advanced(PortID)這個(gè)方法使對(duì)象30檢查具有PortID的對(duì)象端口是否已經(jīng)升級(jí)。如果升級(jí)則返回真,否則返回假。
OMF_ReadData(PortID)這個(gè)方法使具有PortID的對(duì)象端口檢查數(shù)據(jù)包中是否有另一個(gè)元件要讀。如果為真則返回非零。
OMF_LoadData(PortID,PortSize,InputStructure)這個(gè)方法允許從具有PortID的對(duì)象端口向結(jié)構(gòu)InputStructure裝載PortSize個(gè)字節(jié)。
OMF_WriteData(PortID,PortSize,OutputStructure)這個(gè)方法允許從結(jié)構(gòu)OutputStructure向具有PortID的對(duì)象端口寫PortSize個(gè)字節(jié)。
OMF_Release(PortID)這個(gè)方法允許釋放具有PortID的端口。當(dāng)被人工管理者請(qǐng)求時(shí)(通過(guò)管理對(duì)象),對(duì)象端口句柄使用它來(lái)發(fā)送對(duì)象的穩(wěn)定狀態(tài)。
OMF_Trigger(PortID)這個(gè)方法允許觸發(fā)具有PortID的端口。
表10顯示的是作為Object 01的實(shí)施而開發(fā)的源代碼例子。
表10由開發(fā)者D1實(shí)現(xiàn)的Object 01的源代碼。
<pre listing-type="program-listing"><![CDATA[//開發(fā)者D1開發(fā)的Object 01源代碼開始//(InterfaceID=1,InterfaceVersion=1.0),(InterfaceID=4,InterfaceVersion=1.0)#define OM+SQUARE1#define OM_SQUAEW_OUTPUT 2#define OM_SUMMATION 3#define OM_SUMMATION_OUTPUT 4struct StateObjectl int MessageType; int StateValue;}StateInputStruct,StateOutputStruct;struct BasicServicePortObjectl{ int Messagetype; int Date;}ServiceInputStruct,ServiceOutputStruct;main(int argc,char**argv){ int MyLocalState,ServicePortID,MyStateWrite,MyServiceWrite; int StatePortID=atoi(argv[1]); OMF_CrreatePort(StatePortID,(size of)struct StateObjectl); OMF_Registration(StatePortID); MyStateWrite=0; MyServiceWrite=0 ServicePortID=StatePortID+1; OMF_CreatePort(ServicePortID,(size of) structBasicServicePortObjectl); OMF_Registration(ServicePortID);//對(duì)象創(chuàng)建兩個(gè)與不同的服務(wù)相關(guān)的端口//對(duì)象在管理處注冊(cè)端口,從而他人可以訪問對(duì)象的服務(wù)或能//力,如果知道這個(gè)數(shù)的話。While(1){ if(OMF_advanced(StatePortID))Do{ OMF_LoadData(StatePortID,(size of)struct StateInputStruct, StateInputStruct);if(StateInputStruct.MessageTyPe==1){/*設(shè)定狀態(tài)*/ MyLocalState=StateInputStruct.StateValue; MyStateWrite=3;}if(StateInputStruct.MessageTyPe==2)/*設(shè)定狀態(tài)*/ MyStateWrite=4;if(StateInputStruct.MessageTyPe==5)/*接收到釋放*/ MyStateWrite=6; /*發(fā)送釋放ACK*/if(StateInputStruct.Messagetype==6/*確認(rèn)他人收到釋放ACK*/exit();}while OMF_ReadData(StatePortID);if(M7StateWrite==3){/*設(shè)定ack*/StateOutputStruct.MessageTyPe=3;MyStateWrite=0;OMF_WriteData(StatePortID,(sjze of)struct StateOutputStruct, StateOutputStruct;}if(MyStateWrite==4){/*獲取ack*/StateOutputStruct.MesageType=4;StateOutputStruct.StateValue=MyLocalState;MyStateWrite=0;OMF_WriteData(StatePortID,(size of)struct StateOutputStruct, StateOutputStruct);}if(MyStateWrite=6){/*消除ack*/StateOutputStruct.Messagetype=6;MyStateWrite=0;OMF_WriteData(StatePortID,(size of)struct StateOutputStruct, StateOutputStruct);}OMF_Release(StatePortID);OMF_Trigger(StatePortID);}/*StatePortID的IF ADVANCED結(jié)束*/if(OMF_Advanced(ServicePortID)){do{OMF_LoadData(ServicePortID,(size of)struct ServiceInputStruct, ServiceInputStruct);If((ServiceInputStruct.MessageType==OM_SQUARE_OUTPUT)‖ (ServiceInputStruct.Messagetype=={OM_SUMMATION_OUTPUT)){ //啟動(dòng)器的獨(dú)立事務(wù)結(jié)束MyLocalState=0;DisplayMessage(ServiceInputStruct.Data);/*顯示響應(yīng)*/}}while OMF_ReadData(ServicePortID);if(Userinput)OMF_WriteData(ServicePortID,(size of)struct ServiceOutputStruct,ServiceOutputStruct);//開始事務(wù)UserInput=0;}OMF_Release(ServicePortID);OMF_Trigger(ServicePortID);}/*ServicePortID的IF ADVANCED結(jié)束*///*顯示響應(yīng)和數(shù)據(jù)值后,操作類型的PrompUser*////*然后用適當(dāng)值設(shè)定ServiceOutputStruct Datastructure*// if(USER_WANTS_TOSEND_SQUARE){ServiceOutputStruct.MessageType=OM_SQUAREServiceOutputStruct.Data=InputData from the user;//*將Userinput標(biāo)志設(shè)為1*//Userinput=1;}else{ServiceOutputStruct.Messagetype=OM_SUMMATIONServiceOutputStruct.Data=InputData from the user;//*將Userinput標(biāo)志設(shè)為1*// UserInput=1}}/*無(wú)窮循環(huán)*/}/*主程序結(jié)束*///Object 01的源代碼結(jié)束//]]></pre>在程序塊98中,各個(gè)實(shí)現(xiàn)的對(duì)象30利用返回一個(gè)對(duì)象版本號(hào)的管理結(jié)構(gòu)19進(jìn)行注冊(cè)。對(duì)象的測(cè)試可在由預(yù)排階段57的源代碼所指明的網(wǎng)絡(luò)和由集成測(cè)試階段58所指明的網(wǎng)絡(luò)中得到執(zhí)行。然后,開發(fā)者利用管理結(jié)構(gòu)19注冊(cè)對(duì)象。例如,開發(fā)者D1可以輸入表11中所示的信息。
表11ObjectID=01
管理結(jié)構(gòu)19返回正確的對(duì)象版本號(hào)。在這種情況下,它給開發(fā)者D1返回版本1.0。管理者D2和D3也類似地注冊(cè)他們各自的對(duì)象信息。對(duì)他們來(lái)說(shuō),管理結(jié)構(gòu)19都返回1.0作為版本號(hào)。
對(duì)象和接口可在網(wǎng)絡(luò)應(yīng)用程序的開發(fā)中發(fā)展。在開發(fā)期間,對(duì)象的版本可能會(huì)變得不兼容,其原因如下接口版本可能不匹配;可能出現(xiàn)不同次數(shù)的利用管理結(jié)構(gòu)19進(jìn)行的對(duì)象30的注冊(cè);或者舊版本的對(duì)象30被刪除。圖10是一種用于確定在環(huán)境10中的可兼容應(yīng)用的方法的流程框圖。在程序塊101中,確定一個(gè)對(duì)象列表以用于對(duì)象版本和接口版本的合并。其中各列的名稱分別是ObjectID;ObjectVersion(對(duì)象版本)和Interface Id(接口Id)(例如1,2,3,4)。與各列相關(guān)的數(shù)值是和特定接口有關(guān)的各接口版本。對(duì)象版本列代表了對(duì)象的版本。在一個(gè)優(yōu)選實(shí)施例中,對(duì)象30按照這樣一種方式被插入到對(duì)象列表中,即,將m個(gè)應(yīng)用程序保留在一起作為一個(gè)單塊,而只增加對(duì)象的版本號(hào),這樣就可為接口版本<I1…Im>的每個(gè)唯一組合找出全部第m個(gè)應(yīng)用程序。
在一個(gè)優(yōu)選實(shí)施例中,對(duì)象列表被建立并增大。因此,對(duì)每個(gè)接口的唯一版本來(lái)說(shuō),對(duì)象版本也保持增大。所以,隨著接口的任何固定和較新版本的建立,它們將被插入到對(duì)象列表中以使列表增大。
所有對(duì)象列表都按照由T表示的對(duì)象列表序號(hào)得到排序。應(yīng)用程序接口的序號(hào)由I表示。對(duì)象30可擁有由Oimax表示的對(duì)象所具有最大接口數(shù)的多個(gè)接口。可以假設(shè),網(wǎng)絡(luò)應(yīng)用60中所有接口34,1-4,64和63a-c都在發(fā)展。隨著應(yīng)用程序開始發(fā)展,沒有接口在一段較長(zhǎng)的時(shí)間周期內(nèi)不發(fā)生變化(當(dāng)與應(yīng)用程序中的其它接口相比較時(shí))。應(yīng)用這種假設(shè)的目的是為了限制在以下所述的數(shù)據(jù)列表選擇方法的聯(lián)接操作的中間階段中的記錄數(shù)目,其中N是對(duì)象版本在對(duì)象列表中的可變數(shù)目。分布式選擇方法的復(fù)雜性是N log N。
表12顯示了一個(gè)在圖6所示應(yīng)用網(wǎng)絡(luò)60中使用的對(duì)象列表的具體應(yīng)用。例如,對(duì)象01的版本1.0使用了接口1和4,而且各接口的接口版本都是1.0。
表12為應(yīng)用程序發(fā)展而獲得的關(guān)系表1 ObjectID ObjectVer Interface Ver ID1 Interface Ver ID401 1.0 1.0 1.001 1.1 1.0 1.0表2 ObjectID ObjectVer Interface Ver ID2 Interface Ver ID402 1.0 1.0 1.002 1.1 1.0 1.002 1.2 1.0 1.1表3 ObjectID ObjectVer Interface Ver ID3 Interface Ver ID403 1.0 1.0 1.003 1.1 1.0 1.1例如,如表12所示,對(duì)象1含有兩個(gè)對(duì)象版本1.0和1.1。如果為Interface ID4建立一個(gè)較新的版本,則Interface Ver 1.0和InterfaceID1以及接口版本1.0被插入到Object Ver 1.0與Object Ver 1.1之間。新的對(duì)象版本將被分配給Object Ver 1.0與Object Ver 1.1之間的一個(gè)對(duì)象版本,例如,ObjectVer 1.01。
在程序塊102中,整個(gè)列表根據(jù)版本號(hào)得到排序。如果各接口版本的唯一組合有新的實(shí)現(xiàn),則已排序列表中將使用組合的最新版本。例如,對(duì)象2包含與接口版本2和4具有相同組合的對(duì)象版本1.0和1.1,如表10所示。對(duì)象版本1.1是該組合的第m個(gè)接口版本中的最新版本。對(duì)象版本1.1在不改變接口版本的缺陷修復(fù)之后被確定。較新的對(duì)象版本1.1被插入到已排序的列表中,以使多個(gè)應(yīng)用保持作為聯(lián)合的程序塊。
表13對(duì)象版本排序之后的對(duì)象02
在程序塊103中,前兩個(gè)對(duì)象列表利用公共接口id得到排序。例如,對(duì)象01和對(duì)象02含有一個(gè)公共的接口ID4。
表14顯示了根據(jù)接口ID4對(duì)對(duì)象01和對(duì)象02進(jìn)行排序表14根據(jù)接口ID4對(duì)對(duì)象01和對(duì)象02進(jìn)行的排序
在程序塊104中,前兩個(gè)對(duì)象列表根據(jù)應(yīng)用程序60的所有公共基本服務(wù)接口64被合并起來(lái),從而形成了一個(gè)中間合并結(jié)果,如表15所示。如果對(duì)象列表之間有多個(gè)公共接口,若所有公共接口的相應(yīng)接口版本號(hào)相互匹配,則多個(gè)通過(guò)“AND”條件而確定出來(lái)的對(duì)象版本將被輸出。
表15將排序的表1和表2合并之后的中間輸出
在程序塊104中,在緊接最終結(jié)果之前,下一個(gè)對(duì)象的對(duì)象列表根據(jù)一個(gè)公共接口ID得到排序。對(duì)象03與對(duì)象01和對(duì)象02共享一個(gè)公共接口ID4。表16顯示了根據(jù)接口ID4對(duì)對(duì)象03進(jìn)行排序之后的輸出??芍貜?fù)執(zhí)行程序塊103-105以處理所有對(duì)象列表。
表16根據(jù)接口ID=4對(duì)對(duì)象03進(jìn)行的排序
在程序塊106中,通過(guò)將中間結(jié)果與已排序的由前面步驟所確定的下一個(gè)對(duì)象合并起來(lái),就可確定最終的組合。表17顯示了對(duì)象01、02和03的最終合并結(jié)果。
表17最終合并輸出(所有部分命令兼容系統(tǒng))
上述例子的復(fù)雜性是NLOG(N)+2N圖11A-11B顯示了上述例子的發(fā)展。方框狀的行代表了相應(yīng)的對(duì)象因缺陷修復(fù)或改變接口版本而進(jìn)行的發(fā)展。右側(cè)的圓圈行則代表了相應(yīng)的接口正在發(fā)展以滿足變化的應(yīng)用需求。連接沿表示對(duì)象版本所使用的接口版本。圖11B中可兼容系統(tǒng)由CS-I、CS-II和CS-III表示。其相應(yīng)的接口版本顯示在右側(cè)。第一個(gè)兼容系統(tǒng)是CS-I。對(duì)對(duì)象02版本1.0的缺陷修復(fù)將導(dǎo)致產(chǎn)生一個(gè)新的對(duì)象02版本1.1以及第二個(gè)兼容系統(tǒng)CS-II。改變接口ID4的需求將導(dǎo)致接口ID 4版本1.0變成接口版本1.1以及第三個(gè)兼容系統(tǒng)CS-III。
圖12顯示了人工管理結(jié)構(gòu)19對(duì)程序塊103的一個(gè)應(yīng)用,其目的是為了從對(duì)象01、對(duì)象02和對(duì)象03獲得共享的接口信息。對(duì)象01、對(duì)象02和對(duì)象03中每一個(gè)都可分布在多個(gè)管理對(duì)象42上,它們分別被稱為M1、M2和M3。對(duì)對(duì)象01、對(duì)象02和對(duì)象03中的每個(gè)對(duì)象來(lái)說(shuō),人工管理者對(duì)象42將給其分配增加的對(duì)象版本號(hào)。例如,表15中所示的各個(gè)對(duì)象列表都可在一個(gè)單獨(dú)的管理對(duì)象下得到管理。對(duì)象列表中的列表數(shù)目取決于已得到管理對(duì)象42檢查的對(duì)象版本的數(shù)目。管理對(duì)象42能夠執(zhí)行程序塊103-105,因?yàn)楣芾韺?duì)象42擁有與已保存的分布在各個(gè)管理對(duì)象42當(dāng)中的接口有關(guān)的信息。人工管理者對(duì)象44審驗(yàn)來(lái)自管理對(duì)象42的程序塊103-105的結(jié)果,并執(zhí)行程序塊106和107。
人工管理結(jié)構(gòu)19可與生命周期結(jié)構(gòu)20交互。在規(guī)范化階段52中,對(duì)象30的接口id由人工管理者對(duì)象44指定,并被管理對(duì)象42傳送給開發(fā)者。開發(fā)者完成實(shí)現(xiàn)階段54,然后執(zhí)行單個(gè)單元的測(cè)試。應(yīng)用的對(duì)象利用管理對(duì)象42得到注冊(cè)。接口id、相關(guān)的接口版本號(hào)以及與被注冊(cè)的對(duì)象30有關(guān)的源和IDL文件都被傳送給管理對(duì)象42。例如,含有兩個(gè)接口id(1和4)的對(duì)象01將以下信息傳送給管理對(duì)象42,如表18所示。
表18對(duì)象ID-01信息
管理對(duì)象42返回正確的對(duì)象版本號(hào)。管理對(duì)象對(duì)(例如)如下情況一直保持跟蹤,即,要注冊(cè)的對(duì)象30的當(dāng)前版本是否已得到注冊(cè),而且此當(dāng)前注冊(cè)是一個(gè)對(duì)接口版本組合的較新實(shí)現(xiàn)。在管理對(duì)象42返回下一個(gè)中間對(duì)象版本號(hào)的情況下,它從接口版本組合的基本對(duì)象版本開始。如果對(duì)象30的當(dāng)前版本尚未得到注冊(cè),如果人工管理者對(duì)象44沒有指定任何增大的接口版本組合號(hào),則對(duì)于新的接口版本組合,管理對(duì)象42將為該組合返回一個(gè)全新的對(duì)象版本。否則,管理對(duì)象42將返回一個(gè)由人工管理者對(duì)象44指定的號(hào)。注冊(cè)過(guò)程中的故障將導(dǎo)致開發(fā)者重新進(jìn)行注冊(cè)。
在規(guī)范和面向?qū)ο蠓治鲭A段52開始時(shí),各個(gè)對(duì)象30的全局接口id被指定入管理對(duì)象42。相應(yīng)的開發(fā)者開始從管理對(duì)象42中獲取該信息。對(duì)各個(gè)對(duì)象30來(lái)說(shuō),人工管理者對(duì)象44可以在管理對(duì)象42中建立一個(gè)最新版本(MRV)的Object ID列表,該表的列名稱是與相應(yīng)的對(duì)象ID有關(guān)的接口id號(hào)。與列相關(guān)的值范圍是與接口相關(guān)的接口版本號(hào)。MRV Object ID列表在每次成功注冊(cè)之后都得到更新。對(duì)每個(gè)接口版本的唯一組合來(lái)說(shuō),管理對(duì)象42只保留該表中的最新應(yīng)用。人工管理者對(duì)象42利用該表來(lái)控制程序塊106以在全部共享接口上執(zhí)行一個(gè)合并操作。對(duì)由對(duì)象30的人工管理者對(duì)象44所建立的每個(gè)列表來(lái)說(shuō),管理對(duì)象42將創(chuàng)建另一個(gè)與Object ID有關(guān)的被稱為所有版本Object ID表的列表,并且使所有的對(duì)象版本都與該表中的對(duì)象相關(guān)聯(lián)。人工管理者對(duì)象44并不知道這個(gè)列表。當(dāng)使用增大對(duì)象版本號(hào)的策略時(shí),人工管理者對(duì)象44將為接口版本的各個(gè)唯一組合指定遞增的對(duì)象版本號(hào)。管理對(duì)象42可以更新MRV Object ID表中的這個(gè)信息。因此,所有的接口版本以及人工管理者對(duì)象44對(duì)起始對(duì)象版本號(hào)的選擇都被輸入到MRV Object ID列表之中。
對(duì)每個(gè)接口版本的新組合的注冊(cè)來(lái)說(shuō),管理對(duì)象最好按照1,2,3,4,5,…n的順序返回下一個(gè)號(hào)以作為對(duì)象版本。將被提出的下一個(gè)版本號(hào)將被管理對(duì)象42從MRV對(duì)象ID列表中找到。例如,管理對(duì)象42為輸入的接口版本的第一個(gè)唯一組合返回1.0。對(duì)其后具有相同接口版本組合的多個(gè)應(yīng)用來(lái)說(shuō),管理對(duì)象將順序返回1.1,1.2,1.3,…1.n。當(dāng)接口版本的第二個(gè)唯一組合被輸入時(shí),管理對(duì)象42將返回2.0。
如果沒有MRV的記錄,這就意味著它是一個(gè)全新的接口版本組合,并且人工管理者對(duì)象44尚未指定任何開始的對(duì)象版本號(hào)。對(duì)這種組合來(lái)說(shuō),管理對(duì)象42通過(guò)(從MRV Object ID列表中)找出從1.0開始已使用到哪個(gè)版本號(hào)而按1,2,…的順序返回下一個(gè)版本號(hào)。管理對(duì)象42更新MRV對(duì)象ID列表和ALL VERSIONS對(duì)象ID列表。
如果存在一個(gè)最新的版本,并且MRV對(duì)象ID列表中的MRV對(duì)象版本等于-1,則說(shuō)明它是一個(gè)全新的接口版本組合,但是人工管理者對(duì)象44已經(jīng)為該組合指定了一個(gè)起始對(duì)象版本號(hào)(MRV對(duì)象版本為-1表明到目前為止還沒有版本存在)。在這種情況下,管理對(duì)象42將向開發(fā)者返回一個(gè)由人工管理者對(duì)象44指定的版本號(hào)。管理對(duì)象42將MRV對(duì)象ID列表元組MRV對(duì)象版本(舊版本為-1)修改成人工管理者對(duì)象44所指定的版本號(hào)(代表第一個(gè)最新的版本號(hào))。之后,ALLVERSIONS Object ID列表利用一個(gè)含有對(duì)象版本信息的新元組來(lái)更新。
如果存在一個(gè)最新的版本,并且MRV Object ID列表中的MRVObject版本不等于-1,則說(shuō)明它是一個(gè)接口版本的重復(fù)組合。對(duì)該組合來(lái)說(shuō),一個(gè)搜索操作將被執(zhí)行以找出MRV對(duì)象ID列表中的對(duì)象版本。該搜索操作將返回對(duì)象版本的最新版本號(hào)。例如,它可以是1.0、1.1或1.2,等等,即,版本號(hào)加上0.1。MRV對(duì)象ID列表中的MRV對(duì)象版本項(xiàng)被修改以反映出所獲得的較新版本。ALLVERSIONS對(duì)象ID列表也被更新成較新的版本號(hào)。該版本號(hào)被管理對(duì)象42返回給開發(fā)者。
如果一套對(duì)象版本具有相同的與相應(yīng)接口有關(guān)的接口版本號(hào),則它們就是“接口兼容的”。如果一套對(duì)象版本共享了一個(gè)接口,則它們形成了一個(gè)“兼容應(yīng)用”。相互聯(lián)系的這套對(duì)象版本都是接口兼容的。當(dāng)全部具有系統(tǒng)接口id的列相等,并且應(yīng)將相關(guān)的對(duì)象版本和接口版本提出(輸出中的列數(shù)等于對(duì)象數(shù)加上應(yīng)用中的接口數(shù))時(shí),為了獲取所有的唯一兼容系統(tǒng)(局部次序),就應(yīng)將所有的MRV ObjectID列表合并起來(lái)。因此,內(nèi)部合并是根據(jù)多個(gè)共享接口的“與”條件而執(zhí)行的。人工管理者對(duì)象44可以做出一個(gè)相同的SQL詢問并將其發(fā)送給管理對(duì)象42。管理對(duì)象42執(zhí)行此詢問并將所有的元組返回給人工管理者對(duì)象44。從所有兼容系統(tǒng)的部分命令中,人工管理者對(duì)象可決定為應(yīng)用選擇一兼容系統(tǒng)。
在分布式管理網(wǎng)絡(luò)的應(yīng)用中,人工管理者對(duì)象44為每個(gè)管理對(duì)象域?qū)懭雴为?dú)的SQL串。各個(gè)SQL串只含有局部對(duì)象,但人工管理者對(duì)象44既獲取局部對(duì)象也獲取共享接口。各管理對(duì)象42不能對(duì)其出口接口做出完整的決定。各管理對(duì)象42都執(zhí)行SQL串并將結(jié)果返回給人工管理者對(duì)象44。當(dāng)獲得來(lái)自全部管理對(duì)象42的響應(yīng)之后,人工管理者對(duì)象44將根據(jù)所有共享接口對(duì)所有中間結(jié)果執(zhí)行一個(gè)較高水平的合并,從而獲得相應(yīng)的對(duì)象和接口版本。這種分布式選擇算法的復(fù)雜性為NLog(N),其中N是對(duì)象版本數(shù)目(對(duì)一特定接口版本值的選擇性由一常數(shù)限制)。
以下說(shuō)明了人工管理者對(duì)象44所支持的多個(gè)命令的例子。
1.CreateObject/DestroyObject人工管理者對(duì)象44將此命令與ObjectID、ObjectVersion和StartPortID一起發(fā)送給管理對(duì)象42。ObjectID和ObjectVersion唯一地識(shí)別了待運(yùn)行的對(duì)象30程序。管理對(duì)象42在其自身的數(shù)據(jù)庫(kù)內(nèi)進(jìn)行探查,該數(shù)據(jù)庫(kù)內(nèi)保存著與ObjectID和ObjectVersion有關(guān)的信息。當(dāng)開發(fā)者成功地通過(guò)檢查時(shí),管理對(duì)象42應(yīng)已對(duì)該數(shù)據(jù)庫(kù)信息進(jìn)行了更新。管理對(duì)象42將提取可執(zhí)行信息和變量,并將所有的DLL文件(如果有)拷貝到正確的目錄之中。利用這種OS級(jí)系統(tǒng)命令,對(duì)象30與命令行變量一起得到執(zhí)行。前兩個(gè)變量是其中有時(shí)鐘服務(wù)器運(yùn)行的主機(jī)名,以及其中父時(shí)鐘受到輪詢以用于子連接的套接字id。第三個(gè)變量是StartPortID,它代表了對(duì)象30在整個(gè)應(yīng)用網(wǎng)絡(luò)中的端口名空間。不會(huì)有對(duì)象30擁有相同的端口名空間。當(dāng)接收到來(lái)自低級(jí)系統(tǒng)的對(duì)象30的成功建立時(shí),管理對(duì)象42將向管理程序44返回一個(gè)成功信息。否則,它將返回一個(gè)故障信息。破壞對(duì)象可利用一殺/滅協(xié)議通過(guò)狀態(tài)端口(利用一種適當(dāng)?shù)脑O(shè)定操作)得到執(zhí)行。
2.CreatePort/DestroyPort該命令(被管理對(duì)象)用于在管理對(duì)象中創(chuàng)建對(duì)象端口32,以將它們動(dòng)態(tài)地調(diào)整應(yīng)用的不同交互。管理對(duì)象端口32被用于獲取對(duì)象30和時(shí)鐘的狀態(tài)。管理對(duì)象42的端口32可被用于禁止/使能與外界的透明交互。禁止/使能交互的操作是利用以下將說(shuō)明的HoldClock/Release命令而實(shí)現(xiàn)的。人工管理者對(duì)象44可將待被創(chuàng)建的PortID、InterfaceID以及InterfaceVersion發(fā)送出去。最后兩個(gè)值被用于根據(jù)與該接口版本相關(guān)的IDL說(shuō)明以及產(chǎn)生了不同單元在結(jié)構(gòu)中的長(zhǎng)度和偏移的IDLBackend來(lái)提取對(duì)象端口32的長(zhǎng)度。CreatePort方法含有兩個(gè)參數(shù)代表ServiceID的PortID、以及對(duì)象端口32的長(zhǎng)度。對(duì)象端口32的長(zhǎng)度取決于InterfaceID、Interface Version以及結(jié)構(gòu)。創(chuàng)建的對(duì)象端口長(zhǎng)度32利用管理對(duì)象42得到注冊(cè),從而使人工管理者對(duì)象44能夠通過(guò)保持PortID來(lái)訪問其服務(wù)。當(dāng)網(wǎng)絡(luò)應(yīng)用不再需要它們的服務(wù)時(shí),在同一條線上的對(duì)象端口32可被破壞。
3.CreateClock/DestroyClock該命令被用于在管理對(duì)象42中創(chuàng)建一個(gè)時(shí)鐘。它只有一個(gè)參數(shù)ClockID,它在環(huán)境10中必須是唯一的。一旦帶有ClockID的時(shí)鐘被建立,它將被管理系統(tǒng)注冊(cè)以訪問其服務(wù)。當(dāng)時(shí)鐘被建立時(shí),它帶有基本相位。任何與調(diào)諧至該相位的對(duì)象端口32會(huì)立刻得到首先升級(jí)。當(dāng)獲得首先升級(jí)之后,就可以建立其它的相位并調(diào)諧更多的對(duì)象端口32(它是特定應(yīng)用)。如果應(yīng)用程序不再需要其服務(wù),也可將時(shí)鐘破壞。
4.AddPhase/Destroy Clock Phase該命令用于相對(duì)于時(shí)鐘的基本相位建立一個(gè)動(dòng)態(tài)提取的相位。然后對(duì)象端口32被與該提取的相位調(diào)諧。通過(guò)增加較新的相位以進(jìn)行觀察和控制,就可改變應(yīng)用程序的行為。類似地,時(shí)鐘相位也可被破壞。增加相位的方法含有兩個(gè)參數(shù)BaseClockID和RefinedClockID。時(shí)鐘的各個(gè)相位是由時(shí)鐘提供的一個(gè)單獨(dú)服務(wù),而且人工管理者對(duì)象44可根據(jù)需求單獨(dú)訪問它們。
5.Tune/Detune Port該命令用于將不同的對(duì)象端口32與應(yīng)用程序中不同時(shí)鐘的不同相位調(diào)諧(連接)。這是一個(gè)與特定的應(yīng)用相關(guān)的,它需要三個(gè)參數(shù)PortID、ClockID和PhaseHandle(基本相位的意思是ClockID,而其它相位則使用如上指定的RefinedClockID)。當(dāng)它們的角色是完全作為不同交互的一部分時(shí),對(duì)象端口32也可被解調(diào)諧。
6.Set/Get tate of objects為了設(shè)定/獲取對(duì)象30的狀態(tài),人工管理者對(duì)象44必須首先識(shí)別出狀態(tài)InterfaceID及其接口版本。當(dāng)為一個(gè)對(duì)象的狀態(tài)接口獲取IDL說(shuō)明之后,人工管理者對(duì)象44將其送給IDL Backend。Backend IDL編譯程序?yàn)樗薪涌诮Y(jié)構(gòu)的各個(gè)單元產(chǎn)生FieldNumber、FieldType、FieldOffset以及FieldSize。它還能產(chǎn)生對(duì)象端口32的實(shí)際長(zhǎng)度。人工管理者47需要理解數(shù)據(jù)包35的各個(gè)單元和狀態(tài)。這種特征對(duì)交互的透明訪問來(lái)說(shuō)是必需的。例如,對(duì)InterfaceID=1,2,3來(lái)說(shuō),IDL Backend將輸出FieldNumber FieldType FieldName FieldSize FieldOffset Data1 INT MessageType 2 0 12 INT StateValue 2 2 0為了設(shè)定狀態(tài),人工管理者對(duì)象44可以對(duì)MessageTypel的數(shù)據(jù)段進(jìn)行寫入。人工管理者對(duì)象44然后寫入StateValue。從狀態(tài)的IDL中可以獲取與1.0等有關(guān)的信息。因此,人工管理者對(duì)象44做出上述原始字節(jié)(上述例子中信息為4字節(jié))。然后,設(shè)定命令與PortID原始字節(jié)數(shù)據(jù)及原始字節(jié)的長(zhǎng)度一起被發(fā)送給與該對(duì)象的狀態(tài)接口相連的管理對(duì)象42。管理對(duì)象32還可通過(guò)接收對(duì)象的狀態(tài)InterfaceID和InterfaceVersion以獲取原始字節(jié)的長(zhǎng)度。一旦管理對(duì)象端口32接收到設(shè)定命令,它會(huì)通過(guò)其對(duì)象端口32在升級(jí)時(shí)將此命令寫入對(duì)象30。當(dāng)接收到來(lái)自對(duì)象30的確認(rèn)信息時(shí),管理對(duì)象42向人工管理者對(duì)象44送回一個(gè)確認(rèn)信息。
為了獲取狀態(tài),人工管理者對(duì)象44可以對(duì)MessageTypel的數(shù)據(jù)段進(jìn)行寫入。從狀態(tài)的IDL獲取與2有關(guān)的信息。與狀態(tài)設(shè)定相同的步驟被執(zhí)行。另外,人工管理者對(duì)象44利用以前的技術(shù)將來(lái)自管理對(duì)象42的原始的4字節(jié)分割成適當(dāng)?shù)木哂幸饬x的數(shù)據(jù)。已經(jīng)有方法可以使人工管理者47能夠看到具有意義的數(shù)據(jù)。例如,人工管理者47可以看到以下內(nèi)容FieldNumber FieldType FieldName FieldSize FieldOffset Data1 INT MessageType 2 0 42 INT StateValue 2 2 1MessageType=4代表Get ack的狀態(tài)值,1則表示對(duì)象的狀態(tài)7.SetState/GetState of Clocks(鏈接)(CollectBag,WriteBag)除了與對(duì)象30的狀態(tài)接口有關(guān)的結(jié)構(gòu)以外,也可使用與不同交互有關(guān)的IDL結(jié)構(gòu)。例如,可以使用InterfaceID=4,InterfaceVersion=1.0。IDLBackend產(chǎn)生如下內(nèi)容FieldNumber FieldType FieldName FieldSize FieldOffset Data1 INT MessageType 2 0 12 INT Data2 2 22
MessageType=1代表是一個(gè)OM_SQUARE操作。在交互的情況下,數(shù)據(jù)包可以擁有超過(guò)一個(gè)的單元,因此時(shí)鐘(接口)的讀寫也具有多個(gè)周期。
8.Hold/Release ClockHoldClock命令告訴管理對(duì)象42保持在規(guī)定對(duì)象端口32上的下一個(gè)升級(jí),直到獲得人工管理者對(duì)象44的通知為止。除非獲得人工管理者對(duì)象44的通知,否則管理對(duì)象42不會(huì)釋放對(duì)象端口32。與同一時(shí)鐘中的其它不同相位相連的對(duì)象端口32不會(huì)獲得升級(jí),因此它們將保持靜止穩(wěn)定狀態(tài)。人工管理者對(duì)象44可以根據(jù)需要保持升級(jí)信號(hào),以分析應(yīng)用程序的狀態(tài)。保持操作由人工管理者對(duì)象44發(fā)出的一個(gè)特定的釋放時(shí)鐘命令釋放。只有當(dāng)管理對(duì)象42向端口對(duì)象32發(fā)出釋放命令之后,對(duì)象端口32才會(huì)使調(diào)諧至下一個(gè)較高或較低的相位能夠進(jìn)行相互通信。
9.GetIDLs of Interfaces人工管理者對(duì)象44利用該命令來(lái)獲取與不同接口相關(guān)的對(duì)象30的IDL說(shuō)明。當(dāng)人工管理者對(duì)象44接收到來(lái)自管理對(duì)象42的IDL說(shuō)明時(shí),它會(huì)將這些說(shuō)明拷貝入一個(gè)本地?cái)?shù)據(jù)庫(kù)中。這種特征使得人工管理者47能夠查看他們所需的IDL。
10.Regist/Deregister ports這些命令使對(duì)象30中所建立的對(duì)象端口32能夠利用管理對(duì)象42得到注冊(cè)。只有注冊(cè)之后,人工管理者對(duì)象44才能訪問它所提供的服務(wù)。人工管理者對(duì)象44在應(yīng)用系統(tǒng)中為各個(gè)對(duì)象30定義了端口名稱空間。當(dāng)應(yīng)用程序不再需要端口服務(wù)時(shí),可對(duì)其取消注冊(cè)。
人工管理結(jié)構(gòu)19可被用于對(duì)一個(gè)應(yīng)用進(jìn)行穩(wěn)定和透明的設(shè)定。圖12顯示了由人工管理者對(duì)象44設(shè)定的網(wǎng)絡(luò)應(yīng)用的一個(gè)例子。人工管理者對(duì)象44設(shè)定網(wǎng)絡(luò)應(yīng)用109,指定初始條件,初始化及分析變化并控制版本的發(fā)展。人工管理者對(duì)象44根據(jù)對(duì)象01,02和03確定對(duì)象01,02和03的狀態(tài)對(duì)象,以及端口61a-c和基本服務(wù)對(duì)象端口62a-c的相關(guān)狀態(tài)。人工管理者對(duì)象44為對(duì)象01,02和03的接口接收全部IDL說(shuō)明。backend IDL編譯器能夠?yàn)榻邮盏降慕?jīng)修改的CORBA IDL提供一個(gè)有意義的解釋。圖13顯示了用于設(shè)定交互網(wǎng)絡(luò)110的方法的流程圖。在開始對(duì)網(wǎng)絡(luò)應(yīng)用進(jìn)行設(shè)定之前,INE先被激活,如圖111的程序塊所示。參考圖12,INE接口45被激活。人工管理者對(duì)象44和管理對(duì)象42能夠執(zhí)行以下方法來(lái)創(chuàng)建和注冊(cè)一個(gè)INE端口。
OMF-CreatePort(ManagementINEPortID,Sizeof(Struct INE))//管理中的端口1OMF_Register(ManagementINEPortID)OMF_CreatePort(ManagerINEPortID,SizeOf(StructINE))OMF_Register(ManagerINEPortID)參考圖13,在程序塊112中,一個(gè)時(shí)鐘被建立并且被人工管理者對(duì)象44和管理對(duì)象42注冊(cè)。時(shí)鐘86m被人工管理者對(duì)象44建立并被人工管理者對(duì)象44和管理對(duì)象42注冊(cè),如圖12所示。例如,一個(gè)具有ClockID=50的時(shí)鐘在命令OMF_CreateClock(ClockID)下被建立INE端口85a利用以下命令被調(diào)諧至?xí)r鐘86m的基本相位。
OMFTunePort2CIock(ManagementINEPortID(Port 1),ClockID,ClockID);OMF TunePort2Clock(ManagerINEPortID,ClockID,ClockID)在程序塊113中,人工管理者對(duì)象44指示管理對(duì)象42為各個(gè)接口建立端口。例如,在網(wǎng)絡(luò)應(yīng)用109中,有四個(gè)端口被建立,各端口分別對(duì)應(yīng)于接口ID 1,2,3和4。人工管理者對(duì)象44將接口ID和接口版本發(fā)送出去。管理對(duì)象端口被分配以端口2,端口3,端口4和端口5。管理對(duì)象端口2-5的長(zhǎng)度由人工管理者對(duì)象44建立。例如,管理對(duì)象端口2-5每個(gè)可以具有4字節(jié)的長(zhǎng)度,該長(zhǎng)度由應(yīng)用程序指定。
在程序塊114中,人工管理者對(duì)象44指示管理對(duì)象42創(chuàng)建對(duì)象。例如,人工管理者對(duì)象44向管理對(duì)象42發(fā)送一個(gè)信息以創(chuàng)建3個(gè)對(duì)象ObjectID為1,ObjectVer為1.0;ObjectID為2,ObjectVer為1.0;ObjectID為3,ObjectVer為1.0。這三個(gè)對(duì)象中的每個(gè)對(duì)象都建立并注冊(cè)其相應(yīng)的狀態(tài)對(duì)象端口61a-c及基本服務(wù)對(duì)象端口62a-c。
在程序塊115中,管理對(duì)象42建立多個(gè)時(shí)鐘以用于將各對(duì)象狀態(tài)端口61a-c與管理對(duì)象狀態(tài)端口62a-c分別連接起來(lái)。例如,ClockID=5被建立以將對(duì)象01的狀態(tài)端口與為對(duì)象01建立的管理狀態(tài)端口Port 2連接起來(lái)。ClockID=2被建立以將對(duì)象02的狀態(tài)端口與為對(duì)象02建立的管理狀態(tài)端口Port 3連接起來(lái)。ClockID=3被建立以將對(duì)象03的狀態(tài)端口與為對(duì)象03建立的管理狀態(tài)端口Port 4連接起來(lái)。ClockID=4被建立以將用于InterfaceID=4的管理狀態(tài)端口Port 5與基本相位連接起來(lái)。
在程序塊116中,人工管理者對(duì)象44對(duì)對(duì)象狀態(tài)端口和管理狀態(tài)端口2-4進(jìn)行調(diào)諧。例如,對(duì)象01的狀態(tài)端口和管理狀態(tài)端口Port2被調(diào)諧至ClockID=1的基本相位。對(duì)象02的狀態(tài)端口和管理狀態(tài)端口Port3被調(diào)諧至ClockID=2的基本相位。對(duì)象03的狀態(tài)端口和管理狀態(tài)端口Port4被調(diào)諧至ClockID=3的基本相位。管理狀態(tài)端口Port5被調(diào)諧至ClockID=4的基本相位。
在程序塊117中,人工管理者對(duì)象44初始化對(duì)象30的狀態(tài)。例如,人工管理者對(duì)象44做出一個(gè)4字節(jié)的原始數(shù)據(jù)(利用IDL輸出)以將對(duì)象30的狀態(tài)初始設(shè)定為零,并通過(guò)INE接口45將其發(fā)送給管理對(duì)象42。管理對(duì)象42將此4個(gè)字節(jié)寫入與相應(yīng)管理狀態(tài)端口連接的正確端口。管理對(duì)象42接收到的確認(rèn)信息通過(guò)INE 45被送回給人工管理者對(duì)象44。所有對(duì)象的狀態(tài)重復(fù)執(zhí)行同樣的操作對(duì)。
人工管理者對(duì)象44指定保持與管理對(duì)象42的管理狀態(tài)端口5相關(guān)的時(shí)鐘。在緊接的下一個(gè)端口進(jìn)程中,時(shí)鐘被管理對(duì)象42保持。管理對(duì)象不會(huì)釋放當(dāng)前設(shè)定。它向人工管理者對(duì)象44發(fā)出一個(gè)確認(rèn)信息。之后,人工管理者對(duì)象44可以增加一個(gè)相位,并將三個(gè)應(yīng)用服務(wù)端口62a-c動(dòng)態(tài)地調(diào)諧至?xí)r鐘的新相位。人工管理者對(duì)象44命令管理對(duì)象42釋放時(shí)鐘。當(dāng)管理對(duì)象42執(zhí)行完來(lái)自人工管理者對(duì)象44的命令之后,應(yīng)用服務(wù)端口將獲取進(jìn)程和開始的空數(shù)據(jù)包。此時(shí),對(duì)象01可以向其它對(duì)象02、03發(fā)出任何請(qǐng)求。已被調(diào)諧至基本相位的對(duì)象必須傳送數(shù)據(jù)并保持端口始終被釋放,直到人工管理者對(duì)象44發(fā)出命令要求保持時(shí)鐘為止,這樣就可保證此時(shí)應(yīng)用的連續(xù)過(guò)程。對(duì)應(yīng)用的設(shè)定到此結(jié)束。人工管理者對(duì)象44可以持續(xù)監(jiān)視對(duì)象狀態(tài)和時(shí)鐘的狀態(tài)。管理對(duì)象端口42在應(yīng)用中可被動(dòng)態(tài)地解除調(diào)諧,直到有需要進(jìn)行如下所述的動(dòng)態(tài)再配置為止。
網(wǎng)絡(luò)應(yīng)用的動(dòng)態(tài)再配置包括以下內(nèi)容使用新的對(duì)象版本,在不關(guān)閉現(xiàn)有對(duì)象服務(wù)的情況下從一應(yīng)用網(wǎng)絡(luò)中增加和刪除對(duì)象狀態(tài)以及服務(wù)端口。例如,缺陷修復(fù)就可產(chǎn)生較新的版本。例如,如果獨(dú)立的交互已完成或在一中間點(diǎn)上,對(duì)象端口可被調(diào)諧或解除調(diào)諧。在本發(fā)明所述的方法中,動(dòng)態(tài)再配置發(fā)生在應(yīng)用的靜態(tài)點(diǎn)上。靜態(tài)點(diǎn)由管理對(duì)象42通過(guò)以下的交互結(jié)構(gòu)16建立,在該結(jié)構(gòu)16中,管理對(duì)象42只接收在所有對(duì)象端口全被釋放且至少有一個(gè)端口被觸發(fā)時(shí)的進(jìn)程。此時(shí),管理對(duì)象42所接收到的進(jìn)程就是一個(gè)靜態(tài)點(diǎn)。因此,靜態(tài)是自動(dòng)實(shí)現(xiàn)的,不需要強(qiáng)迫進(jìn)入靜止?fàn)顟B(tài)中,從而在引入任何變化之前,允許對(duì)象自愿發(fā)出消息、根據(jù)時(shí)鐘采集數(shù)據(jù)、將其發(fā)送給管理對(duì)象并等待管理從時(shí)鐘內(nèi)獲取一個(gè)進(jìn)程。
圖12B顯示了實(shí)現(xiàn)靜止所需的最小破壞。應(yīng)用對(duì)象不會(huì)被強(qiáng)迫進(jìn)入靜止?fàn)顟B(tài)。對(duì)象01,02和03自發(fā)地發(fā)送出信息。時(shí)鐘采集數(shù)據(jù)并將其發(fā)送給管理對(duì)象。管理對(duì)象等待來(lái)自時(shí)鐘的升級(jí)。此舉減少了管理的復(fù)雜程度。只有當(dāng)管理對(duì)象獲取升級(jí)并擁有控制權(quán)時(shí)人工管理者對(duì)象才可引入變化。只有當(dāng)收到升級(jí)時(shí)保持操作才會(huì)被完成。管理者可以從外部清晰地知道獨(dú)立交互的完成。
圖14顯示出了網(wǎng)絡(luò)應(yīng)用109的示意圖,在此網(wǎng)絡(luò)應(yīng)用中動(dòng)態(tài)使用了一個(gè)新版本的對(duì)象?,F(xiàn)有的對(duì)象02含有兩個(gè)活動(dòng)接口狀態(tài)接口2和基本服務(wù)端口接口4。在將端口與它們相應(yīng)的時(shí)鐘相位解除調(diào)諧之前,對(duì)象02必須相對(duì)于這些接口是靜止的。首先,人工管理者對(duì)象44向管理對(duì)象42發(fā)送與InterfaceID=4的消息相關(guān)的保持時(shí)鐘信息。在與InterfaceID=4相連接的管理端口Port 5的下一個(gè)中間進(jìn)程中,時(shí)鐘被管理對(duì)象42保持。人工管理者對(duì)象44獲得關(guān)于時(shí)鐘保持的通知。在得到通知之后,人工管理者對(duì)象44獲取數(shù)據(jù)包35(未示出)。從IDL Backend編譯器所產(chǎn)生的長(zhǎng)度、類型和偏移中,人工管理者對(duì)象44就可以知道數(shù)據(jù)包35中的結(jié)構(gòu)單元。人工管理者對(duì)象44所獲得的信息是時(shí)鐘的初始條件。在這一點(diǎn)上,由于管理對(duì)象42正在保持與InterfaceID=4相關(guān)的時(shí)鐘升級(jí),所以對(duì)象01,02和03已經(jīng)自發(fā)地發(fā)出釋放信息,并且至少有一個(gè)用于先前步驟的觸發(fā)信號(hào),而且正等待下一個(gè)升級(jí)的盡早到來(lái)。在該點(diǎn)上,對(duì)象狀態(tài)01,02和03相對(duì)于該接口是穩(wěn)定的。對(duì)象01,02和03并不知道在步驟之間傳遞的消息是給誰(shuí)的,而是自發(fā)地給出數(shù)據(jù)、釋放信息以及觸發(fā)信息(如果需要的話),而獲取信息的管理對(duì)受影響的對(duì)象是透明的。人工管理者對(duì)象44可以根據(jù)共享端口InterfaceID=4并利用IDL Backend對(duì)從管理對(duì)象42接收到的原始字節(jié)進(jìn)行解碼。例如,其輸出可以是以下內(nèi)容之一Situation#1.MessageType=OMSQUARE;Data=UserInputInteger;Situation#2.MessageType=OMSUMMATION;Data=UserInputInteger;Situation#3.Messagetype=OMSQUAREOUTPUT;Data=SquaredUserInputInteger;Situation#4.MessageType=OM~SQUARE~SUMMATIONData=Summation(UserInputInteger);其目的是用對(duì)象02的版本1.1替換對(duì)象02的版本1.0。根據(jù)情況,人工管理者對(duì)象44必須將該情況映射入與當(dāng)前運(yùn)行版本相關(guān)的IDL說(shuō)明之中,并知道交互是如何進(jìn)行的以及在該時(shí)間點(diǎn)它在哪里。人工管理者對(duì)象44必須找出輸入是會(huì)否影響對(duì)象的狀態(tài)。從對(duì)象02的IDL可以建立以下情況1.如果是情況#1,則Object 01剛剛啟動(dòng)交互;Object 01的狀態(tài)為1;Object 02的狀態(tài)為0;Object 03的狀態(tài)為0;如果較舊和較新的對(duì)象版本具有相同的狀態(tài)轉(zhuǎn)變,則較舊的版本可被較新的版本替換,并且對(duì)象02的較新版本可被初始化至0。之后,讓事務(wù)處理繼續(xù),并且人工管理者對(duì)象44必須釋放所保持的時(shí)鐘。如果較舊和較新的對(duì)象版本具有不同的狀態(tài)轉(zhuǎn)變,則人工管理者對(duì)象44將必須在較新的版本中找出一個(gè)等價(jià)狀態(tài),然后讓事務(wù)處理繼續(xù)并對(duì)其執(zhí)行初始化。如果人工管理者對(duì)象44找不到一個(gè)等價(jià)狀態(tài),則它將使事務(wù)處理持續(xù)更多的步驟并再次保持它。重復(fù)上述步驟,直到獨(dú)立的事務(wù)處理在啟動(dòng)者中完成為止。在交互結(jié)束時(shí),如果需要,則所有的對(duì)象都可被替換。
2.如果是情況#2或#3或#4,則對(duì)象02的狀態(tài)為0;如果較舊和較新的對(duì)象版本具有相同的狀態(tài)轉(zhuǎn)變,則現(xiàn)在就可用較新的版本替換較舊的版本,并且對(duì)象02的較新版本必須被初始化為0。之后,讓該事務(wù)處理繼續(xù),并且人工管理者對(duì)象44必須釋放所保持的時(shí)鐘。如果較舊和較新的對(duì)象版本具有不同的狀態(tài)轉(zhuǎn)變,則人工管理者對(duì)象44將必須在較新的版本中找出一個(gè)等價(jià)狀態(tài)并對(duì)其執(zhí)行初始化。如果人工管理者對(duì)象44找不到一個(gè)等價(jià)狀態(tài),則它將使事務(wù)處理持續(xù)更多的步驟并再次保持它。重復(fù)上述步驟,直到獨(dú)立的事務(wù)處理在初始化中完成為止。在該事務(wù)處理結(jié)束時(shí),如果需要,則所有的對(duì)象都可被替換。
人工管理者47通過(guò)將情況映射入IDL說(shuō)明所能做出的判斷是較舊的對(duì)象02可在交互操作TRANSAC_NAME_SQUARESUM的任何步驟上被替換。如果人工管理者對(duì)象44在較新的對(duì)象版本中找不到一個(gè)映射狀態(tài),則它將讓事務(wù)處理再運(yùn)行另一個(gè)周期并再次保持它。重復(fù)檢查這個(gè)過(guò)程,直到事務(wù)處理在初始階段結(jié)束為止。當(dāng)需要時(shí),也可找出等同狀態(tài)。在本例中,人工管理者對(duì)象44能夠通過(guò)查看輸入而判斷出對(duì)象01,02和03的狀態(tài)。另外,在對(duì)對(duì)象30的狀態(tài)做出判斷之前,人工管理者對(duì)象44需要對(duì)象的狀態(tài)和鏈路。
例如,如果是情況#1,人工管理者對(duì)象44發(fā)現(xiàn)較新的對(duì)象版本具有這樣一種狀態(tài),該狀態(tài)可被初始化成0,并且其行為與較舊的版本相同。人工管理者對(duì)象44通知管理對(duì)象42解除對(duì)象02服務(wù)端口與時(shí)鐘的調(diào)諧。管理對(duì)象42執(zhí)行此命令。對(duì)象02將不能再交換任何進(jìn)程或數(shù)據(jù)。對(duì)象01和對(duì)象03也不能接收進(jìn)程或數(shù)據(jù),因此它們不再能相互進(jìn)行通信。人工管理者對(duì)象44向管理對(duì)象42發(fā)送一個(gè)信息以獲取對(duì)象02的狀態(tài)。管理對(duì)象42將獲得的狀態(tài)請(qǐng)求發(fā)送給對(duì)象02的對(duì)象狀態(tài)接口。對(duì)象02公布此穩(wěn)定狀態(tài),并且管理對(duì)象42將在端口3上接收到它。
管理對(duì)象42將此狀態(tài)信息返回給人工管理者對(duì)象44,而人工管理者對(duì)象44將再次了解實(shí)際的狀態(tài)信息。人工管理者對(duì)象44發(fā)出一個(gè)信息以破壞對(duì)象02。此破壞信息被發(fā)送給對(duì)象02,并且管理對(duì)象42將接收到一個(gè)ack。此時(shí),舊的對(duì)象02的狀態(tài)端口和用于連接02的狀態(tài)端口與管理對(duì)象端口3的ClockID=2被破壞。在接收到該消息之后,舊的對(duì)象02將破壞其自身以及基本服務(wù)端口62b。將此破壞消息通知人工管理者對(duì)象44。應(yīng)該注意,人工管理者對(duì)象44仍保持著在基本相位時(shí)的ClockID=4。管理對(duì)象端口3被破壞。
人工管理者對(duì)象44建立對(duì)象的新版本,例如,人工管理者對(duì)象44在管理對(duì)象端口6中建立一個(gè)端口并創(chuàng)建一個(gè)帶有ClockID=5的時(shí)鐘,然后對(duì)新的對(duì)象狀態(tài)端口進(jìn)行調(diào)諧,從而建立與時(shí)鐘的基本相位調(diào)諧的新的管理端口Port 6。如果存在一對(duì)一的映射,則人工管理者對(duì)象44將該新的對(duì)象狀態(tài)設(shè)定成從舊對(duì)象獲取的數(shù)值,否則,它會(huì)將其設(shè)定成新對(duì)象中的一個(gè)等價(jià)狀態(tài)。之后,新對(duì)象的服務(wù)端口被調(diào)諧至?xí)r鐘的相位1。由管理者在時(shí)鐘保持之后立刻接收到的時(shí)鐘數(shù)據(jù)被人工管理者對(duì)象44寫回時(shí)鐘,然后人工管理者對(duì)象44釋放時(shí)鐘。隨后,對(duì)象01,02和03的全部三個(gè)對(duì)象端口獲得升級(jí)。對(duì)象02將立刻接收到從由人工管理者對(duì)象44保持的對(duì)象01傳送來(lái)的請(qǐng)求。該應(yīng)用繼續(xù),如同其在初始配置時(shí)那樣。鄰近的對(duì)象01和對(duì)象03并不知道與對(duì)象02的替換有關(guān)的任何情況。
圖15顯示了動(dòng)態(tài)使用一個(gè)接口新版本的示意圖。例如,在InterfaceID=4中,可將其改變成含有第三個(gè)字段以表示說(shuō)明對(duì)象來(lái)源的ObjectID。
首先,人工管理者對(duì)象44將與InterfaceID=4有關(guān)的保持時(shí)鐘信息發(fā)送給管理對(duì)象42。在與InterfaceID=4相連的管理對(duì)象端口5的下一個(gè)即將的升級(jí)中,時(shí)鐘被管理對(duì)象42保持。人工管理者對(duì)象44獲取與時(shí)鐘保持有關(guān)的確認(rèn)信息。在接收到該信息后,人工管理者對(duì)象44獲取數(shù)據(jù)包35(未示出)中的數(shù)據(jù)并理解這些數(shù)據(jù)。人工管理者對(duì)象44所獲得的信息是時(shí)鐘的初始條件。此時(shí),由于管理對(duì)象42正在保持與InterfaceID=4相關(guān)的時(shí)鐘進(jìn)程,所以對(duì)象01,02和03已經(jīng)自發(fā)地發(fā)出全部釋放信息,并且至少有一個(gè)用于先前步驟的觸發(fā)信號(hào),而且正等待下一個(gè)進(jìn)程的盡早到來(lái)。
如上所述,可以存在四種情況。由于需要替換全部三個(gè),所以處理必須在啟動(dòng)者對(duì)象01上完成,或者必須找出其等價(jià)狀態(tài)。在這種情況下,所有的對(duì)象都被破壞,并且具有較新接口版本的新對(duì)象版本被放入系統(tǒng)。根據(jù)這種情況,人工管理者對(duì)象44通知管理對(duì)象42以解除對(duì)象02服務(wù)端口與時(shí)鐘的調(diào)諧。管理對(duì)象42執(zhí)行此命令。對(duì)象02不再能與其它對(duì)象交換任何進(jìn)程或數(shù)據(jù)。對(duì)象01和對(duì)象03也不能接收升級(jí)或數(shù)據(jù),并因此不能再通信了。人工管理者對(duì)象44給管理對(duì)象42發(fā)送一個(gè)信息以獲取對(duì)象02的狀態(tài)。管理對(duì)象42將此獲取狀態(tài)請(qǐng)求發(fā)送給對(duì)象02的對(duì)象狀態(tài)接口。對(duì)象02公布穩(wěn)定狀態(tài)并且管理對(duì)象42在端口3上接收到此狀態(tài)。
類似地,舊對(duì)象01和對(duì)象03的服務(wù)端口被解除與時(shí)鐘的調(diào)諧。管理對(duì)象42獲取對(duì)象02和對(duì)象03的狀態(tài)。管理對(duì)象42將狀態(tài)信息返回給人工管理者對(duì)象44,而人工管理者對(duì)象44將再次了解實(shí)際的狀態(tài)信息。
人工管理者對(duì)象44發(fā)送消息以破壞對(duì)象02。破壞消息被發(fā)送至該對(duì)象,由管理對(duì)象42接收一確收信息。然后舊的對(duì)象02被去調(diào)。ClockID=2被破壞,將對(duì)象02的狀態(tài)端口和為對(duì)象02創(chuàng)建的管理對(duì)象端口3連接。一旦收到該消息,舊的對(duì)象02破壞其自身和基本服務(wù)端口。將該破壞通知人工管理者對(duì)象44。對(duì)象01和03都重復(fù)相同的步驟。注意管理對(duì)象42在基本相位處仍然保持ClockID=4。管理端口2、3和4被破壞。
人工管理者對(duì)象44創(chuàng)建對(duì)象01的版本1.1的新版本。人工管理者對(duì)象44在管理對(duì)象端口6創(chuàng)建端口,并以ClockID=5創(chuàng)建時(shí)鐘,然后調(diào)諧至新對(duì)象的狀態(tài)端口,以及創(chuàng)建的新管理端口調(diào)諧至?xí)r鐘的基相。如果有直接的一對(duì)一的狀態(tài),則人工管理者對(duì)象44設(shè)置新的對(duì)象狀態(tài)為從舊對(duì)象獲得的值,否則可以在新對(duì)象中設(shè)置為一等價(jià)的狀態(tài)。對(duì)象02和03都重復(fù)相同的步驟。相應(yīng)地通過(guò)人工管理者對(duì)象44設(shè)置狀態(tài)。現(xiàn)在人工管理者對(duì)象44創(chuàng)建大小為6字節(jié)的端口9。人工管理者對(duì)象44創(chuàng)建時(shí)鐘并將端口9調(diào)諧至該時(shí)鐘的基點(diǎn)。人工管理者對(duì)象44規(guī)定管理對(duì)象42保持那個(gè)時(shí)鐘。在下一升級(jí)到達(dá)時(shí),管理對(duì)象42將該消息通知人工管理者對(duì)象44。人工管理者對(duì)象44可以在時(shí)鐘中創(chuàng)建相位1,將較新對(duì)象的所有三個(gè)新的基本服務(wù)端口調(diào)諧至那個(gè)相位,然后釋放該時(shí)鐘。
人工管理者對(duì)象44在保持時(shí)鐘4之后立即接收到的時(shí)鐘數(shù)據(jù)具有4字節(jié)的信息。但是新時(shí)鐘具有6字節(jié)的信息。人工管理者對(duì)象44必須相應(yīng)地轉(zhuǎn)換接口的初始條件,以便應(yīng)用軟件的發(fā)展保持一致。人工管理者對(duì)象44可以改進(jìn)舊的時(shí)鐘數(shù)據(jù)然后通過(guò)管理對(duì)象42將其定回時(shí)鐘8。然后,人工管理者對(duì)象44釋放時(shí)鐘。只有到現(xiàn)在,所有3個(gè)對(duì)象端口得到升級(jí)而人工管理器已經(jīng)完了數(shù)據(jù)包35,該應(yīng)用軟件繼續(xù),好象其在初始結(jié)構(gòu)中那樣。沒有舊對(duì)象01,02和03的參與。
非獨(dú)立的事務(wù)以與人工管理者對(duì)象44對(duì)獨(dú)立事務(wù)的處理相同的方式被處理。人工管理者對(duì)象44必須等待直到調(diào)諧至接口的管理端口(其支持非獨(dú)立事務(wù))接收一升級(jí)為止。管理對(duì)象端口將僅在所有其它與此接口相關(guān)的非獨(dú)立和/或獨(dú)立事務(wù)完成后才接收一升級(jí)。升級(jí)可以在相當(dāng)?shù)囊欢螘r(shí)間后接收,但肯定會(huì)接收升級(jí)(因?yàn)榉仟?dú)立和獨(dú)立事務(wù)必須在有限時(shí)間內(nèi)在發(fā)起者處完成)。最后,當(dāng)上述管理端口升級(jí)時(shí),人工管理器可以持有它,分析條件然后進(jìn)行適當(dāng)?shù)淖兏???梢允褂靡蕾囮P(guān)系圖來(lái)確定對(duì)象的狀態(tài)。人工管理器可以通過(guò)依賴關(guān)系圖來(lái)分析所有狀態(tài)的對(duì)象。在IDL描述中,不是使用獨(dú)立的事務(wù)來(lái)描述,而是顯示依賴關(guān)系。
應(yīng)當(dāng)理解上述的實(shí)施例只是對(duì)可能的具體實(shí)施例中的幾種的說(shuō)明,這些實(shí)施例可以代表本發(fā)明原理的應(yīng)用。根據(jù)這些原理,本領(lǐng)域的技術(shù)人員在不脫離本發(fā)明精神和范圍的情況下可以容易地設(shè)計(jì)出各種其它的結(jié)構(gòu)。
權(quán)利要求
1.一種分布式面向?qū)ο蟮能浖_發(fā)環(huán)境,包括多個(gè)用于執(zhí)行對(duì)象操作的對(duì)象,每個(gè)對(duì)象包括對(duì)象接口;至少一個(gè)對(duì)象端口,與所述對(duì)象的所述每個(gè)對(duì)象接口連接;和交互式裝置,用于將所述多個(gè)對(duì)象中之一的所述對(duì)象端口與所述多個(gè)對(duì)象中另一個(gè)的所述對(duì)象端口連接,其中,如果所述對(duì)象接口兼容,則所述多個(gè)對(duì)象之一可與所述多個(gè)對(duì)象中的另一個(gè)通信,并且所述交互裝置通過(guò)動(dòng)態(tài)地改變具有所述兼容接口的所述端口的集合,提供數(shù)據(jù)的順序流和來(lái)自所述對(duì)象操作的控制。
2.根據(jù)權(quán)利要求1所述的環(huán)境,其中所述交互裝置由環(huán)形通信路徑表示,并且第一所述對(duì)象端口與所述環(huán)形通信路徑連接,以至少?gòu)呐c所述環(huán)形通信路徑連接的第二所述對(duì)象端口接收通信。
3.根據(jù)權(quán)利要求1所述的環(huán)境,其中所述接口以CORBA接口描述語(yǔ)言來(lái)描述。
4.根據(jù)權(quán)利要求1所述的環(huán)境,還包括多個(gè)管理對(duì)象,每個(gè)所述管理對(duì)象與至少一個(gè)所述對(duì)象相關(guān);人工管理者對(duì)象;和用于網(wǎng)絡(luò)發(fā)展的接口,以將所述管理對(duì)象連接至所述人工管理者對(duì)象,其中所述人工管理者對(duì)象通過(guò)所述管理對(duì)象來(lái)管理所述對(duì)象。
5.根據(jù)權(quán)利要求4所述的環(huán)境,其中所述人工管理者對(duì)象向所述對(duì)象分配升級(jí)的對(duì)象版本號(hào)。
6.根據(jù)權(quán)利要求5所述的環(huán)境,其中所述人工管理者對(duì)象對(duì)所述對(duì)象接口單調(diào)地提高接口版本,其中每個(gè)所述對(duì)象接口在所述應(yīng)用網(wǎng)絡(luò)中具有唯一的全局標(biāo)識(shí)。
7.根據(jù)權(quán)利要求6所述的環(huán)境,還包括用于通過(guò)注冊(cè)所述全局標(biāo)識(shí)和具有所述管理對(duì)象的所述對(duì)象的對(duì)象版本號(hào)來(lái)確定所述對(duì)象的所述兼容接口的裝置。
8.根據(jù)權(quán)利要求7所述的環(huán)境,還包括用于確定對(duì)象表的裝置,該對(duì)象表包括表示所述網(wǎng)絡(luò)應(yīng)用中所述對(duì)象的所述對(duì)象版本的行,和表示對(duì)象標(biāo)識(shí)和接口標(biāo)識(shí)的列;用于將所述確定對(duì)象表關(guān)于對(duì)象版本來(lái)進(jìn)行排序的裝置;用于為第一所述對(duì)象將第一所述排序?qū)ο蟊黻P(guān)于公用的所述接口標(biāo)識(shí)排序和為第二所述對(duì)象將第二所述排序?qū)ο蟊黻P(guān)于公用的所述接口標(biāo)識(shí)排序的裝置;用于將所述第一所述排序?qū)ο蟊砗退龅诙雠判驅(qū)ο蟊黻P(guān)于所述接口標(biāo)識(shí)結(jié)合的裝置;和用于從所述對(duì)象表的所述結(jié)合中提取所述兼容的對(duì)象的裝置。
9.根據(jù)權(quán)利要求8所述的環(huán)境,還包括用于將后續(xù)的對(duì)象表關(guān)于所述公用的所述接口標(biāo)識(shí)進(jìn)行排序的裝置;和用于將所述后續(xù)的對(duì)象表與所述結(jié)合的第一所述排序?qū)ο蟊砗退龅诙雠判驅(qū)ο蟊斫Y(jié)合。
10.根據(jù)權(quán)利要求1所述的環(huán)境,還包括一生命周期結(jié)構(gòu),其包括規(guī)范化階段,其中規(guī)定了所述對(duì)象和所述接口,設(shè)計(jì)階段,其中協(xié)商所述對(duì)象的所述接口,實(shí)施階段,其中實(shí)現(xiàn)所述協(xié)商的所述對(duì)象接口,以及測(cè)試階段,其中測(cè)試所述實(shí)現(xiàn)的接口。
11.在軟件開發(fā)過(guò)程中實(shí)現(xiàn)協(xié)商的方法,包括如下步驟a確定人工管理者對(duì)象;b.確定至少一個(gè)管理對(duì)象;c.由所述人工管理者對(duì)象,通過(guò)指示具有所述至少一個(gè)管理對(duì)象的對(duì)象建立多個(gè)用于執(zhí)行對(duì)象操作的對(duì)象,確定在所述人工管理者對(duì)象和所述管理對(duì)象之間用于網(wǎng)絡(luò)發(fā)展的接口(INE),每個(gè)所述對(duì)象包括一對(duì)象接口,d.建立用于將所述至少一個(gè)對(duì)象與所述管理對(duì)象連接的交互裝置;e.確定至少一個(gè)與所述管理對(duì)象相關(guān)的管理對(duì)象端口;f.確定至少一個(gè)與所述對(duì)象相關(guān)的對(duì)象端口;和g.從所述對(duì)象端口將協(xié)商傳送至所述管理對(duì)象端口。
12.根據(jù)權(quán)利要求11所述的方法,還包括如下步驟從所述人工管理者對(duì)象向與至少一個(gè)所述對(duì)象相關(guān)的相應(yīng)開發(fā)者分配設(shè)計(jì)所述對(duì)象的任務(wù)。
13.根據(jù)權(quán)利要求12所述的方法,還包括如下步驟通過(guò)所述開發(fā)者為每個(gè)要開發(fā)的所述對(duì)象建立開發(fā)者協(xié)商端口。
14.根據(jù)權(quán)利要求13所述的方法,還包括如下步驟由所述人工管理者對(duì)象注冊(cè)所述開發(fā)者協(xié)商端口。
15.根據(jù)權(quán)利要求14所述的方法,還包括如下步驟在所述管理對(duì)象建立管理協(xié)商端口,它們每一個(gè)分別與所述開發(fā)者協(xié)商端口之一相關(guān)。
16.根據(jù)權(quán)利要求15所述的方法,其中步驟g包括由所述開發(fā)者通過(guò)所述相應(yīng)的開發(fā)者協(xié)商端口將用改進(jìn)的CORBA IDL寫成的協(xié)商腳本傳送至所述相應(yīng)的管理器協(xié)商端口,以傳送至指定的對(duì)象。
17.根據(jù)權(quán)利要求16所述的方法,還包括如下步驟將在所述管理對(duì)象收到的用改進(jìn)的CORBA IDL寫成的所述腳本通過(guò)INE傳送至所述人工管理者對(duì)象。
18.根據(jù)權(quán)利要求17所述的方法,還包括如下步驟將在所述人工管理者對(duì)象接收的所述用改進(jìn)的CORBA IDL寫成的腳本解釋為人可讀的數(shù)據(jù)。
19.根據(jù)權(quán)利要求11所述的方法,其中傳送協(xié)商的步驟一直重復(fù)到所有開發(fā)者同意為止。
20.根據(jù)權(quán)利要求19所述的方法,其中所述協(xié)商確定用改進(jìn)的CORBA IDL定義的對(duì)象接口。
21.一種用于實(shí)現(xiàn)網(wǎng)絡(luò)應(yīng)用的方法,包括如下步驟確定多個(gè)對(duì)象;將對(duì)象端口與每個(gè)所述對(duì)象相關(guān);確定用于交換所述對(duì)象間的消息的事務(wù);為每個(gè)所述對(duì)象確定對(duì)象接口;和實(shí)現(xiàn)每個(gè)確定的對(duì)象接口,其中所述消息在具有兼容的所述對(duì)象接口的所述對(duì)象之間順序地交換。
22.根據(jù)權(quán)利要求21所述的方法,還包括如下步驟由管理結(jié)構(gòu)注冊(cè)所述實(shí)現(xiàn)的對(duì)象和所述對(duì)象接口,所述管理結(jié)構(gòu)將對(duì)象標(biāo)識(shí)和對(duì)象版本標(biāo)識(shí)以及接口版本標(biāo)識(shí)返回。
23.根據(jù)權(quán)利要求22所述的方法,其中所述實(shí)施步驟還包括如下步驟確定具有兼容的所述對(duì)象版本標(biāo)識(shí)的網(wǎng)絡(luò)應(yīng)用。
24.根據(jù)權(quán)利要求23所述的方法,其中所述確定具有兼容的所述對(duì)象版本標(biāo)識(shí)的網(wǎng)絡(luò)應(yīng)用的步驟包括如下步驟a.確定對(duì)象表,該對(duì)象表包括表示所述對(duì)象標(biāo)識(shí)和所述對(duì)象版本標(biāo)識(shí)的行,和表示所述接口版本標(biāo)識(shí)的列;b.將所述確定對(duì)象表關(guān)于所述對(duì)象版本來(lái)進(jìn)行排序;c.為第一所述對(duì)象將第一所述排序?qū)ο蟊黻P(guān)于公用的所述接口標(biāo)識(shí)排序和為第二所述對(duì)象將第二所述排序?qū)ο蟊黻P(guān)于公用的所述接口標(biāo)識(shí)排序;d.將所述第一所述排序?qū)ο蟊砗退龅诙雠判驅(qū)ο蟊黻P(guān)于所述接口標(biāo)識(shí)結(jié)合,以形成所述對(duì)象表的結(jié)合;和e.從所述對(duì)象表的所述結(jié)合中提取所述兼容的對(duì)象。
25.根據(jù)權(quán)利要求24所述的方法,還包括如下步驟f.將后續(xù)的對(duì)象表關(guān)于所述公用的所述接口標(biāo)識(shí)排序;和g.將所述后續(xù)的對(duì)象表與步驟(d)的所述結(jié)合的對(duì)象表結(jié)合。
26.根據(jù)權(quán)利要求24所述的方法,其中所述對(duì)象表被建立為具有所述對(duì)象版本標(biāo)識(shí)和在所述行和所述列中增加的所述接口版本標(biāo)識(shí)。
27.根據(jù)權(quán)利要求21所述的方法,還包括如下步驟確定多個(gè)管理對(duì)象,每個(gè)所述管理對(duì)象與至少一個(gè)所述對(duì)象相關(guān);確定人工管理者對(duì)象;確定用于網(wǎng)絡(luò)發(fā)展的接口,以將所述管理對(duì)象與所述人工管理者對(duì)象連接;和由所述人工管理者對(duì)象通過(guò)與所述管理對(duì)象交互來(lái)管理所述對(duì)象。
28.根據(jù)權(quán)利要求27所述的方法,還包括如下步驟更新所述確定的對(duì)象;和由所述人工管理者對(duì)象將升級(jí)的對(duì)象版本號(hào)通過(guò)所述管理對(duì)象分配給所述更新的對(duì)象。
29.根據(jù)權(quán)利要求27所述的方法,還包括如下步驟更新所述對(duì)象接口;和由所述人工管理者對(duì)象將升級(jí)的對(duì)象界版本號(hào)通過(guò)所述管理對(duì)象分配給所述更新的對(duì)象。
30.一種建立網(wǎng)絡(luò)應(yīng)用的方法,包括如下步驟a確定人工管理者對(duì)象;b.確定至少一個(gè)管理對(duì)象;c.由所述人工管理者對(duì)象確定在所述人工管理者對(duì)象和所述管理對(duì)象之間用于網(wǎng)絡(luò)發(fā)展的接口(INE);通過(guò)所述人工管理者對(duì)象指示所述至少一個(gè)管理對(duì)象建立至少一個(gè)用于執(zhí)行對(duì)象操作的對(duì)象,每個(gè)所述對(duì)象包括一對(duì)象接口,d.建立用于將所述至少一個(gè)對(duì)象與所述管理對(duì)象連接的交互裝置,所述交互裝置還與所述INE和所述人工管理者對(duì)象連接;e.初始化在所述對(duì)象的所述人工管理者對(duì)象上的狀態(tài),并將所述初始化的狀態(tài)經(jīng)所述INE傳送給所述對(duì)象,以將所述初始化的狀態(tài)傳送給所述管理對(duì)象,而所述管理對(duì)象將所述初始化的狀態(tài)從所述管理對(duì)象傳送給所述對(duì)象。
31.根據(jù)權(quán)利要求30所述的方法,還包括如下步驟f.為所述人工管理者對(duì)象確定人工管理者對(duì)象INE端口;g.為所述管理對(duì)象確定管理對(duì)象INE端口;和h.將所述INE與用于所述管理對(duì)象的所述INE端和用于所述管理者對(duì)象的所述INE端口相關(guān)。
32.根據(jù)權(quán)利要求31所述的方法,還包括如下步驟確定至少一個(gè)與所述管理對(duì)象相關(guān)的端口;和確定至少一個(gè)與每個(gè)所述對(duì)象相關(guān)的對(duì)象端口。
33.根據(jù)權(quán)利要求30所述的方法,其中所述對(duì)象接口用改進(jìn)的CORBA IDL定義。
34.一種用于動(dòng)態(tài)地重構(gòu)網(wǎng)絡(luò)應(yīng)用的方法,包括如下步驟確定人工管理者對(duì)象;確定至少一個(gè)管理對(duì)象;由所述人工管理者對(duì)象通過(guò)指示具有所述至少一個(gè)管理對(duì)象的對(duì)象建立至少一個(gè)用于執(zhí)行對(duì)象操作的對(duì)象,確定在所述人工管理者對(duì)象和所述管理對(duì)象之間用于網(wǎng)絡(luò)發(fā)展的接口(INE),每個(gè)所述對(duì)象包括一對(duì)象接口并具有初始狀態(tài),建立用于將所述至少一個(gè)對(duì)象與所述管理對(duì)象連接的交互裝置;確定至少一個(gè)與所述管理對(duì)象相關(guān)的管理對(duì)象端口;確定至少一個(gè)與所述對(duì)象相關(guān)的對(duì)象端口;和在至少一個(gè)要被重構(gòu)的所述對(duì)象中通過(guò)所述管理對(duì)象建立靜止點(diǎn)。
35.根據(jù)權(quán)利要求34所述的方法,還包括如下步驟將用于更新所述至少一個(gè)對(duì)象的數(shù)據(jù)從所述對(duì)象傳送至所述人工管理者對(duì)象。
36.根據(jù)權(quán)利要求35所述的方法,還包括如下步驟確定所述被重構(gòu)的對(duì)象的所述端口;從所述人工管理者對(duì)象發(fā)出破壞命令以破壞所述要被重構(gòu)的端口;在所述人工管理者對(duì)象建立所述要被重構(gòu)端口的新版本;將所述對(duì)象的所述新版本傳送給所述管理對(duì)象;建立具有所述對(duì)象的所述新版本的所述新對(duì)象;和確定與所述新對(duì)象相關(guān)的新對(duì)象端口。
37.根據(jù)權(quán)利要求36所述的方法,還包括如下步驟在所述人工管理者對(duì)象確定所述對(duì)象的所述初始狀態(tài)是否與所述對(duì)象的新版本的狀態(tài)相同;和如果所述初始對(duì)象版本與所述新版本的狀態(tài)相同,則用所述新版本替代初始對(duì)象版本;或者如果所述初始對(duì)象版本與所述新版本的狀態(tài)不相同,則在所述人工管理者對(duì)象確定一等同狀態(tài)并用所述新版本替代所述初始版本。
38.根據(jù)權(quán)利要求37所述的方法,還包括如下步驟將用于更新所述至少一個(gè)接口版本的數(shù)據(jù)從所述對(duì)象之一傳送至所述人工管理者對(duì)象。
39.根據(jù)權(quán)利要求38所述的方法,還包括如下步驟為所述接口版本的所述更新而確定要被重構(gòu)的所述對(duì)象的數(shù)目;從所述人工管理者對(duì)象發(fā)出破壞命令以破壞所述被重構(gòu)的對(duì)象;在所述人工管理者對(duì)象建立所述數(shù)量的要被重構(gòu)的對(duì)象每一個(gè)的新版本;將所述新版本傳送至所述管理對(duì)象;和建立相應(yīng)數(shù)量的具有所述新版本的新對(duì)象。
40.根據(jù)權(quán)利要求34所述的方法,其中所述對(duì)象接口用改進(jìn)的CORBA IDL定義。
41.一種用于在軟件開發(fā)過(guò)程中實(shí)現(xiàn)協(xié)商的系統(tǒng),包括用于確定人工管理者對(duì)象的裝置;用于確定至少一個(gè)管理對(duì)象的裝置;用于由所述人工管理者對(duì)象,通過(guò)指示具有所述至少一個(gè)管理對(duì)象的對(duì)象建立多個(gè)用于執(zhí)行對(duì)象操作的對(duì)象,確定在所述人工管理者對(duì)象和所述管理對(duì)象之間用于網(wǎng)絡(luò)發(fā)展的接口(INE)的裝置,每個(gè)所述對(duì)象包括一對(duì)象接口;用于建立用于將所述至少一個(gè)對(duì)象與所述管理對(duì)象連接的交互裝置的裝置;用于確定至少一個(gè)與所述管理對(duì)象相關(guān)的管理對(duì)象端口的裝置;用于確定至少一個(gè)與所述對(duì)象相關(guān)的對(duì)象端口的裝置;和用于將協(xié)商從所述對(duì)象端口傳送至所述管理對(duì)象端口的裝置。
42.根據(jù)權(quán)利要求41所述的系統(tǒng),還包括用于由所述開發(fā)者為每個(gè)要被開始的所述對(duì)象建立開發(fā)者協(xié)商端口的裝置。
43.根據(jù)權(quán)利要求42所述的系統(tǒng),還包括用于由所述人工管理者對(duì)象注冊(cè)所述開發(fā)者協(xié)商端口的裝置。
44.根據(jù)權(quán)利要求43所述的系統(tǒng),還包括用于在各個(gè)分別與所述開發(fā)者協(xié)商端口相關(guān)的所述管理對(duì)象建立管理協(xié)商端口的裝置。
45.根據(jù)權(quán)利要求44所述的系統(tǒng),其中所述協(xié)商是用改進(jìn)的CORBA IDL編寫的。
46.一種用于實(shí)現(xiàn)網(wǎng)絡(luò)應(yīng)用的方法,包括用于確定多個(gè)對(duì)象的裝置;用于將對(duì)象端口與每個(gè)所述對(duì)象相關(guān)的裝置;用于確定用于交換所述對(duì)象間消息的事務(wù)的裝置;用于為每個(gè)所述對(duì)象確定對(duì)象接口的裝置;和用于實(shí)現(xiàn)每個(gè)確定的對(duì)象接口的裝置,其中所述消息在具有兼容的所述對(duì)象接口的所述對(duì)象之間順序地交換。
47.根據(jù)權(quán)利要求46所述的系統(tǒng),還包括用于注冊(cè)所述實(shí)現(xiàn)的對(duì)象和具有管理結(jié)構(gòu)的所述對(duì)象接口的裝置,所述管理結(jié)構(gòu)返回對(duì)象標(biāo)識(shí)和對(duì)象版本標(biāo)識(shí)以及接口版本標(biāo)識(shí)。
48.根據(jù)權(quán)利要求47所述的系統(tǒng),其中所述用于實(shí)現(xiàn)的裝置包括用于確定具有兼容的所述對(duì)象版本標(biāo)識(shí)的網(wǎng)絡(luò)應(yīng)用的裝置。
49.根據(jù)權(quán)利要求48所述的系統(tǒng),其中所述用于確定具有兼容的對(duì)象版本標(biāo)識(shí)的網(wǎng)絡(luò)應(yīng)用的裝置包括用于確定對(duì)象表的裝置,該對(duì)象表包括表示所述網(wǎng)絡(luò)應(yīng)用中所述對(duì)象的所述對(duì)象版本標(biāo)識(shí)的行,和表示所述接口版本標(biāo)識(shí)的列;用于將所述確定的對(duì)象表關(guān)于對(duì)象版本標(biāo)識(shí)進(jìn)行排序的裝置;用于為第一所述對(duì)象將第一所述排序?qū)ο蟊黻P(guān)于公用的所述接口標(biāo)識(shí)排序和為第二所述對(duì)象將第二所述排序?qū)ο蟊黻P(guān)于公用的所述接口標(biāo)識(shí)排序的裝置;用于將所述第一所述排序?qū)ο蟊砗退龅诙雠判驅(qū)ο蟊黻P(guān)于所述接口標(biāo)識(shí)結(jié)合以形成所述對(duì)象表的結(jié)合的裝置;和用于從所述對(duì)象表的所述結(jié)合中提取所述兼容的對(duì)象的裝置。
50.根據(jù)權(quán)利要求49所述的系統(tǒng),其中所述對(duì)象接口用改進(jìn)的CORBA IDL定義。
51.一種用于建立網(wǎng)絡(luò)應(yīng)用的系統(tǒng),包括用于確定人工管理者對(duì)象的裝置;用于確定至少一個(gè)管理對(duì)象的裝置;用于由所述人工管理者對(duì)象,確定在所述人工管理者對(duì)象和所述管理對(duì)象之間用于網(wǎng)絡(luò)發(fā)展的接口(INE);通過(guò)所述人工管理者對(duì)象指示所述至少一個(gè)管理對(duì)象建立至少一個(gè)用于執(zhí)行對(duì)象操作的對(duì)象的裝置,每個(gè)所述對(duì)象包括一對(duì)象接口,用于建立用于將所述至少一個(gè)對(duì)象與所述管理對(duì)象連接的交互裝置的裝置,所述交互裝置還與所述INE和所述人工管理者對(duì)象連接;和用于初始化在所述對(duì)象的所述人工管理者對(duì)象上的狀態(tài),并將所述初始化的狀態(tài)經(jīng)所述INE傳送給所述對(duì)象,以將所述初始化的狀態(tài)傳送給所述管理對(duì)象的裝置,而所述管理對(duì)象將所述初始化的狀態(tài)從所述管理對(duì)象傳送給所述對(duì)象。
52.根據(jù)權(quán)利要求51所述的系統(tǒng),還包括用于為人工管理者對(duì)象確定人工管理者對(duì)象INE端口的裝置;用于為所述管理對(duì)象確定管理對(duì)象INE端口的裝置;和用于將所述INE與用于所述管理對(duì)象的所述INE端口和用于所述管理者對(duì)象的所述INE端口相關(guān)的裝置。
53.根據(jù)權(quán)利要求52所述的系統(tǒng),還包括用于確定至少一個(gè)與所述管理對(duì)象相關(guān)的端口的裝置;和用于確定至少一個(gè)與每個(gè)所述對(duì)象相關(guān)的對(duì)象端口的裝置。
54.根據(jù)權(quán)利要求51所述的系統(tǒng),其中所述對(duì)象接口用改進(jìn)的CORBA IDL定義。
55.一種用于動(dòng)態(tài)地重構(gòu)網(wǎng)絡(luò)應(yīng)用的系統(tǒng),包括用于確定人工管理者對(duì)象的裝置;用于確定至少一個(gè)管理對(duì)象的裝置;用于由所述人工管理者對(duì)象通過(guò)指示具有所述至少一個(gè)管理對(duì)象的對(duì)象建立至少一個(gè)用于執(zhí)行對(duì)象操作的對(duì)象,確定在所述人工管理者對(duì)象和所述管理對(duì)象之間用于網(wǎng)絡(luò)發(fā)展的接口(INE)的裝置,每個(gè)所述對(duì)象包括一對(duì)象接口并具有初始狀態(tài),用于建立用于將所述至少一個(gè)對(duì)象與所述管理對(duì)象連接的交互裝置的裝置;用于確定至少一個(gè)與所述管理對(duì)象相關(guān)的管理對(duì)象端口的裝置;用于確定至少一個(gè)與所述對(duì)象相關(guān)的對(duì)象端口的裝置;和用于在至少一個(gè)要被重構(gòu)的所述對(duì)象中通過(guò)所述管理對(duì)象建立靜止點(diǎn)的裝置。
56.根據(jù)權(quán)利要求56所述的系統(tǒng),還包括用于將用于更新所述至少一個(gè)接口版本的數(shù)據(jù)從所述對(duì)象傳送至所述人工管理者對(duì)象的裝置;用于確定所述要被重構(gòu)的所述對(duì)象的所述端口的裝置;用于從所述人工管理者對(duì)象發(fā)出破壞命令以破壞所述要被重構(gòu)的端口的裝置;用于在所述人工管理者對(duì)象建立要被重構(gòu)端口的新版本的裝置;用于將所述對(duì)象的所述新版本傳送至所述管理對(duì)象的裝置;用于建立具有所述對(duì)象的所述新版本的新對(duì)象的裝置;和用于確定與所述新對(duì)象相關(guān)的新對(duì)象端口的裝置。
57.根據(jù)權(quán)利要求56所述的系統(tǒng),還包括用于從所述對(duì)象之一向所述管理人員傳送用于更新所述至少一個(gè)接口版本的數(shù)據(jù)的裝置;用于為所述接口版本的所述更新而確定要被重構(gòu)的所述對(duì)象的數(shù)目的裝置;用于從所述人工管理者對(duì)象發(fā)出破壞命令以所述要被重構(gòu)的對(duì)象的裝置;用于在所述人工管理者對(duì)象建立所述數(shù)量的要被重構(gòu)的對(duì)象每一個(gè)的新版本的裝置;用于將所述新版本傳送至所述管理對(duì)象的裝置;和用于建立相應(yīng)數(shù)量的具有所述新版本的新對(duì)象的裝置。
58.根據(jù)權(quán)利要求55所述的系統(tǒng),其中所述對(duì)象接口用改進(jìn)的CORBA IDL定義。
全文摘要
本發(fā)明涉及一種分布式面向?qū)ο蟮能浖_發(fā)環(huán)境(10)。如果相關(guān)的接口是兼容的,則執(zhí)行對(duì)象操作的對(duì)象可以相互通信。該環(huán)境為對(duì)象提供了控制和數(shù)據(jù)的順序流。對(duì)象的每個(gè)接口具有獨(dú)一無(wú)二的全局標(biāo)識(shí)值。通過(guò)在管理結(jié)構(gòu)中注冊(cè)全局標(biāo)識(shí)和接口版本從而確定兼容接口。該環(huán)境可以用于建立應(yīng)用網(wǎng)絡(luò)(12),以及對(duì)應(yīng)用網(wǎng)絡(luò)進(jìn)行一致的、透明的動(dòng)態(tài)更新。管理結(jié)構(gòu)可以包括與應(yīng)用中的對(duì)象相聯(lián)系的管理對(duì)象。管理對(duì)象(42)與人工管理者對(duì)象(44)交流關(guān)于對(duì)象的信息。相應(yīng)地,在應(yīng)用網(wǎng)絡(luò)的建立或重構(gòu)中,人工管理者對(duì)象可以控制對(duì)象的事務(wù)而無(wú)需對(duì)象的參與。在設(shè)計(jì)階段,管理結(jié)構(gòu)還可以由開發(fā)者用于進(jìn)行無(wú)范圍協(xié)商。
文檔編號(hào)G06F9/44GK1349626SQ00806859
公開日2002年5月15日 申請(qǐng)日期2000年4月28日 優(yōu)先權(quán)日1999年4月29日
發(fā)明者曼丘納斯M·瑟亞納拉亞納 申請(qǐng)人:拉特格斯大學(xué), 曼丘納斯M·瑟亞納拉亞納