亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

用于客戶/服務(wù)器計(jì)算的方法和計(jì)算機(jī)程序產(chǎn)品的制作方法

文檔序號(hào):6414061閱讀:214來源:國(guó)知局
專利名稱:用于客戶/服務(wù)器計(jì)算的方法和計(jì)算機(jī)程序產(chǎn)品的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及客戶/服務(wù)器(也稱為“分布式”)計(jì)算領(lǐng)域,其中一個(gè)計(jì)算設(shè)備(“客戶”)要求另一個(gè)計(jì)算設(shè)備(“服務(wù)器”)完成客戶的一部分工作??蛻艉头?wù)器可以兩者都位于同一物理計(jì)算設(shè)備內(nèi)。
客戶/服務(wù)器計(jì)算近幾年來在信息技術(shù)世界中變得愈來愈重要。這種分布式計(jì)算允許一個(gè)計(jì)算機(jī)委托另一個(gè)計(jì)算機(jī)完成后者更適合做的一部分工作。例如,服務(wù)器可以是一個(gè)功能強(qiáng)的計(jì)算機(jī),其中運(yùn)行著管理存儲(chǔ)的大量數(shù)據(jù)的數(shù)據(jù)庫(kù)程序,而客戶只是一個(gè)簡(jiǎn)單的桌上個(gè)人計(jì)算機(jī)(PC),它向數(shù)據(jù)庫(kù)請(qǐng)求信息以便在它的一個(gè)本地程序中使用這些信息。
由于使用了眾所周知的稱為面向?qū)ο缶幊?OOP)的計(jì)算機(jī)編程技術(shù),客戶/服務(wù)器計(jì)算的優(yōu)點(diǎn)進(jìn)一步加強(qiáng)了,該OOP允許客戶和服務(wù)器分別位于不同(異構(gòu)的)“平臺(tái)”上。一個(gè)平臺(tái)是計(jì)算機(jī)用來進(jìn)行工作的特定硬件/軟件/操作系統(tǒng)/通信協(xié)議的組合。OOP允許客戶應(yīng)用程序和服務(wù)器應(yīng)用程序各在它們自己的平臺(tái)上運(yùn)行而不必顧慮客戶應(yīng)用程序的工作請(qǐng)求如可發(fā)送和被服務(wù)器應(yīng)用程序接收。類似地,服務(wù)器應(yīng)用程序不必顧慮OOP系統(tǒng)如何接收和翻譯服務(wù)器應(yīng)用程序的處理結(jié)果及如何將此結(jié)果送回至發(fā)出請(qǐng)求的客戶應(yīng)用程序。
美國(guó)專利5,440,744和歐洲專利刊登申請(qǐng)EP 0677,943 A2中解釋了OOP技術(shù)如何與異構(gòu)客戶/服務(wù)器系統(tǒng)結(jié)合為整體的細(xì)節(jié)。此兩份刊登物在此處引為參考資料。然而下面將給出一個(gè)基本體系例子供對(duì)本發(fā)明環(huán)境上下文理解之用。


圖1中所示,客戶計(jì)算機(jī)10(例如它可為具有裝于其上的IBMOS/2操作系統(tǒng)的個(gè)人計(jì)算機(jī))具有一個(gè)在其操作系統(tǒng)上運(yùn)行的應(yīng)用程序40(“IBM”和“OS/2”是國(guó)際商業(yè)機(jī)器公司的注冊(cè)商標(biāo))。應(yīng)用程序40周期性地要求在服務(wù)器計(jì)算機(jī)20上完成工作及/或?qū)?shù)據(jù)自服務(wù)器20退回來以供應(yīng)用程序40隨后使用。例如服務(wù)器計(jì)算機(jī)20可為一個(gè)在IBM的MVS操作系統(tǒng)上運(yùn)行的功能強(qiáng)的主體計(jì)算機(jī)(“MVS”也是IBM公司的注冊(cè)商標(biāo))。對(duì)于本發(fā)明的目的而言,不論對(duì)由服務(wù)器執(zhí)行通信服務(wù)的請(qǐng)求是由用戶與第一應(yīng)用程序40交互作用而提出的,還是應(yīng)用程序40獨(dú)立于用戶交互作用之外運(yùn)行并在程序運(yùn)行中自動(dòng)提出的,都不重要。
當(dāng)客戶計(jì)算機(jī)10希望向服務(wù)器計(jì)算機(jī)20的服務(wù)提出請(qǐng)求時(shí),第一應(yīng)用程序40將請(qǐng)求的服務(wù)通知第一邏輯裝置50。作為例子,可以向第一邏輯裝置發(fā)送遠(yuǎn)過程名字及一列輸入和輸出參數(shù)。然后第一邏輯裝置50參照存放于存儲(chǔ)設(shè)備60中的可用通信服務(wù)的定義來完成建立與第二計(jì)算機(jī)20的必要通信的工作。所有可能的服務(wù)都被定義為對(duì)象類70的內(nèi)聚框架,這些類自單個(gè)對(duì)象類中派生出來。以此方式定義服務(wù)可在性能和重可用性方面具有很多優(yōu)點(diǎn)。
為建立與服務(wù)器20的必要通信,第一邏輯裝置50確定需使用框架中哪些對(duì)象類,然后在服務(wù)器處建立該對(duì)象的實(shí)例,向該對(duì)象發(fā)送一個(gè)消息以促使該對(duì)象啟用它的方法中的一個(gè)。這進(jìn)而通過連結(jié)裝置80建立起與服務(wù)器計(jì)算機(jī)20的連接,并隨后向第二邏輯裝置90發(fā)送一個(gè)請(qǐng)求。
第二邏輯裝置90然后將此請(qǐng)求傳給在服務(wù)器計(jì)算機(jī)20上運(yùn)行的第二應(yīng)用程序100(此后稱為服務(wù)應(yīng)用程序)以使服務(wù)應(yīng)用程序100能完成該請(qǐng)求所要求的具體任務(wù),例如運(yùn)行一個(gè)數(shù)據(jù)檢索過程。一旦完成此任務(wù),服務(wù)應(yīng)用程序可能需要將結(jié)果發(fā)送回至第一計(jì)算機(jī)10。在完成所請(qǐng)求的任務(wù)期間和當(dāng)要將結(jié)果送回至第一計(jì)算機(jī)10時(shí),服務(wù)應(yīng)用程序100與第二邏輯裝置90交互作用。第二邏輯裝置90建立起對(duì)象的實(shí)例并啟用這些對(duì)象的合適方法,及當(dāng)服務(wù)應(yīng)用程序100要求時(shí),對(duì)象實(shí)例自存放于存儲(chǔ)設(shè)備110中的對(duì)象類內(nèi)聚框架中建立起來。
使用以上技術(shù)時(shí),客戶應(yīng)用程序40不向通信體系暴露。此外,服務(wù)應(yīng)用程序100是通過其環(huán)境的標(biāo)準(zhǔn)進(jìn)程啟用的;它不知道它是被遠(yuǎn)程地啟用的。
對(duì)象管理組(OMG)是一個(gè)國(guó)際組織聯(lián)合會(huì),致力于在具有如圖1中所示分布式對(duì)象的異構(gòu)平臺(tái)上的客戶/服務(wù)器計(jì)算的不同方面。OMG提出已出版的標(biāo)準(zhǔn),客戶計(jì)算機(jī)(例如10)根據(jù)此標(biāo)準(zhǔn)與服務(wù)器計(jì)算機(jī)(例如20)通信(用OOP形式)。作為這些標(biāo)準(zhǔn)的一部分,定義了對(duì)象請(qǐng)求代理器(稱為CORBA-公共對(duì)象請(qǐng)求代理體系),它在客戶與服務(wù)計(jì)算機(jī)之間提供面向?qū)ο蟮臉蛄骸RB使客戶和服務(wù)應(yīng)用程序與面向?qū)ο蟮膶?shí)施細(xì)節(jié)相脫離,完成第一和第二邏輯裝置50和90還有連結(jié)裝置80的至少一部分工作。
OMG提出與“事務(wù)”有關(guān)的標(biāo)準(zhǔn),作為CORBA軟件結(jié)構(gòu)的一部分,這些標(biāo)準(zhǔn)稱為OTS或?qū)ο笫聞?wù)服務(wù)。由計(jì)算機(jī)實(shí)施的事務(wù)處理系統(tǒng)在不少工業(yè)中用于重要業(yè)務(wù)工作。一個(gè)事務(wù)決定一個(gè)必須或者全部完成或者不操作而全部清涂的單個(gè)工作單元。例如在銀行的自動(dòng)取款機(jī)中,當(dāng)用戶希望提取現(xiàn)鈔時(shí),發(fā)放現(xiàn)鈔的操作,將取款機(jī)中可用現(xiàn)鈔存額減少的操作和將用戶銀行帳號(hào)金額減少的操作必須或者全部執(zhí)行或者一個(gè)都不執(zhí)行。附屬操作中的一項(xiàng)失誤時(shí)將會(huì)導(dǎo)致記錄和實(shí)際操作間的不一致。
分布式事務(wù)處理牽涉到會(huì)影響不止一個(gè)物理或邏輯地址上的資源的一個(gè)事務(wù)。在上述例子中,一個(gè)事務(wù)影響到在本地自動(dòng)取款設(shè)備中管理的資源,也影響到由銀行主計(jì)算機(jī)管理的銀行結(jié)算。這類事務(wù)涉及一個(gè)具體客戶計(jì)算機(jī)(例如10)在由服務(wù)器處理的一系列客戶請(qǐng)求問題上與一個(gè)具體服務(wù)器計(jì)算機(jī)(例如20)的通信。OMG的OTS負(fù)責(zé)協(xié)調(diào)這些分布式事務(wù)。
通常,在客戶過程上運(yùn)行的應(yīng)用程序所啟動(dòng)的事務(wù)可能牽涉到調(diào)用眾多不同服務(wù)器,每一個(gè)服務(wù)器將啟動(dòng)一個(gè)服務(wù)過程以便根據(jù)包含于事務(wù)中的指令改變其本地?cái)?shù)據(jù)庫(kù)。事務(wù)結(jié)束時(shí)或者執(zhí)行了事務(wù)(因此所有服務(wù)器都完成了對(duì)它們本地?cái)?shù)據(jù)庫(kù)的改變)或者將事務(wù)流產(chǎn)(因此所有服務(wù)器都“回滾”或忽略它們本地?cái)?shù)據(jù)庫(kù)的改變)。為在事務(wù)處理期間與服務(wù)器通信(例如通知它們或者執(zhí)行或者流產(chǎn)它們?cè)谑聞?wù)中的那部分),所涉及的過程中的一個(gè)必須為事務(wù)保持狀態(tài)數(shù)據(jù)。這通常涉及用于建立一系列對(duì)象的過程,其中之一是協(xié)調(diào)對(duì)象,用于針對(duì)不同服務(wù)器協(xié)調(diào)事務(wù)。
由于總是存在著出錯(cuò)的可能性,所以該過程必需為事務(wù)存儲(chǔ)狀態(tài)數(shù)據(jù),以便當(dāng)計(jì)算機(jī)或保持狀態(tài)數(shù)據(jù)的過程出錯(cuò)時(shí),此狀態(tài)數(shù)據(jù)是可復(fù)原的。也即,當(dāng)系統(tǒng)剛開始出錯(cuò)時(shí),此狀態(tài)數(shù)據(jù)可在計(jì)算機(jī)或保持狀態(tài)數(shù)據(jù)的過程的本地外部存儲(chǔ)器中作為記錄文件存儲(chǔ)起來。當(dāng)造成出錯(cuò)的問題被找出并糾正后,系統(tǒng)被復(fù)原及狀態(tài)數(shù)據(jù)被重裝以使正在進(jìn)行中的事務(wù)得以完成。
當(dāng)客戶應(yīng)用程序啟動(dòng)事務(wù)時(shí),有兩個(gè)可能的體系供選用以選擇事務(wù)狀態(tài)數(shù)據(jù)的所在位置。第一體系是所謂“可復(fù)原客戶”,其中狀態(tài)數(shù)據(jù)就地存放于客戶過程中。在此情況下,客戶必須在它自身內(nèi)包括足夠功能以便能當(dāng)作服務(wù)器使用,因?yàn)樗仨毮軌蚪邮諏?duì)于作為事務(wù)狀態(tài)數(shù)據(jù)一部分而建立的對(duì)象的遠(yuǎn)程方法調(diào)用。例如,每個(gè)與事務(wù)有關(guān)的服務(wù)器必須將它本身向客戶登記。
現(xiàn)代趨向是取消為客戶附加功能,而相反地具有“純凈”或“單薄”的不能用作服務(wù)器的客戶。例如,日益廣受歡迎的網(wǎng)絡(luò)計(jì)算范例的主要?jiǎng)酉蚴墙o予客戶愈來愈少功能以便對(duì)服務(wù)器功能作主要改變而不對(duì)每個(gè)客戶功能作相同改變。另外,可顯著地減低客戶計(jì)算機(jī)價(jià)格,因?yàn)檫@類計(jì)算機(jī)不需要任何存儲(chǔ)器(所有存儲(chǔ)器都位于遠(yuǎn)程服務(wù)器處)。因此,選擇事務(wù)狀態(tài)數(shù)據(jù)的所在位置的第二體系是“不可復(fù)原客戶”,其中事務(wù)狀態(tài)數(shù)據(jù)離開(遠(yuǎn)離)客戶過程而存放著(例如存放于一個(gè)服務(wù)器中)。
這兩種體系選擇各有它們相對(duì)的優(yōu)缺點(diǎn)。因此根據(jù)環(huán)境支持兩個(gè)體系中任何一個(gè)體系的能力是非常有利的。然而當(dāng)實(shí)施一個(gè)事務(wù)時(shí),必須根據(jù)使用可復(fù)原客戶或使用不可復(fù)原客戶的不同情況以不同方式編寫客戶應(yīng)用程序源碼。如客戶是可復(fù)原的,則客戶應(yīng)用程序源碼必須包括用于在本地建立事務(wù)的碼,及如客戶是不可復(fù)原的,則客戶應(yīng)用程序必須包括用于遠(yuǎn)程地建立事務(wù)的碼。
因此,原本為可復(fù)原客戶平臺(tái)編寫的客戶應(yīng)用程序無法輕易地搬至不可復(fù)原客戶平臺(tái)上。一個(gè)源碼客戶應(yīng)用程序只能在一種體系環(huán)境內(nèi)建立和運(yùn)行。
如果編寫源碼的人試圖回避這個(gè)問題,則他/她將面臨巨大負(fù)擔(dān),因?yàn)楫?dāng)要編寫一個(gè)不依賴于體系的應(yīng)用程序時(shí),客戶應(yīng)用程序必須包含應(yīng)用程序的兩個(gè)版本(上面提到的兩個(gè)體系中每個(gè)有一個(gè)版本),還有用于區(qū)別體系以便確定在給定情況下使用哪個(gè)版本的編碼部分。在提供此額外軟件碼時(shí),客戶編程人員無法集中精力編寫他/她的客戶應(yīng)用程序的實(shí)質(zhì)部分。
根據(jù)第一個(gè)目標(biāo),本發(fā)明提供一種編寫用于在客戶/服務(wù)器計(jì)算系統(tǒng)中的客戶上執(zhí)行的源碼計(jì)算機(jī)程序的方法,該計(jì)算機(jī)程序包括的事務(wù)中包括用于訪問服務(wù)器上資源的命令,該方法包括以下步驟用開始命令表明事務(wù)的開始;用訪問命令表明事務(wù)的中間部分;及用執(zhí)行命令或回滾命令表明事務(wù)的結(jié)束;其特征在于表明事務(wù)開始的步驟是在不依賴于客戶是否可復(fù)原的情況下完成的。
根據(jù)第二個(gè)目標(biāo),本發(fā)明提供一種用于處理在客戶/服務(wù)器計(jì)算系統(tǒng)中的客戶上運(yùn)行的源碼計(jì)算機(jī)程序的方法,該源碼計(jì)算機(jī)程序包括一條事務(wù)開始命令,訪問服務(wù)器上資源的命令和一條事務(wù)結(jié)束命令,其中所述事務(wù)開始命令是在不依賴于所述客戶是否可復(fù)原的情況下編寫的,該方法包括以下步驟對(duì)所述事務(wù)開始命令作出如下響應(yīng)如客戶是可復(fù)原的則在所述客戶上就地建立事務(wù);及如客戶是不可復(fù)原的則相對(duì)于所述客戶遠(yuǎn)程地建立事務(wù)。
根據(jù)第三個(gè)目標(biāo),本發(fā)明還提供一個(gè)存放于可由計(jì)算機(jī)讀取的存儲(chǔ)介質(zhì)上的用于在客戶/服務(wù)器計(jì)算系統(tǒng)中的客戶上運(yùn)行的源碼計(jì)算機(jī)程序,該計(jì)算機(jī)程序包括其中包括用于訪問服務(wù)器上資源的命令的事務(wù),源碼計(jì)算機(jī)程序包括用于完成相對(duì)于本發(fā)明第一目標(biāo)方法步驟的在上面列出的功能的相應(yīng)碼部分。
根據(jù)第四個(gè)目標(biāo),本發(fā)明還提供一個(gè)存放于可由計(jì)算機(jī)讀取的存儲(chǔ)介質(zhì)上的用于處理在客戶/服務(wù)器計(jì)算系統(tǒng)中客戶上運(yùn)行的源碼計(jì)算機(jī)程序的計(jì)算機(jī)程序,該源碼計(jì)算機(jī)程序包括一條事務(wù)開始命令,用于訪問服務(wù)器上資源的命令和一條事務(wù)結(jié)束命令,其中所述事務(wù)開始命令是在不依賴于所述客戶是否可復(fù)原的情況下編寫的,該計(jì)算機(jī)程序包括用于完成相對(duì)于本發(fā)明第二目標(biāo)方法步驟的在上面列出的功能的相應(yīng)碼部分。
雖然本發(fā)明可被看作或?yàn)榫帉懺创a程序的方法或?yàn)樘幚泶嗽创a程序的方法,但將本發(fā)明這兩個(gè)觀點(diǎn)連系起來的統(tǒng)一特征是該源碼不必具有有關(guān)在何處建立事處的實(shí)施細(xì)節(jié)。對(duì)于第一個(gè)觀點(diǎn),可不依賴于客戶的可復(fù)原性而提供事務(wù)開始的標(biāo)志。在第二個(gè)觀點(diǎn)中,客戶可復(fù)原性的細(xì)節(jié)(即如何和在何處建立事務(wù)狀態(tài)數(shù)據(jù))是在處理階段期間獲得的(因此這些細(xì)節(jié)不必包括在源碼本身中)。因此這兩個(gè)觀點(diǎn)可由一個(gè)公共發(fā)明統(tǒng)一起來。
在本發(fā)明中,可以不理會(huì)客戶是否可復(fù)原而編寫客戶應(yīng)用程序。也即,可復(fù)原性的問題對(duì)客戶應(yīng)用程序(源碼)編寫人員是透明的。這就使應(yīng)用程序編寫人員不必再讓他/她本人操心客戶的可復(fù)原性,從而使他/她可以化費(fèi)更多時(shí)間和精力去編寫源碼應(yīng)用程序的實(shí)質(zhì)部分。
本發(fā)明也可不要求在客戶應(yīng)用程序中作任何修改而使所寫的源碼客戶應(yīng)用程序用于更廣闊的用途。也即,一旦寫完源碼應(yīng)用程序后,它即可建立起來(編譯和連接)并可在可復(fù)原和不可復(fù)原的客戶平臺(tái)兩者上運(yùn)行而不必修改。這樣一來,原先為可復(fù)原客戶編寫的客戶應(yīng)用程序可以容易地搬用于不可復(fù)原客戶,因而可以利用那些通過“單薄”客戶得到的優(yōu)點(diǎn),網(wǎng)絡(luò)計(jì)算目標(biāo)。
參照下述圖閱讀本發(fā)明優(yōu)選實(shí)施例下面的描述可以更好地理解本發(fā)明。
圖1是眾所周知的使用對(duì)象技術(shù)的異構(gòu)客戶/服務(wù)器體系的框圖,本發(fā)明的優(yōu)選實(shí)施例可用于其上下文中;圖2是根據(jù)本發(fā)明優(yōu)選實(shí)施例的流程,用于顯示當(dāng)在可復(fù)原客戶上處理客戶應(yīng)用程序并開始一個(gè)事務(wù)時(shí)所采取的步驟;圖3是根據(jù)本發(fā)明優(yōu)選實(shí)施例的流程,用于顯示當(dāng)在不可復(fù)原客戶上處理客戶應(yīng)用程序并開始一個(gè)事務(wù)時(shí)所采取的步驟;圖4顯示可以根據(jù)本發(fā)明優(yōu)選實(shí)施例編寫的源碼客戶應(yīng)用程序事務(wù)的例子;圖5是一個(gè)用于顯示根據(jù)本發(fā)明優(yōu)選實(shí)施例編寫源碼客戶應(yīng)用程序事務(wù)中所采取的步驟的流程;圖6是一個(gè)用于顯示根據(jù)本發(fā)明優(yōu)選實(shí)施例自源碼客戶應(yīng)用程序中建立一個(gè)可執(zhí)行客戶應(yīng)用程序時(shí)所采取的步驟的流程;以及圖7是一個(gè)用于顯示根據(jù)本發(fā)明優(yōu)選實(shí)施例運(yùn)行可執(zhí)行客戶應(yīng)用程序時(shí)所采取的步驟的流程。
公共對(duì)象請(qǐng)求代理器(CORBA)對(duì)象事務(wù)服務(wù)(OTS)提供一個(gè)稱為“Current”的接口對(duì)象,它具有一個(gè)由客戶應(yīng)用程序(源碼)使用的“Begin”方法,用于向基礎(chǔ)軟件層表明事務(wù)的開始。根據(jù)本發(fā)明的優(yōu)選實(shí)施例,當(dāng)客戶應(yīng)用程序在具體客戶體系上建立或運(yùn)行并包含“Begin”方法時(shí),基礎(chǔ)軟件將以恰當(dāng)?shù)姆绞礁鶕?jù)客戶是可復(fù)原或不可復(fù)原的情況建立事務(wù)狀態(tài)對(duì)象從而恰當(dāng)?shù)亟⑹聞?wù)。
因此,可以不考慮用于建立(編譯和連接)和/或運(yùn)行應(yīng)用程序的客戶平臺(tái)是可復(fù)原或不可復(fù)原而編寫客戶應(yīng)用程序源碼。這在很大程度上簡(jiǎn)化源碼應(yīng)用程序編寫人員的工作??梢跃帉懺创a以簡(jiǎn)便地調(diào)用“Current”對(duì)象的上“Begin”方法而由面向?qū)ο蟮拿郊?fù)責(zé)建立事務(wù)的細(xì)節(jié)(如客戶是可復(fù)原的則以一種方式運(yùn)行及如客戶是不可復(fù)原的則用另一種方式)。
首先,程序員如往常一樣不依賴于任何客戶體系地編寫客戶源碼,但在客戶應(yīng)用程序編寫人員希望開始一個(gè)事務(wù)的地方,應(yīng)用程序編寫人員只需提供一個(gè)標(biāo)志表明“Begin”方法是在“Current”對(duì)象上調(diào)用的(沒有必要強(qiáng)調(diào)有關(guān)在建立時(shí)間或運(yùn)行時(shí)間內(nèi)哪一個(gè)具體體系用于建立本地的或遠(yuǎn)程的事務(wù)的任何細(xì)節(jié))。下面將結(jié)合圖4和5更詳細(xì)地對(duì)此解釋。
其次,一旦編寫完客戶應(yīng)用程序源碼,下一步是自源碼中建立可執(zhí)行應(yīng)用程序。這是眾所周知的涉及編譯和連接階段的兩階段過程(見圖6),這些都是在具體的客戶體系平臺(tái)(可復(fù)原或不可復(fù)原)上完成的。當(dāng)接收到指令要建立源碼時(shí),發(fā)出該指令的人員向編譯程序/連接程序提供待建立源碼文件名稱以及在連接階段中要用的DLL(動(dòng)態(tài)連接庫(kù))文件名稱。編譯程序/連接程序然后進(jìn)而自源碼中建立可執(zhí)行應(yīng)用程序。
第三,一旦建立起可執(zhí)行應(yīng)用程序后,該可執(zhí)行應(yīng)用程序即可在具體客戶體系平臺(tái)(即可復(fù)原客戶或不可復(fù)原客戶)上安裝并運(yùn)行。下面將結(jié)合圖7更詳細(xì)地解釋這一點(diǎn)。
如可執(zhí)行客戶應(yīng)用程序在可復(fù)原客戶上運(yùn)行,則當(dāng)?shù)竭_(dá)可執(zhí)行應(yīng)用程序中調(diào)用DLL文件名稱的那部分(例如transactions.dll)時(shí)(這意味著客戶應(yīng)用程序源碼中已包括了對(duì)“Current”對(duì)象上“Begin”方法的調(diào)用),客戶操作系統(tǒng)在可用于調(diào)用客戶應(yīng)用程序的環(huán)境的搜索路徑中所說明的每個(gè)目錄中尋找名為transactions.dll的文件從而找到此DLL文件。對(duì)于可復(fù)原客戶環(huán)境,DLL文件transactions.dll存放于路徑目錄中的一個(gè)中并包括圖2中所示下列功能。
在步201處,使用本地事務(wù)產(chǎn)生器建立事務(wù)狀態(tài)數(shù)據(jù)從而在本地建立事務(wù)。在步202處,建立的事務(wù)與在其上現(xiàn)正運(yùn)行著客戶應(yīng)用程序的當(dāng)前線程關(guān)連起來。
在執(zhí)行此DLL中的Begin方法后,該事務(wù)開始運(yùn)行,及該可執(zhí)行客戶應(yīng)用程序接著進(jìn)而根據(jù)事務(wù)的實(shí)質(zhì)方面訪問遠(yuǎn)程資源(保持于遠(yuǎn)程服務(wù)器上)。當(dāng)事務(wù)結(jié)束時(shí),客戶發(fā)出一個(gè)合適的事務(wù)執(zhí)行或事務(wù)回滾命令以通知遠(yuǎn)程資源事務(wù)已結(jié)束。
如可執(zhí)行客戶應(yīng)用程序在不可復(fù)原客戶上運(yùn)行,則當(dāng)?shù)竭_(dá)可執(zhí)行應(yīng)用程序中調(diào)用DLL文件名稱(transactions.dll)的那部分時(shí)(這意味著客戶應(yīng)用程序源碼已包括對(duì)“Current”對(duì)象上“Begin”方法的調(diào)用),客戶操作系統(tǒng)在可用于調(diào)用客戶應(yīng)用程序的環(huán)境的搜索路徑中所說明的每個(gè)目錄中尋找名為transactions.dll的文件從而找到此DLL文件。對(duì)于不可復(fù)原客戶環(huán)境,DLL文件transactions.dll存放于路徑目錄中的一個(gè)中并包括圖3中所示下列功能。
在步301處,使用合適的命名服務(wù)找到一個(gè)遠(yuǎn)程事務(wù)產(chǎn)生器及使用遠(yuǎn)程事務(wù)產(chǎn)生器建立事務(wù)狀態(tài)數(shù)據(jù)從而遠(yuǎn)程地建立事務(wù)。在步302處,建立的事務(wù)與在其上現(xiàn)正運(yùn)行著客戶應(yīng)用程序的當(dāng)前線程關(guān)連起來。
在執(zhí)行此DLL中的Begin方法后,該事務(wù)開始運(yùn)行,及該可執(zhí)行客戶應(yīng)用程序接著進(jìn)而根據(jù)事務(wù)的實(shí)質(zhì)方面訪問遠(yuǎn)程資源(保持于遠(yuǎn)程服務(wù)器上)。當(dāng)事務(wù)結(jié)束時(shí),客戶發(fā)出一個(gè)合適的事務(wù)執(zhí)行或事務(wù)回滾命令以通知遠(yuǎn)程資源事務(wù)已結(jié)束。
圖4中顯示一個(gè)可根據(jù)本發(fā)明編寫的簡(jiǎn)化源碼客戶應(yīng)用程序事務(wù)的例子。事務(wù)開始時(shí)發(fā)出一個(gè)對(duì)“Current”對(duì)象的通用“Begin”調(diào)用(401)。事務(wù)的中間部分是對(duì)服務(wù)器的實(shí)際訪問調(diào)用(402)。事務(wù)結(jié)束時(shí)通知服務(wù)器執(zhí)行它們?cè)ㄟ^訪問命令對(duì)它們的資源所作修改(步403)。
以此方式,如圖5中所示,可以編寫客戶應(yīng)用程序源碼而不必考慮到它事實(shí)上將在可復(fù)原或在不可復(fù)原客戶上運(yùn)行。在步501處,客戶應(yīng)用程序源碼編寫人員編寫一個(gè)“Begin”命令以表明將開始一個(gè)事務(wù)并需要建立事務(wù)狀態(tài)數(shù)據(jù)。只需簡(jiǎn)單地使用“Begin”命令而不用其它指令以建立該事務(wù),應(yīng)用程序編寫人員即可表明事務(wù)的開始而不依賴于事實(shí)上將運(yùn)行應(yīng)用程序的客戶的可復(fù)原性。應(yīng)用程序編寫人員只需編寫一個(gè)調(diào)用“Current”對(duì)象上的“Begin”方法的命令而不需要包括有關(guān)如何或在何處建立事務(wù)的任何細(xì)節(jié)。如以上所解釋的,基礎(chǔ)客戶軟件在運(yùn)行過程中將對(duì)此負(fù)責(zé)。
應(yīng)用程序編寫人員然后編寫服務(wù)器訪問命令(圖4的讀和寫命令402)。最后編寫事務(wù)結(jié)束命令(403)(步503)。
圖6中列出了自源碼版本中建立可執(zhí)行客戶應(yīng)用程序時(shí)所采用的步驟。第一,編譯源碼(步601)。第二,如上面所解釋的,對(duì)編譯結(jié)果完成連接階段。此連接操作包括上面解釋的對(duì)文件名稱的標(biāo)識(shí)。所得結(jié)果是接著可在容戶平臺(tái)上運(yùn)行的可執(zhí)行客戶應(yīng)用程序。如上面所解釋的,此可執(zhí)行客戶應(yīng)用程序可在可復(fù)原或不可復(fù)原客戶上運(yùn)行而不必改變碼,這在圖7中得到闡釋。
圖7是顯示在具體客戶平臺(tái)上執(zhí)行所建立的應(yīng)用程序時(shí)所采取步驟的流程圖。第一,開始執(zhí)行所建立的程序(步701)及當(dāng)調(diào)用DLL文件名稱時(shí),在搜索路徑中所說明的目錄中找到文件并運(yùn)行它(如上面所解釋的)(步702)。在第一個(gè)實(shí)施例中,如執(zhí)行應(yīng)用程序的客戶在可復(fù)原平臺(tái)上運(yùn)行,則客戶的目錄中有一個(gè)能在本地建立事務(wù)的DLL。在此同一個(gè)第一實(shí)施例中,如執(zhí)行應(yīng)用程序的客戶在不可復(fù)原平臺(tái)上運(yùn)行,則客戶的目錄中有一個(gè)能遠(yuǎn)程地建立事務(wù)的DLL。然后客戶執(zhí)行完應(yīng)用程序的所有剩余部分(步703)。
通過對(duì)于兩個(gè)平臺(tái)上的相應(yīng)DLL都使用同一文件名稱,圖6中的建立過程可不依賴于將運(yùn)行所建立程序的客戶平臺(tái)而獨(dú)立地完成。也即,不論運(yùn)行此程序的客戶平臺(tái)是可復(fù)原或不可復(fù)原,在連接過程中都可提供同一文件名稱。由于用于運(yùn)行可執(zhí)行應(yīng)用程序的客戶平臺(tái)上只存放著一個(gè)具有共同文件名稱的文件,所以在執(zhí)行過程中能夠訪問正確的DLL文件(步702)。
本發(fā)明的第二實(shí)施例(在圖7的流程反映出來)與第一實(shí)施例不同之處如下。在第一實(shí)施例中,一個(gè)DLL文件(提供圖2中所示功能者)存放于運(yùn)行可執(zhí)行程序的可復(fù)原客戶的目錄中及一個(gè)不同的DLL文件(提供圖3中所示功能者)存放于運(yùn)行可執(zhí)行程序的不可復(fù)原客戶的目錄中。在第二實(shí)施例中,同一個(gè)DLL文件同時(shí)存放于運(yùn)行可執(zhí)行程序的可復(fù)原和不可復(fù)原客戶兩者之中并包括圖2和圖3兩者的功能。DLL文件還包括下列功能確定運(yùn)行應(yīng)用程序的客戶是可復(fù)原的或不可復(fù)原的(例如使用一個(gè)環(huán)境變量),然后相應(yīng)地執(zhí)行圖2或圖3的功能。
在第三實(shí)施例中,在連接階段中(圖6的602)實(shí)現(xiàn)選擇圖2的步驟或圖3的步驟的功能。在連接過程中,根據(jù)運(yùn)行應(yīng)用程序的客戶是可復(fù)原或不可復(fù)原這一事實(shí)表明一個(gè)合適的文件名稱。因此當(dāng)運(yùn)行應(yīng)用程序時(shí),在圖7的步702處訪問一個(gè)合適的DLL文件。在此第三實(shí)施例中,兩個(gè)DLL文件必須具有單一的文件名稱以使它們能在連接和執(zhí)行過程中被正確地標(biāo)識(shí)。
權(quán)利要求
1.一種編寫在客戶/服務(wù)器計(jì)算系統(tǒng)中的客戶上執(zhí)行的源碼計(jì)算機(jī)程序的方法,所述計(jì)算機(jī)程序包括其中包括訪問服務(wù)器上資源的命令的事務(wù),所述方法包括以下步驟使用開始命令表明事務(wù)的開始;使用訪問命令表明事務(wù)的中間部分;以及使用執(zhí)行命令或回滾命令表明事務(wù)的結(jié)束;其特征在于所述表明事務(wù)開始的步驟是在不依賴于所述客戶是否可復(fù)原的情況下完成的。
2.一種處理在客戶/服務(wù)器計(jì)算系統(tǒng)中的客戶上運(yùn)行的源碼計(jì)算機(jī)程序的方法,該源碼計(jì)算機(jī)程序包括一條事務(wù)開始命令,訪問服務(wù)器上資源的命令和一條事務(wù)結(jié)束命令,其中事務(wù)開始命令是在不依賴于所述客戶是否可復(fù)原的情況下編寫的,該方法包括對(duì)所述事務(wù)開始命令作出響應(yīng)的下列步驟如所述客戶是可復(fù)原的則在所述客戶上就地建立事務(wù);以及如所述客戶是不可復(fù)原的則相對(duì)于所述客戶遠(yuǎn)程地建立事務(wù)。
3.權(quán)利要求2的方法,其特征在于根據(jù)連接過程中標(biāo)明的相應(yīng)文件來選擇兩個(gè)建立步驟中的一個(gè)。
4.權(quán)利要求2的方法,其特征在于根據(jù)對(duì)連接過程中標(biāo)明的兩個(gè)建立步驟都是公共的文件來選擇兩個(gè)建立步驟中的一個(gè)。
5.權(quán)利要求3的方法,其特征在于每個(gè)相應(yīng)的文件都具有相同文件名稱。
6.一種存放于可由計(jì)算機(jī)讀取的存儲(chǔ)介質(zhì)上用于在客戶/服務(wù)器計(jì)算系統(tǒng)中的客戶上執(zhí)行的源碼計(jì)算機(jī)程序,所述計(jì)算機(jī)程序包括其中包括訪問服務(wù)器上資源的命令的事務(wù),所述源碼計(jì)算機(jī)程序包括用于完成下列功能的相應(yīng)碼部分使用一條開始命令表明事務(wù)的開始以請(qǐng)求建立事務(wù)狀態(tài)數(shù)據(jù);使用訪問命令表明事務(wù)的中間部分;以及使用或者一條執(zhí)行命令或者一條回滾命令表明事務(wù)的結(jié)束;其特征在于所述表明事務(wù)開始的步驟是在不依賴于所述客戶是否可復(fù)原的情況下完成的。
7.一種存放于可由計(jì)算機(jī)讀取的存儲(chǔ)介質(zhì)上用于處理在客戶/服務(wù)器計(jì)算系統(tǒng)中的客戶上運(yùn)行的源碼計(jì)算機(jī)程序的計(jì)算機(jī)程序產(chǎn)品,該源碼計(jì)算機(jī)程序包括一條事務(wù)開始命令,訪問服務(wù)器上資源的命令和一條事務(wù)結(jié)束命令,其中所述事務(wù)開始命令是在不依賴于所述客戶是否可復(fù)原的情況下編寫的,該計(jì)算機(jī)程序產(chǎn)品包括對(duì)所述開始命令作出響應(yīng)用于完成下列步驟的軟件碼部分如所述客戶是可復(fù)原的則在所述客戶上就地建立事務(wù);以及如所述客戶是不可復(fù)原的則相對(duì)于所述客戶遠(yuǎn)程地建立事務(wù)。
8.權(quán)利要求7的計(jì)算機(jī)程序產(chǎn)品,其特征在于根據(jù)連接過程中標(biāo)明的相應(yīng)文件選擇兩個(gè)建立步驟中的一個(gè)。
9.權(quán)利要求7的計(jì)算機(jī)程序產(chǎn)品,其特征在于根據(jù)對(duì)連接過程中標(biāo)明的兩個(gè)建立步驟都是公共的文件來選擇兩個(gè)建立步驟中的一個(gè)。
10.權(quán)利要求8的計(jì)算機(jī)程序產(chǎn)品,其特征在于每個(gè)相應(yīng)文件都有相同文件名稱。
全文摘要
客戶/服務(wù)器媒件將一個(gè)源碼客戶應(yīng)用程序進(jìn)行處理以便當(dāng)應(yīng)用程序表明事務(wù)的開始時(shí),為可復(fù)原客戶自動(dòng)地在本地建立事務(wù)和為不可復(fù)原客戶遠(yuǎn)程地建立事務(wù)。因此可不考慮事務(wù)是在本地還是遠(yuǎn)程地建立而編寫源碼客戶應(yīng)用程序,該媒件負(fù)責(zé)此功能。
文檔編號(hào)G06F9/46GK1201187SQ98106480
公開日1998年12月9日 申請(qǐng)日期1998年4月10日 優(yōu)先權(quán)日1997年5月12日
發(fā)明者小羅伯特·霍華德·海伊, 西蒙·霍爾茲沃思, 馬丁·馬爾霍蘭, 凱思林·薩拉·沃爾 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1