一種面向統(tǒng)一接口調(diào)用的運(yùn)行時(shí)系統(tǒng)及運(yùn)行方法
【專利摘要】本發(fā)明公開了一種面向統(tǒng)一接口調(diào)用的運(yùn)行時(shí)系統(tǒng)及運(yùn)行方法,屬于計(jì)算機(jī)領(lǐng)域。運(yùn)行時(shí)系統(tǒng)包括:“運(yùn)行時(shí)系統(tǒng)代理”裝置、“運(yùn)行時(shí)系統(tǒng)”裝置、“函數(shù)接口服務(wù)器”裝置、“通道”裝置和“網(wǎng)絡(luò)”裝置。運(yùn)行時(shí)系統(tǒng)的運(yùn)行方法包括:注冊“第三方函數(shù)組件庫”的函數(shù);“應(yīng)用程序”加載“運(yùn)行時(shí)系統(tǒng)代理”;“應(yīng)用程序”所要調(diào)用的函數(shù)由“運(yùn)行時(shí)系統(tǒng)代理”轉(zhuǎn)交給“運(yùn)行時(shí)系統(tǒng)”;“運(yùn)行時(shí)系統(tǒng)”根據(jù)函數(shù)接口信息找到對應(yīng)“第三方函數(shù)組件庫”、執(zhí)行該函數(shù)實(shí)例并將執(zhí)行結(jié)果回送給“運(yùn)行時(shí)系統(tǒng)代理”;“運(yùn)行時(shí)系統(tǒng)代理”將該結(jié)果返給“應(yīng)用程序”。本發(fā)明通過構(gòu)建統(tǒng)一接口調(diào)用的運(yùn)行時(shí)系統(tǒng)實(shí)現(xiàn)不同編程語言的組件庫間復(fù)用、透明計(jì)算和減少應(yīng)用開銷。
【專利說明】
一種面向統(tǒng)一接口調(diào)用的運(yùn)行時(shí)系統(tǒng)及運(yùn)行方法
技術(shù)領(lǐng)域
[0001]本發(fā)明屬于計(jì)算機(jī)領(lǐng)域,主要關(guān)注不同編程語言的組件庫之間有效復(fù)用以及透明計(jì)算。
【背景技術(shù)】
[0002]目前雖然有各種分布式組件技術(shù)來支持應(yīng)用程序的計(jì)算分散運(yùn)行,但是仍然有如下問題:其一、各種Java類庫、C/C++二進(jìn)制類庫等不同編程語言實(shí)現(xiàn)的高質(zhì)量類庫無法共享復(fù)用,應(yīng)用程序必須選擇某一種編程技術(shù),這大大限制了應(yīng)用程序的開發(fā)效率,同時(shí)也增大了應(yīng)用程序運(yùn)行時(shí)資源的消耗,例如應(yīng)用程序越來越胖從而消耗大量內(nèi)存;其二、針對各種異構(gòu)的分布式組件的訪問效率低下,雖然面向服務(wù)體系架構(gòu)SOA技術(shù)在此方面取得了很大進(jìn)展,但是仍然需要應(yīng)用程序靜態(tài)或者動態(tài)訪問各種組件,沒有解決訪問效率;其三、很難支持在不修改應(yīng)用程序的前提下實(shí)現(xiàn)透明計(jì)算。
【發(fā)明內(nèi)容】
[0003]本發(fā)明目的是為了實(shí)現(xiàn)不同編程語言的組件庫之間有效復(fù)用,實(shí)現(xiàn)透明計(jì)算,減少應(yīng)用系統(tǒng)開銷。提供一種面向統(tǒng)一接口調(diào)用的運(yùn)行時(shí)系統(tǒng)及運(yùn)行方法。
[0004]本發(fā)明技術(shù)方案
[0005]1.—種面向統(tǒng)一接口調(diào)用的運(yùn)行時(shí)系統(tǒng),所述系統(tǒng)包括“運(yùn)行時(shí)系統(tǒng)代理”裝置、“運(yùn)行時(shí)系統(tǒng)”裝置、“函數(shù)接□服務(wù)器”裝置、“通道”裝置和“網(wǎng)絡(luò)”裝置;“運(yùn)行時(shí)系統(tǒng)代理”裝置,主要是負(fù)責(zé)監(jiān)控、接收和返回“應(yīng)用程序”執(zhí)行過程中請求調(diào)用“函數(shù)”的執(zhí)行代理;“運(yùn)行時(shí)系統(tǒng)”裝置,主要是負(fù)責(zé)“第三方函數(shù)組件庫”的“函數(shù)”注冊、管理和檢索,以及請求調(diào)用函數(shù)實(shí)例的具體執(zhí)行;“函數(shù)接口服務(wù)器”裝置,主要是負(fù)責(zé)整個(gè)網(wǎng)絡(luò)中各個(gè)“運(yùn)行時(shí)系統(tǒng)”中提供函“第三方函數(shù)組件庫”的“函數(shù)”注冊、管理和檢索服務(wù);“運(yùn)行時(shí)系統(tǒng)代理”裝置和“運(yùn)行時(shí)系統(tǒng)”裝置通過“通道”裝置互聯(lián);“運(yùn)行時(shí)系統(tǒng)”裝置和“函數(shù)接口服務(wù)器”裝置通過“網(wǎng)絡(luò)”裝置互聯(lián);“運(yùn)行時(shí)系統(tǒng)代理”裝置和“函數(shù)接口服務(wù)器”裝置不直接互聯(lián);
[0006]其中,
[0007]“運(yùn)行時(shí)系統(tǒng)代理”裝置包括:函數(shù)執(zhí)行監(jiān)控模塊、函數(shù)執(zhí)行請求代理模塊、函數(shù)執(zhí)行請求封裝模塊、“函數(shù)統(tǒng)一接口”請求發(fā)送模塊、“函數(shù)統(tǒng)一接口”結(jié)果接收模塊、函數(shù)執(zhí)行結(jié)果拆裝模塊;函數(shù)執(zhí)行監(jiān)控模塊負(fù)責(zé)動態(tài)監(jiān)控“應(yīng)用程序”執(zhí)行過程中請求調(diào)用“函數(shù)”的執(zhí)行,并負(fù)責(zé)將該函數(shù)調(diào)用實(shí)例交給函數(shù)執(zhí)行請求代理模塊來代理執(zhí)行以及將該函數(shù)調(diào)用實(shí)例的執(zhí)行結(jié)果返回給“應(yīng)用程序”;函數(shù)執(zhí)行請求封裝模塊負(fù)責(zé)將該函數(shù)調(diào)用實(shí)例轉(zhuǎn)化為“函數(shù)統(tǒng)一接口”實(shí)例;函數(shù)執(zhí)行結(jié)果拆裝模塊負(fù)責(zé)將“函數(shù)統(tǒng)一接口”實(shí)例執(zhí)行結(jié)果轉(zhuǎn)化為函數(shù)調(diào)用實(shí)例執(zhí)行結(jié)果;“函數(shù)統(tǒng)一接口”請求發(fā)送模塊負(fù)責(zé)將“函數(shù)統(tǒng)一接口”實(shí)例發(fā)送到“通道”中;“函數(shù)統(tǒng)一接口”結(jié)果接收模塊負(fù)責(zé)從“通道”中獲得“函數(shù)統(tǒng)一接口”實(shí)例執(zhí)行結(jié)果,并交給函數(shù)執(zhí)行請求代理模塊;函數(shù)執(zhí)行請求代理模塊負(fù)責(zé)接收來自“應(yīng)用程序”或者函數(shù)執(zhí)行監(jiān)控模塊的函數(shù)調(diào)用實(shí)例,函數(shù)執(zhí)行請求代理模塊通過函數(shù)執(zhí)行請求封裝模塊將函數(shù)調(diào)用實(shí)例轉(zhuǎn)化為“函數(shù)統(tǒng)一接口”實(shí)例,并通過“函數(shù)統(tǒng)一接口”請求發(fā)送模塊將該“函數(shù)統(tǒng)一接口”實(shí)例進(jìn)一步發(fā)送到“通道”中,并通過函數(shù)執(zhí)行結(jié)果拆裝模塊將該“函數(shù)統(tǒng)一接口”實(shí)例執(zhí)行結(jié)果轉(zhuǎn)化為該函數(shù)調(diào)用實(shí)例執(zhí)行結(jié)果,以及將該函數(shù)調(diào)用實(shí)例執(zhí)行結(jié)果返回給對應(yīng)的調(diào)用者;
[0008]“運(yùn)行時(shí)系統(tǒng)”裝置包括:業(yè)務(wù)模塊組、網(wǎng)絡(luò)通信模塊和持久存儲模塊;業(yè)務(wù)模塊組包括函數(shù)信息注冊模塊、函數(shù)信息管理模塊、函數(shù)信息檢索模塊、函數(shù)信息庫、函數(shù)實(shí)例庫、“函數(shù)統(tǒng)一接口”實(shí)例收發(fā)模塊、函數(shù)實(shí)例調(diào)度模塊和函數(shù)實(shí)例執(zhí)行模塊;函數(shù)信息注冊模塊與函數(shù)信息庫連接,負(fù)責(zé)“第三方函數(shù)組件庫”的“函數(shù)”接口信息的登記注冊;函數(shù)信息管理模塊與函數(shù)信息庫連接,負(fù)責(zé)對已注冊的“函數(shù)”接口信息的信息維護(hù),包括修改、刪除、合并、關(guān)聯(lián)、發(fā)布和撤銷“函數(shù)”接口信息;函數(shù)信息檢索模塊與函數(shù)信息庫和函數(shù)實(shí)例執(zhí)行模塊連接,負(fù)責(zé)從函數(shù)信息庫中對“函數(shù)”接口信息的檢索查詢、以及為函數(shù)實(shí)例執(zhí)行模塊提供“函數(shù)”接口信息的檢索查詢服務(wù);函數(shù)信息庫負(fù)責(zé)提供“函數(shù)”接口信息基礎(chǔ)數(shù)據(jù)訪問;函數(shù)實(shí)例庫分別與“函數(shù)統(tǒng)一接口”實(shí)例收發(fā)模塊、函數(shù)實(shí)例調(diào)度模塊和函數(shù)實(shí)例執(zhí)行模塊連接,負(fù)責(zé)提供函數(shù)實(shí)例信息基礎(chǔ)數(shù)據(jù)訪問;“函數(shù)統(tǒng)一接口”實(shí)例收發(fā)模塊負(fù)責(zé)接收“運(yùn)行時(shí)系統(tǒng)代理”發(fā)來的“函數(shù)統(tǒng)一接口”實(shí)例執(zhí)行請求、以及返回“函數(shù)統(tǒng)一接口”實(shí)例執(zhí)行結(jié)果給對應(yīng)的“運(yùn)行時(shí)系統(tǒng)代理”;函數(shù)實(shí)例執(zhí)行模塊負(fù)責(zé)具體加載“函數(shù)統(tǒng)一接口”實(shí)例所對應(yīng)“第三方函數(shù)組件庫”并執(zhí)行對應(yīng)的函數(shù)調(diào)用實(shí)例;函數(shù)實(shí)例調(diào)度模塊分別與“函數(shù)統(tǒng)一接口”實(shí)例收發(fā)模塊和函數(shù)實(shí)例執(zhí)行模塊連接,負(fù)責(zé)對待執(zhí)行“函數(shù)統(tǒng)一接口”實(shí)例的執(zhí)行優(yōu)先級及先后順序進(jìn)行管理、以及協(xié)調(diào)“函數(shù)統(tǒng)一接口”實(shí)例收發(fā)模塊和函數(shù)實(shí)例執(zhí)行模塊的運(yùn)行;業(yè)務(wù)模塊組中的各個(gè)模塊通過網(wǎng)絡(luò)通信模塊實(shí)現(xiàn)與其它裝置的網(wǎng)絡(luò)通信;函數(shù)信息庫和函數(shù)實(shí)例庫的數(shù)據(jù)持久保存在持久存儲模塊中;
[0009]“函數(shù)接口服務(wù)器”裝置包括:業(yè)務(wù)模塊組、網(wǎng)絡(luò)通信模塊和持久存儲模塊;業(yè)務(wù)模塊組包括函數(shù)信息注冊模塊、函數(shù)信息管理模塊、函數(shù)信息檢索模塊和函數(shù)信息庫;函數(shù)信息注冊模塊、函數(shù)信息管理模塊和函數(shù)信息檢索模塊分別與函數(shù)信息庫連接;函數(shù)信息注冊模塊負(fù)責(zé)“第三方函數(shù)組件庫”的“函數(shù)”接口信息的登記注冊;函數(shù)信息管理模塊負(fù)責(zé)對已注冊的“函數(shù)”接口信息的信息維護(hù),包括修改、刪除、合并、關(guān)聯(lián)、發(fā)布和撤銷“函數(shù)”接口信息;函數(shù)信息檢索模塊負(fù)責(zé)“函數(shù)”接口信息的檢索查詢;函數(shù)信息庫負(fù)責(zé)提供“函數(shù)”接口信息基礎(chǔ)數(shù)據(jù)訪問;業(yè)務(wù)模塊組中的各個(gè)模塊通過網(wǎng)絡(luò)通信模塊實(shí)現(xiàn)與其它裝置的網(wǎng)絡(luò)通信;函數(shù)信息庫的數(shù)據(jù)持久保存在持久存儲模塊中。
[0010]所述系統(tǒng)中,“應(yīng)用程序”執(zhí)行過程中請求調(diào)用“函數(shù)”的函數(shù)代碼具體執(zhí)行是由“運(yùn)行時(shí)系統(tǒng)”裝置來完成,“應(yīng)用程序”本身并不真正執(zhí)行請求調(diào)用“函數(shù)”的函數(shù)代碼;“應(yīng)用程序”將將請求調(diào)用“函數(shù)”的“函數(shù)調(diào)用實(shí)例”交給“運(yùn)行時(shí)系統(tǒng)代理”裝置,“運(yùn)行時(shí)系統(tǒng)代理”裝置進(jìn)一步通過“通道”裝置將請求調(diào)用“函數(shù)”的“函數(shù)調(diào)用實(shí)例”傳遞給“運(yùn)行時(shí)系統(tǒng)”裝置;當(dāng)“運(yùn)行時(shí)系統(tǒng)代理”裝置和“運(yùn)行時(shí)系統(tǒng)”裝置在同一個(gè)計(jì)算機(jī)結(jié)點(diǎn)時(shí)“通道”裝置可采用進(jìn)程間通信技術(shù)實(shí)現(xiàn),當(dāng)“運(yùn)行時(shí)系統(tǒng)代理”裝置和“運(yùn)行時(shí)系統(tǒng)”裝置不在同一個(gè)計(jì)算機(jī)結(jié)點(diǎn)時(shí)“通道”裝置可采用網(wǎng)絡(luò)消息隊(duì)列技術(shù)實(shí)現(xiàn);“運(yùn)行時(shí)系統(tǒng)”裝置中的“函數(shù)實(shí)例執(zhí)行”模塊來負(fù)責(zé)具體執(zhí)行“應(yīng)用程序”所請求調(diào)用的“函數(shù)”,“函數(shù)實(shí)例執(zhí)行”模塊既可以在“運(yùn)行時(shí)系統(tǒng)”裝置內(nèi)直接運(yùn)行來完成、也可以由“運(yùn)行時(shí)系統(tǒng)”裝置調(diào)用“第三方函數(shù)組件庫”的外部服務(wù)程序來完成、還可以由“運(yùn)行時(shí)系統(tǒng)”裝置委托網(wǎng)上的其它“運(yùn)行時(shí)系統(tǒng)”裝置來完成;“函數(shù)接口服務(wù)器”裝置不負(fù)責(zé)具體執(zhí)行“應(yīng)用程序”所請求調(diào)用的“函數(shù)”代碼。
[0011]所述系統(tǒng)中,只有在“運(yùn)行時(shí)系統(tǒng)”裝置中直接注冊的“函數(shù)”才能在該“運(yùn)行時(shí)系統(tǒng)”裝置中直接運(yùn)行來完成、或者由“運(yùn)行時(shí)系統(tǒng)”裝置調(diào)用“第三方函數(shù)組件庫”的外部服務(wù)程序來完成;“運(yùn)行時(shí)系統(tǒng)”裝置具體采用上述兩種方式的哪一種則取決于“應(yīng)用程序”所請求調(diào)用“函數(shù)”所屬的組件庫類型;“運(yùn)行時(shí)系統(tǒng)”裝置所支持的“第三方函數(shù)組件庫”的組件庫類型包括Corba、EJB、COM+、Web Service、0LE、Java庫代碼、DLL庫代碼和SO庫代碼。
[0012]所述系統(tǒng)中,“運(yùn)行時(shí)系統(tǒng)代理”裝置既可以在“應(yīng)用程序”進(jìn)程空間內(nèi)來運(yùn)行,也可以作為獨(dú)立的進(jìn)程來運(yùn)行;“運(yùn)行時(shí)系統(tǒng)代理”裝置在“應(yīng)用程序”進(jìn)程空間內(nèi)來運(yùn)行時(shí),“應(yīng)用程序”需要將“運(yùn)行時(shí)系統(tǒng)代理”裝置的代碼編譯鏈接到該“應(yīng)用程序”中;“運(yùn)行時(shí)系統(tǒng)代理”裝置監(jiān)控“應(yīng)用程序”所請求調(diào)用“函數(shù)”有兩種方法:第一種方法為“應(yīng)用程序”所請求調(diào)用“函數(shù)”的實(shí)現(xiàn)代碼改寫為將該調(diào)用“函數(shù)”及其參數(shù)傳遞給“運(yùn)行時(shí)系統(tǒng)代理”裝置的函數(shù)執(zhí)行請求代理模塊;第二種方法為“運(yùn)行時(shí)系統(tǒng)代理”裝置中函數(shù)執(zhí)行監(jiān)控模塊采用函數(shù)鉤子技術(shù)來對“應(yīng)用程序”所請求調(diào)用“函數(shù)”增加監(jiān)控鉤子函數(shù)代碼。
[0013]所述系統(tǒng)中,“運(yùn)行時(shí)系統(tǒng)”裝置中“函數(shù)”的注冊信息需要包括函數(shù)唯一索引號、函數(shù)類別號、函數(shù)名、參數(shù)個(gè)數(shù)、{參數(shù)名、參數(shù)類型}序列表、函數(shù)所屬組件庫類型、函數(shù)所屬組件庫名稱、函數(shù)所屬組件庫訪問路徑、函數(shù)所屬組件庫開發(fā)商唯一索引號、運(yùn)行平均時(shí)間、運(yùn)行可靠性評估值;“函數(shù)接口服務(wù)器”裝置上“函數(shù)”的注冊信息需要包括函數(shù)唯一索引號、函數(shù)類別號、函數(shù)名、參數(shù)個(gè)數(shù)、{參數(shù)名、參數(shù)類型}序列表、函數(shù)所屬組件庫類型、函數(shù)所屬組件庫名稱、函數(shù)所屬組件庫訪問路徑、函數(shù)所屬組件庫開發(fā)商唯一索引號、所屬“運(yùn)行時(shí)系統(tǒng)”裝置唯一索引號、所屬“運(yùn)行時(shí)系統(tǒng)”裝置訪問路徑、運(yùn)行平均時(shí)間和運(yùn)行可靠性評估值。
[0014]所述系統(tǒng)中,“運(yùn)行時(shí)系統(tǒng)代理”裝置和“運(yùn)行時(shí)系統(tǒng)”裝置之間采用“函數(shù)統(tǒng)一接口”格式進(jìn)行函數(shù)請求調(diào)用和執(zhí)行結(jié)果信息的表達(dá);“運(yùn)行時(shí)系統(tǒng)”裝置和“函數(shù)接口服務(wù)器”裝置之間采用“函數(shù)統(tǒng)一接口”格式進(jìn)行函數(shù)接口信息的查詢;不同“運(yùn)行時(shí)系統(tǒng)”裝置之間采用采用“函數(shù)統(tǒng)一接口”格式進(jìn)行函數(shù)請求調(diào)用和執(zhí)行結(jié)果信息的表達(dá);“函數(shù)統(tǒng)一接口”格式采用可擴(kuò)展標(biāo)記語言對函數(shù)的聲明、調(diào)用以及執(zhí)行結(jié)果信息進(jìn)行描述;“函數(shù)統(tǒng)一接口”實(shí)例既可以為文件,也可以為字節(jié)流。
[0015]所述系統(tǒng)中,“應(yīng)用程序”執(zhí)行過程中請求調(diào)用“函數(shù)”的“函數(shù)調(diào)用實(shí)例”信息需要包括函數(shù)所屬組件庫名稱、函數(shù)名、參數(shù)個(gè)數(shù)、{參數(shù)名、參數(shù)值}序列表;“函數(shù)統(tǒng)一接口”實(shí)例信息需要包括函數(shù)實(shí)例唯一索引號、函數(shù)所屬組件庫類型、函數(shù)所屬組件庫名稱、函數(shù)名、參數(shù)個(gè)數(shù)、{參數(shù)名、參數(shù)值}序列表、函數(shù)最大執(zhí)行時(shí)間;“函數(shù)統(tǒng)一接口”實(shí)例的執(zhí)行結(jié)果需要包括函數(shù)實(shí)例唯一索引號、函數(shù)唯一索引號、函數(shù)類別號、函數(shù)名、所屬“運(yùn)行時(shí)系統(tǒng)”唯一索引號、結(jié)果參數(shù)個(gè)數(shù)、{結(jié)果參數(shù)名、結(jié)果參數(shù)值}序列表、運(yùn)行實(shí)際時(shí)間。
[0016]所述系統(tǒng)中,“運(yùn)行時(shí)系統(tǒng)”裝置中,“函數(shù)實(shí)例庫”可針對待執(zhí)行“函數(shù)統(tǒng)一接口”實(shí)例分為多個(gè)優(yōu)先級隊(duì)列,并由“函數(shù)實(shí)例調(diào)度”模塊來設(shè)置“函數(shù)統(tǒng)一接口”實(shí)例執(zhí)行的優(yōu)先級以及優(yōu)先級隊(duì)列;“函數(shù)實(shí)例調(diào)度”模塊通過操作系統(tǒng)提供的各種進(jìn)程間或者線程間通信機(jī)制來與“函數(shù)統(tǒng)一接口”實(shí)例收發(fā)模塊、“函數(shù)實(shí)例執(zhí)行”模塊進(jìn)行協(xié)作運(yùn)行。
[0017]2.—種面向統(tǒng)一接口調(diào)用的運(yùn)行時(shí)系統(tǒng)的運(yùn)行方法,所述方法包括具體步驟如下:
[0018]第I步、“第三方函數(shù)組件庫”的“函數(shù)”可隨時(shí)注冊到“運(yùn)行時(shí)系統(tǒng)”;
[0019]第2步、“運(yùn)行時(shí)系統(tǒng)”中已注冊“函數(shù)”信息隨時(shí)更新到“函數(shù)接□服務(wù)器”;
[0020]第3步、“應(yīng)用程序”啟動,并加載“運(yùn)行時(shí)系統(tǒng)代理”;“運(yùn)行時(shí)系統(tǒng)代理”連接當(dāng)前指定的“運(yùn)行時(shí)系統(tǒng)”,當(dāng)前指定的“運(yùn)行時(shí)系統(tǒng)”簡稱為當(dāng)前“運(yùn)行時(shí)系統(tǒng)”;
[0021]第4步、“應(yīng)用程序”繼續(xù)運(yùn)行,直至“應(yīng)用程序”執(zhí)行退出函數(shù)或者“應(yīng)用程序”執(zhí)行到請求調(diào)用“運(yùn)行時(shí)系統(tǒng)代理”所負(fù)責(zé)的“函數(shù)”;若“應(yīng)用程序”繼續(xù)運(yùn)行過程中請求調(diào)用“運(yùn)行時(shí)系統(tǒng)代理”所負(fù)責(zé)的“函數(shù)”,則執(zhí)行第5步;若“應(yīng)用程序”執(zhí)行退出函數(shù),則執(zhí)行第15步;
[0022]第5步、“應(yīng)用程序”運(yùn)行過程中請求調(diào)用“運(yùn)行時(shí)系統(tǒng)代理”所負(fù)責(zé)的“函數(shù)”時(shí),“運(yùn)行時(shí)系統(tǒng)代理”將該“函數(shù)”的“函數(shù)調(diào)用實(shí)例”轉(zhuǎn)化為對應(yīng)的“函數(shù)統(tǒng)一接口”實(shí)例,并將該“函數(shù)統(tǒng)一接口”實(shí)例轉(zhuǎn)交給當(dāng)前“運(yùn)行時(shí)系統(tǒng)”等待處理結(jié)果;
[0023]第6步、當(dāng)前“運(yùn)行時(shí)系統(tǒng)”接收到待執(zhí)行的“函數(shù)統(tǒng)一接口”實(shí)例后,檢索本地“函數(shù)信息庫”查找該“函數(shù)統(tǒng)一接口”實(shí)例所對應(yīng)的“第三發(fā)函數(shù)組件庫”信息,若檢索到該“函數(shù)統(tǒng)一接口”實(shí)例所對應(yīng)的“第三發(fā)函數(shù)組件庫”信息則執(zhí)行第10步,否則執(zhí)行第7步;
[0024]第7步、當(dāng)前“運(yùn)行時(shí)系統(tǒng)”向“函數(shù)接□服務(wù)器”提出請求檢索第5步中“函數(shù)統(tǒng)一接口”實(shí)例所對應(yīng)的函數(shù)注冊信息,若“函數(shù)接口服務(wù)器”返回結(jié)果未檢索到該“函數(shù)統(tǒng)一接口”實(shí)例所對應(yīng)的函數(shù)注冊信息則執(zhí)行第11步,否則執(zhí)行第8步;
[0025]第8步、當(dāng)前“運(yùn)行時(shí)系統(tǒng)”將請求第7步中檢索到的該函數(shù)所注冊的異地“運(yùn)行時(shí)系統(tǒng)”來完成該“函數(shù)統(tǒng)一接口”實(shí)例的執(zhí)行,若異地“運(yùn)行時(shí)系統(tǒng)”未正常提供服務(wù)則執(zhí)行第11步,否則執(zhí)行第9步;
[0026]第9步、當(dāng)前“運(yùn)行時(shí)系統(tǒng)”獲得異地“運(yùn)行時(shí)系統(tǒng)”返回的“函數(shù)統(tǒng)一接口”實(shí)例執(zhí)行結(jié)果作為第6步中“函數(shù)統(tǒng)一接口”實(shí)例執(zhí)行結(jié)果,并執(zhí)行第12步;
[0027]第10步、當(dāng)前“運(yùn)行時(shí)系統(tǒng)”通過“函數(shù)實(shí)例執(zhí)行模塊”調(diào)用“函數(shù)統(tǒng)一接口”實(shí)例所對應(yīng)的函數(shù)組件庫來執(zhí)行該“函數(shù)統(tǒng)一接口”實(shí)例,并將該“函數(shù)統(tǒng)一接口”實(shí)例執(zhí)行結(jié)果作為第6步中“函數(shù)統(tǒng)一接口”實(shí)例執(zhí)行結(jié)果;并進(jìn)一步執(zhí)行第12步;
[0028]第11步、當(dāng)前“運(yùn)行時(shí)系統(tǒng)”將第6步中“函數(shù)統(tǒng)一接口”實(shí)例執(zhí)行結(jié)果設(shè)置為“執(zhí)行異?!?;
[0029]第12步、當(dāng)前“運(yùn)行時(shí)系統(tǒng)”將第6步中“函數(shù)統(tǒng)一接口”實(shí)例執(zhí)行結(jié)果返回給“運(yùn)行時(shí)系統(tǒng)代理”;
[0030]第13步、“運(yùn)行時(shí)系統(tǒng)代理”將第12步中“函數(shù)統(tǒng)一接口”實(shí)例執(zhí)行結(jié)果轉(zhuǎn)化為“函數(shù)調(diào)用實(shí)例”執(zhí)行結(jié)果,并將該“函數(shù)調(diào)用實(shí)例”執(zhí)行結(jié)果返回給“應(yīng)用程序”;
[0031]第14步、“應(yīng)用程序”繼續(xù)執(zhí)行第4步;
[0032]第15步、“應(yīng)用程序”執(zhí)行結(jié)束。
[0033]所述方法中,當(dāng)“運(yùn)行時(shí)系統(tǒng)”在“函數(shù)信息庫”檢索到“函數(shù)統(tǒng)一接口”實(shí)例對應(yīng)有不止一個(gè)的函數(shù)信息時(shí),“運(yùn)行時(shí)系統(tǒng)”既可以隨機(jī)選取一個(gè)函數(shù)組件庫來運(yùn)行,也可以根據(jù)該組“函數(shù)”信息中的輔助信息來決定選擇哪一個(gè)函數(shù)組件庫來運(yùn)行,“函數(shù)”信息中的輔助信息包括運(yùn)行平均時(shí)間、運(yùn)行可靠性評估值以及函數(shù)所屬組件庫開發(fā)商唯一索引號中的全部或者部分;
[0034]所述方法中,當(dāng)“函數(shù)接□服務(wù)器”在“函數(shù)信息庫”檢索到“函數(shù)統(tǒng)一接口”實(shí)例對應(yīng)有不止一個(gè)的函數(shù)信息時(shí),“函數(shù)接口服務(wù)器”既可以隨機(jī)選取一個(gè)函數(shù)組件庫來運(yùn)行,也可以根據(jù)該組“函數(shù)”信息中的輔助信息來決定選擇哪一個(gè)函數(shù)組件庫來運(yùn)行,“函數(shù)”信息中的輔助信息包括運(yùn)行平均時(shí)間、運(yùn)行可靠性評估值、函數(shù)所屬組件庫開發(fā)商唯一索引號以及所屬“運(yùn)行時(shí)系統(tǒng)”唯一索引號中的全部或者部分。
[0035]本發(fā)明所涉及的具體內(nèi)容及所述術(shù)語的含義是:
[0036](I)函數(shù):指實(shí)現(xiàn)某種功能的可執(zhí)行代碼片段,且該代碼片段有輸入輸出參數(shù)。本發(fā)明中將函數(shù)funct1n、過程procedure、服務(wù)service、腳本shell均視為可互通概念,它們都是實(shí)現(xiàn)某種功能的可執(zhí)行代碼片段;函數(shù)包括函數(shù)接口信息和函數(shù)實(shí)現(xiàn)代碼;
[0037](2)組件庫:指軟件開發(fā)商提供的實(shí)現(xiàn)特定功能的一組函數(shù)集合,組件庫包括Corba、EJB、COM+、Web Service、Java庫代碼、DLL庫代碼、SO庫代碼、DC0M、0LE等等,這些組件庫有的需要在應(yīng)用程序的進(jìn)程空間內(nèi)執(zhí)行,有的需要在獨(dú)立的進(jìn)程空間內(nèi)執(zhí)行,有的需要在網(wǎng)絡(luò)上的其它計(jì)算機(jī)結(jié)點(diǎn)上執(zhí)行,這些統(tǒng)稱為組件庫;一個(gè)組件庫可以包括一個(gè)或者多個(gè)函數(shù);本發(fā)明中“第三方函數(shù)組件庫”和組件庫均視為可互通概念;
[0038](3)函數(shù)接口信息:指函數(shù)的定義聲明,一般包括函數(shù)名、參數(shù)個(gè)數(shù)、{參數(shù)名、參數(shù)類型}序列表、函數(shù)所屬組件庫類型、函數(shù)所屬組件庫名稱、函數(shù)所屬組件庫訪問路徑、函數(shù)唯一索引號;函數(shù)接口信息也稱為函數(shù)的接口說明;
[0039](4)函數(shù)調(diào)用實(shí)例:指函數(shù)的一次具體執(zhí)行,函數(shù)實(shí)例既包括函數(shù)的接口說明、也包括各個(gè)參數(shù)的實(shí)際參數(shù)值;函數(shù)調(diào)用實(shí)例也簡稱為函數(shù)實(shí)例;
[0040](5)函數(shù)統(tǒng)一接口:指一種面向函數(shù)聲明、調(diào)用以及執(zhí)行結(jié)果信息進(jìn)行描述的可擴(kuò)展標(biāo)記語言,例如JS0N、XML等格式;
[0041 ] (6)“函數(shù)統(tǒng)一接口”實(shí)例指采用“函數(shù)統(tǒng)一接口”描述的函數(shù)實(shí)例;
[0042](7)運(yùn)行時(shí)系統(tǒng):指負(fù)責(zé)各種函數(shù)組件庫的“函數(shù)”注冊、管理和檢索,以及請求調(diào)用函數(shù)實(shí)例或者“函數(shù)統(tǒng)一接口”實(shí)例的具體執(zhí)行的計(jì)算機(jī)執(zhí)行單元;運(yùn)行時(shí)系統(tǒng)可以是多線程實(shí)現(xiàn),也可以是多進(jìn)程實(shí)現(xiàn)。
[0043]本發(fā)明的優(yōu)點(diǎn)和積極效果:
[0044]本發(fā)明能夠?qū)崿F(xiàn)不同編程語言的組件庫間共享復(fù)用,實(shí)現(xiàn)透明計(jì)算,減少應(yīng)用系統(tǒng)開銷。
[0045]本發(fā)明能夠支持應(yīng)用程序無需改變的情況下或者無需針對各類組件訪問機(jī)制的情況下有效地訪問各類組件庫;特別是對與本應(yīng)用程序不同編程語言的組件庫的訪問、共享與復(fù)用;本發(fā)明能夠支持應(yīng)用程序無需改變的情況下,應(yīng)用程序透明地調(diào)用網(wǎng)絡(luò)上的相同含義的函數(shù)執(zhí)行,從而實(shí)現(xiàn)透明計(jì)算;本發(fā)明能夠大大減少應(yīng)用程序自身對系統(tǒng)資源的消耗,更多的被調(diào)用函數(shù)都是委托給“運(yùn)行時(shí)系統(tǒng)”來完成,而“運(yùn)行時(shí)系統(tǒng)”可實(shí)現(xiàn)高效率、多次復(fù)用,無需改變應(yīng)用程序本身。
【附圖說明】
[0046]圖1是本發(fā)明中系統(tǒng)架構(gòu)示意圖。
[0047]圖2是本發(fā)明中“運(yùn)行時(shí)系統(tǒng)代理”內(nèi)部架構(gòu)示意圖。
[0048]圖3是本發(fā)明中“運(yùn)行時(shí)系統(tǒng)”內(nèi)部架構(gòu)示意圖。
[0049]圖4是本發(fā)明中“函數(shù)接口服務(wù)器”內(nèi)部架構(gòu)示意圖。
[0050]圖5是本發(fā)明中示例函數(shù)-斐波那契Fibonacci函數(shù)的函數(shù)聲明及函數(shù)實(shí)現(xiàn)。
【具體實(shí)施方式】
[0051]本發(fā)明提供了一種面向統(tǒng)一接口調(diào)用的運(yùn)行時(shí)系統(tǒng)及運(yùn)行方法。為能進(jìn)一步了解本發(fā)明的技術(shù)內(nèi)容、特點(diǎn)及功效,茲列舉以下應(yīng)用實(shí)例,并配合附圖詳細(xì)說明如下。
[0052]實(shí)施例1、一種面向統(tǒng)一接口調(diào)用的運(yùn)行時(shí)系統(tǒng):
[0053]本發(fā)明給出一種面向統(tǒng)一接口調(diào)用的運(yùn)行時(shí)系統(tǒng),具體包括如下:
[0054]“運(yùn)行時(shí)系統(tǒng)代理”裝置140、“運(yùn)行時(shí)系統(tǒng)”裝置160、“函數(shù)接口服務(wù)器”裝置200、“通道”裝置150和“網(wǎng)絡(luò)”裝置300;“運(yùn)行時(shí)系統(tǒng)代理”裝置140,主要是負(fù)責(zé)監(jiān)控、接收和返回“應(yīng)用程序”執(zhí)行過程中請求調(diào)用“函數(shù)”的執(zhí)行代理;“運(yùn)行時(shí)系統(tǒng)”裝置160,主要是負(fù)責(zé)“第三方函數(shù)組件庫”的“函數(shù)”注冊、管理和檢索,以及請求調(diào)用函數(shù)實(shí)例的具體執(zhí)行;“函數(shù)接口服務(wù)器”裝置200,主要是負(fù)責(zé)整個(gè)網(wǎng)絡(luò)中各個(gè)“運(yùn)行時(shí)系統(tǒng)”中提供函“第三方函數(shù)組件庫”的“函數(shù)”注冊、管理和檢索服務(wù);“運(yùn)行時(shí)系統(tǒng)代理”裝置140和“運(yùn)行時(shí)系統(tǒng)”裝置160通過“通道”裝置150互聯(lián);“運(yùn)行時(shí)系統(tǒng)”裝置160和“函數(shù)接□服務(wù)器”裝置200通過網(wǎng)絡(luò)300互聯(lián);“運(yùn)行時(shí)系統(tǒng)代理”裝置140和“函數(shù)接口服務(wù)器”裝置200不直接互聯(lián);
[0055]其中,
[0056]“運(yùn)行時(shí)系統(tǒng)代理”裝置140包括:函數(shù)執(zhí)行監(jiān)控模塊14011、函數(shù)執(zhí)行請求代理模塊14010、函數(shù)執(zhí)行請求封裝模塊14012、“函數(shù)統(tǒng)一接口”請求發(fā)送模塊14013、“函數(shù)統(tǒng)一接口”結(jié)果接收模塊14014、函數(shù)執(zhí)行結(jié)果拆裝模塊14015;函數(shù)執(zhí)行監(jiān)控模塊14011負(fù)責(zé)動態(tài)監(jiān)控“應(yīng)用程序”120執(zhí)行過程中請求調(diào)用“函數(shù)”的執(zhí)行,并負(fù)責(zé)將該函數(shù)調(diào)用實(shí)例交給函數(shù)執(zhí)行請求代理模塊14010來代理執(zhí)行以及將該函數(shù)調(diào)用實(shí)例的執(zhí)行結(jié)果返回給“應(yīng)用程序”120;函數(shù)執(zhí)行請求封裝模塊14012負(fù)責(zé)將該函數(shù)調(diào)用實(shí)例轉(zhuǎn)化為“函數(shù)統(tǒng)一接口”實(shí)例;函數(shù)執(zhí)行結(jié)果拆裝模塊14015負(fù)責(zé)將“函數(shù)統(tǒng)一接口”實(shí)例執(zhí)行結(jié)果轉(zhuǎn)化為函數(shù)調(diào)用實(shí)例執(zhí)行結(jié)果;“函數(shù)統(tǒng)一接口”請求發(fā)送模塊14013負(fù)責(zé)將“函數(shù)統(tǒng)一接口”實(shí)例發(fā)送到“通道”150中;“函數(shù)統(tǒng)一接口”結(jié)果接收模塊14014負(fù)責(zé)從“通道”150中獲得“函數(shù)統(tǒng)一接口”實(shí)例執(zhí)行結(jié)果,并交給函數(shù)執(zhí)行請求代理模塊14010;函數(shù)執(zhí)行請求代理模塊14010負(fù)責(zé)接收來自“應(yīng)用程序”120或者函數(shù)執(zhí)行監(jiān)控模塊14011的函數(shù)調(diào)用實(shí)例,函數(shù)執(zhí)行請求代理模塊14010通過函數(shù)執(zhí)行請求封裝模塊14012將函數(shù)調(diào)用實(shí)例轉(zhuǎn)化為“函數(shù)統(tǒng)一接口”實(shí)例,并通過“函數(shù)統(tǒng)一接口”請求發(fā)送模塊14013將該“函數(shù)統(tǒng)一接口”實(shí)例進(jìn)一步發(fā)送到“通道”150中,并通過函數(shù)執(zhí)行結(jié)果拆裝模塊14015將該“函數(shù)統(tǒng)一接口”實(shí)例執(zhí)行結(jié)果轉(zhuǎn)化為該函數(shù)調(diào)用實(shí)例執(zhí)行結(jié)果,以及將該函數(shù)調(diào)用實(shí)例執(zhí)行結(jié)果返回給對應(yīng)的調(diào)用者,對應(yīng)的調(diào)用者或者是“應(yīng)用程序”120、或者函數(shù)執(zhí)行監(jiān)控模塊14011;“運(yùn)行時(shí)系統(tǒng)代理”裝置140簡稱RTS代理;
[0057]“運(yùn)行時(shí)系統(tǒng)”裝置160包括:業(yè)務(wù)模塊組、網(wǎng)絡(luò)通信模塊16020和持久存儲模塊16021;業(yè)務(wù)模塊組包括函數(shù)信息注冊模塊16013、函數(shù)信息管理模塊16014、函數(shù)信息檢索模塊16015、函數(shù)信息庫16011、函數(shù)實(shí)例庫16012、“函數(shù)統(tǒng)一接口”實(shí)例收發(fā)模塊16016、函數(shù)實(shí)例調(diào)度模塊16017和函數(shù)實(shí)例執(zhí)行模塊16018;函數(shù)信息注冊模塊16013與函數(shù)信息庫16011連接,負(fù)責(zé)“第三方函數(shù)組件庫”的“函數(shù)”接口信息的登記注冊;函數(shù)信息管理模塊16014與函數(shù)信息庫16011連接,負(fù)責(zé)對已注冊的“函數(shù)”接口信息的信息維護(hù),包括修改、刪除、合并、關(guān)聯(lián)、發(fā)布和撤銷“函數(shù)”接口信息;函數(shù)信息檢索模塊16015與函數(shù)信息庫16011和函數(shù)實(shí)例執(zhí)行模塊16018連接,負(fù)責(zé)從函數(shù)信息庫16011中對“函數(shù)”接口信息的檢索查詢、以及為函數(shù)實(shí)例執(zhí)行模塊16018提供“函數(shù)”接口信息的檢索查詢服務(wù);函數(shù)信息庫16011負(fù)責(zé)提供“函數(shù)”接口信息基礎(chǔ)數(shù)據(jù)訪問;函數(shù)實(shí)例庫16012分別與“函數(shù)統(tǒng)一接口”實(shí)例收發(fā)模塊16016、函數(shù)實(shí)例調(diào)度模塊16017和函數(shù)實(shí)例執(zhí)行模塊16018連接,負(fù)責(zé)提供“函數(shù)調(diào)用實(shí)例”即函數(shù)實(shí)例信息基礎(chǔ)數(shù)據(jù)訪問;“函數(shù)統(tǒng)一接口”實(shí)例收發(fā)模塊16016負(fù)責(zé)接收“運(yùn)行時(shí)系統(tǒng)代理”140發(fā)來的“函數(shù)統(tǒng)一接口”實(shí)例執(zhí)行請求、以及返回“函數(shù)統(tǒng)一接口”實(shí)例執(zhí)行結(jié)果給對應(yīng)的“運(yùn)行時(shí)系統(tǒng)代理” 140;函數(shù)實(shí)例執(zhí)行模塊16018負(fù)責(zé)具體加載“函數(shù)統(tǒng)一接口”實(shí)例所對應(yīng)“第三方函數(shù)組件庫”并執(zhí)行對應(yīng)的函數(shù)調(diào)用實(shí)例;函數(shù)實(shí)例調(diào)度模塊16017分別與“函數(shù)統(tǒng)一接口”實(shí)例收發(fā)模塊16016和函數(shù)實(shí)例執(zhí)行模塊16018連接,負(fù)責(zé)對待執(zhí)行“函數(shù)統(tǒng)一接口”實(shí)例的執(zhí)行優(yōu)先級及先后順序進(jìn)行管理、以及協(xié)調(diào)“函數(shù)統(tǒng)一接口”實(shí)例收發(fā)模塊16016和函數(shù)實(shí)例執(zhí)行模塊16018的運(yùn)行;業(yè)務(wù)模塊組中的各個(gè)模塊通過網(wǎng)絡(luò)通信模塊16020實(shí)現(xiàn)與其它裝置的網(wǎng)絡(luò)通信;函數(shù)信息庫16011和函數(shù)實(shí)例庫16012的數(shù)據(jù)持久保存在持久存儲模塊16021中;“運(yùn)行時(shí)系統(tǒng)”裝置160簡稱RTS;
[0058]“函數(shù)接口服務(wù)器”裝置200包括:業(yè)務(wù)模塊組、網(wǎng)絡(luò)通信模塊20020和持久存儲模塊20021;業(yè)務(wù)模塊組包括函數(shù)信息注冊模塊20013、函數(shù)信息管理模塊20014、函數(shù)信息檢索模塊20015和函數(shù)信息庫20011;函數(shù)信息注冊模塊20013、函數(shù)信息管理模塊20014和函數(shù)信息檢索模塊20015分別與函數(shù)信息庫20011連接;函數(shù)信息注冊模塊20013負(fù)責(zé)“第三方函數(shù)組件庫”的“函數(shù)”接口信息的登記注冊;函數(shù)信息管理模塊20014負(fù)責(zé)對已注冊的“函數(shù)”接口信息的信息維護(hù),包括修改、刪除、合并、關(guān)聯(lián)、發(fā)布和撤銷“函數(shù)”接口信息;函數(shù)信息檢索模塊20015負(fù)責(zé)“函數(shù)”接口信息的檢索查詢;函數(shù)信息庫20011負(fù)責(zé)提供“函數(shù)”接口信息基礎(chǔ)數(shù)據(jù)訪問;業(yè)務(wù)模塊組中的各個(gè)模塊通過網(wǎng)絡(luò)通信模塊20020實(shí)現(xiàn)與其它裝置的網(wǎng)絡(luò)通信;函數(shù)信息庫20011的數(shù)據(jù)持久保存在持久存儲模塊20021中;“函數(shù)接口服務(wù)器”裝置200簡稱FIS。
[0059]所述系統(tǒng)中,“應(yīng)用程序”120執(zhí)行過程中請求調(diào)用“函數(shù)”的函數(shù)代碼具體執(zhí)行是由“運(yùn)行時(shí)系統(tǒng)”裝置160來完成,“應(yīng)用程序”本身并不真正執(zhí)行請求調(diào)用“函數(shù)”的函數(shù)代碼;“應(yīng)用程序”將將請求調(diào)用“函數(shù)”的“函數(shù)調(diào)用實(shí)例”交給“運(yùn)行時(shí)系統(tǒng)代理”裝置140,“運(yùn)行時(shí)系統(tǒng)代理”裝置140進(jìn)一步通過“通道”裝置150將請求調(diào)用“函數(shù)”的“函數(shù)調(diào)用實(shí)例”傳遞給“運(yùn)行時(shí)系統(tǒng)”裝置160;當(dāng)“運(yùn)行時(shí)系統(tǒng)代理”裝置140和“運(yùn)行時(shí)系統(tǒng)”裝置160在同一個(gè)計(jì)算機(jī)結(jié)點(diǎn)時(shí)“通道”裝置150可采用進(jìn)程間通信技術(shù)實(shí)現(xiàn),當(dāng)“運(yùn)行時(shí)系統(tǒng)代理”裝置140和“運(yùn)行時(shí)系統(tǒng)”裝置160不在同一個(gè)計(jì)算機(jī)結(jié)點(diǎn)時(shí)“通道”裝置150可采用網(wǎng)絡(luò)消息隊(duì)列技術(shù)或者網(wǎng)絡(luò)存儲技術(shù)實(shí)現(xiàn);
[0060]“運(yùn)行時(shí)系統(tǒng)”裝置160中的“函數(shù)實(shí)例執(zhí)行”模塊16018來負(fù)責(zé)具體執(zhí)行“應(yīng)用程序”120所請求調(diào)用的“函數(shù)”,“函數(shù)實(shí)例執(zhí)行”模塊16018既可以在“運(yùn)行時(shí)系統(tǒng)”裝置160內(nèi)直接運(yùn)行來完成、也可以由“運(yùn)行時(shí)系統(tǒng)”裝置160調(diào)用“第三方函數(shù)組件庫”170的外部服務(wù)程序來完成、還可以由“運(yùn)行時(shí)系統(tǒng)”裝置160委托網(wǎng)上的其它“運(yùn)行時(shí)系統(tǒng)”裝置160來完成;
[0061 ]例如,“函數(shù)實(shí)例執(zhí)行”模塊16018既可以在“運(yùn)行時(shí)系統(tǒng)”裝置160內(nèi)直接運(yùn)行來完成的情況:
[0062]“函數(shù)實(shí)例執(zhí)行”模塊可以在當(dāng)前進(jìn)程或者創(chuàng)建新進(jìn)程或者新線程中直接執(zhí)行DLL庫函數(shù)、Java庫來完成組件庫指定函數(shù)的具體執(zhí)行。
[0063]例如,“函數(shù)實(shí)例執(zhí)行”模塊16018也可以由“運(yùn)行時(shí)系統(tǒng)”裝置160調(diào)用“第三方函數(shù)組件庫” 170的外部服務(wù)程序來完成的情況:
[0064]對于EJB組件庫、Corba組件庫、COM+組件庫等,這些組件的運(yùn)行事實(shí)上是在“運(yùn)行時(shí)系統(tǒng)”之外的組件服務(wù)器空間中運(yùn)行、甚至是網(wǎng)絡(luò)中其它計(jì)算節(jié)點(diǎn)上組件服務(wù)器空間中運(yùn)行,此時(shí)“運(yùn)行時(shí)系統(tǒng)”裝置160中的“函數(shù)實(shí)例執(zhí)行”模塊16018可以作為上述組件的客戶端直接遠(yuǎn)程調(diào)用組件服務(wù)器來完成組件庫指定函數(shù)的具體執(zhí)行;針對不同組件庫的調(diào)用實(shí)現(xiàn)技術(shù)已經(jīng)非常成熟,不贅述。
[0065]例如,“函數(shù)實(shí)例執(zhí)行”模塊16018也可以由“運(yùn)行時(shí)系統(tǒng)”裝置160委托網(wǎng)上的其它“運(yùn)行時(shí)系統(tǒng)”裝置160來完成的情況:
[0066]若某個(gè)組件庫是在另外一個(gè)“運(yùn)行時(shí)系統(tǒng)”裝置160上注冊函數(shù)信息、且沒有在本地的“運(yùn)行時(shí)系統(tǒng)”裝置160上注冊函數(shù)信息時(shí),則可以有本地的“運(yùn)行時(shí)系統(tǒng)”裝置160進(jìn)一步委托網(wǎng)上的另外一個(gè)“運(yùn)行時(shí)系統(tǒng)”裝置160來完成組件庫指定函數(shù)的具體執(zhí)行;而另外一個(gè)“運(yùn)行時(shí)系統(tǒng)”裝置160會根據(jù)具體組件庫類型選擇前述兩種方式中的一種來完成組件庫指定函數(shù)的具體執(zhí)行,并將函數(shù)調(diào)用實(shí)例的執(zhí)行結(jié)果返回給本地的“運(yùn)行時(shí)系統(tǒng)”裝置160。
[0067]“函數(shù)接口服務(wù)器”裝置200不負(fù)責(zé)具體執(zhí)行“應(yīng)用程序”120所請求調(diào)用的“函數(shù)”代碼。
[0068]所述系統(tǒng)中,只有在“運(yùn)行時(shí)系統(tǒng)”裝置160中直接注冊的“函數(shù)”才能在該“運(yùn)行時(shí)系統(tǒng)”裝置160中直接運(yùn)行來完成、或者由“運(yùn)行時(shí)系統(tǒng)”裝置調(diào)用“第三方函數(shù)組件庫”的外部服務(wù)程序來完成;“運(yùn)行時(shí)系統(tǒng)”裝置160具體采用上述兩種方式的哪一種則取決于“應(yīng)用程序”所請求調(diào)用“函數(shù)”所屬的組件庫類型;
[0069]“運(yùn)行時(shí)系統(tǒng)”裝置160所支持的“第三方函數(shù)組件庫”170的組件庫類型包括Corba、EJB、COM+、Web Service、0LE、Java庫代碼、DLL庫代碼、SO庫代碼、JMS庫代碼、JCA庫代碼、SOAP庫代碼;“第三方函數(shù)組件庫”170的組件庫類型不限于上述給出的組件庫類型,也可以支持未來新型的組件庫類型。
[0070]所述系統(tǒng)中,“運(yùn)行時(shí)系統(tǒng)代理”裝置140既可以在“應(yīng)用程序”進(jìn)程空間內(nèi)來運(yùn)行,也可以作為獨(dú)立的進(jìn)程來運(yùn)行;“運(yùn)行時(shí)系統(tǒng)代理”裝置140在“應(yīng)用程序”進(jìn)程空間內(nèi)來運(yùn)行時(shí),“應(yīng)用程序”120需要將“運(yùn)行時(shí)系統(tǒng)代理”裝置140的代碼編譯鏈接到該“應(yīng)用程序”中;
[0071 ]例如,“應(yīng)用程序” 120需要將“運(yùn)行時(shí)系統(tǒng)代理”裝置140的代碼編譯鏈接到該“應(yīng)用程序”的情況:如圖1所示,“應(yīng)用程序”120包括了本地函數(shù)庫模塊130和“運(yùn)行時(shí)系統(tǒng)代理”裝置140,“應(yīng)用程序”120所請求調(diào)用“函數(shù)”事實(shí)上是由本地函數(shù)庫模塊130直接調(diào)用“運(yùn)行時(shí)系統(tǒng)代理”裝置140中的函數(shù)執(zhí)行請求代理模塊14010來傳遞給“運(yùn)行時(shí)系統(tǒng)代理”裝置140的。
[0072]“運(yùn)行時(shí)系統(tǒng)代理”裝置140監(jiān)控“應(yīng)用程序”120所請求調(diào)用“函數(shù)”有兩種方法:第一種方法為“應(yīng)用程序”120所請求調(diào)用“函數(shù)”的實(shí)現(xiàn)代碼改寫為將該調(diào)用“函數(shù)”及其參數(shù)傳遞給“運(yùn)行時(shí)系統(tǒng)代理”裝置140的函數(shù)執(zhí)行請求代理模塊;第二種方法為“運(yùn)行時(shí)系統(tǒng)代理”裝置140中函數(shù)執(zhí)行監(jiān)控模塊14011采用函數(shù)鉤子技術(shù)來對“應(yīng)用程序”所請求調(diào)用“函數(shù)”增加監(jiān)控鉤子函數(shù)代碼。
[0073]例如,“運(yùn)行時(shí)系統(tǒng)代理”裝置140中函數(shù)執(zhí)行監(jiān)控模塊14011采用函數(shù)鉤子技術(shù)的情況:如圖2所示,“運(yùn)行時(shí)系統(tǒng)代理”裝置140中函數(shù)執(zhí)行監(jiān)控模塊14011直接監(jiān)控了 “應(yīng)用程序”120的執(zhí)行過程并對所請求調(diào)用“函數(shù)”進(jìn)行動態(tài)監(jiān)控捕捉,然后由函數(shù)執(zhí)行監(jiān)控模塊14011將調(diào)用“運(yùn)行時(shí)系統(tǒng)代理”裝置140中的函數(shù)執(zhí)行請求代理模塊14010實(shí)現(xiàn)將“應(yīng)用程序” 120所請求調(diào)用“函數(shù)”傳遞給“運(yùn)行時(shí)系統(tǒng)代理”裝置140的。
[0074]所述系統(tǒng)中,“運(yùn)行時(shí)系統(tǒng)”裝置160中“函數(shù)”的注冊信息需要包括函數(shù)唯一索引號、函數(shù)類別號、函數(shù)名、參數(shù)個(gè)數(shù)、{參數(shù)名、參數(shù)類型}序列表、函數(shù)所屬組件庫類型、函數(shù)所屬組件庫名稱、函數(shù)所屬組件庫訪問路徑、函數(shù)所屬組件庫開發(fā)商唯一索引號、運(yùn)行平均時(shí)間、運(yùn)行可靠性評估值;
[0075]函數(shù)唯一索引號是唯一標(biāo)識函數(shù)實(shí)現(xiàn)的號碼;函數(shù)類別號是指函數(shù)屬于哪一類功能的分類號;兩個(gè)函數(shù)擁有相同的函數(shù)類別號意味著這兩個(gè)函數(shù)實(shí)現(xiàn)相同功能;這樣“運(yùn)行時(shí)系統(tǒng)”裝置160可以按照某類指標(biāo)來擇優(yōu)選擇某個(gè)函數(shù)實(shí)現(xiàn)來運(yùn)行,從而鼓勵(lì)軟件開發(fā)商提高各自組件庫實(shí)現(xiàn)的質(zhì)量;函數(shù)的參數(shù)也包括函數(shù)的返回值參數(shù)。
[0076]例如:如圖4所示,斐波那契Fibonacc i函數(shù)在“運(yùn)行時(shí)系統(tǒng)”裝置160中“函數(shù)”的注冊信息的實(shí)例:
[0077]{函數(shù)唯一索引號:123001;函數(shù)類別號:123;函數(shù)名:Fibonacci ;參數(shù)個(gè)數(shù)2; {{參數(shù)名:η,參數(shù)類型:unsigned int},{參數(shù)名:返回值,參數(shù)類型:long long}};函數(shù)所屬組件庫類型:DLL;函數(shù)所屬組件庫名稱:mathlib.dll;函數(shù)所屬組件庫訪問路徑c: \windows\mathlib.dll;函數(shù)所屬組件庫開發(fā)商唯一索引號:mathsof 1118;運(yùn)行平均時(shí)間:2s ;運(yùn)行可靠性評估值:0.9}
[0078]“函數(shù)接口服務(wù)器”裝置200上“函數(shù)”的注冊信息需要包括函數(shù)唯一索引號、函數(shù)類別號、函數(shù)名、參數(shù)個(gè)數(shù)、{參數(shù)名、參數(shù)類型}序列表、函數(shù)所屬組件庫類型、函數(shù)所屬組件庫名稱、函數(shù)所屬組件庫訪問路徑、函數(shù)所屬組件庫開發(fā)商唯一索引號、所屬“運(yùn)行時(shí)系統(tǒng)”裝置唯一索引號、所屬“運(yùn)行時(shí)系統(tǒng)”裝置訪問路徑、運(yùn)行平均時(shí)間和運(yùn)行可靠性評估值。
[0079]例如:如圖4所示,斐波那契Fibonacci函數(shù)在“函數(shù)接口服務(wù)器”裝置200中“函數(shù)”的注冊信息的實(shí)例:
[0080]{函數(shù)唯一索引號:123001 ;函數(shù)類別號:123 ;函數(shù)名:Fibonacci ;參數(shù)個(gè)數(shù)2; {{參數(shù)名:η,參數(shù)類型:unsigned int},{參數(shù)名:返回值,參數(shù)類型:long long}};函數(shù)所屬組件庫類型:DLL;函數(shù)所屬組件庫名稱:mathlib.dll;函數(shù)所屬組件庫訪問路徑c: \windows\mathlib.dll;函數(shù)所屬組件庫開發(fā)商唯一索引號:maths0ftll8;所屬“運(yùn)行時(shí)系統(tǒng)”裝置唯一索引號:923011 ;所屬“運(yùn)行時(shí)系統(tǒng)”裝置訪問路徑:http: //202.161.8.10/rts/;運(yùn)行平均時(shí)間:2s;運(yùn)行可靠性評估值:0.9}
[0081]所述系統(tǒng)中,“運(yùn)行時(shí)系統(tǒng)代理”裝置140和“運(yùn)行時(shí)系統(tǒng)”裝置160之間采用“函數(shù)統(tǒng)一接口”格式進(jìn)行函數(shù)請求調(diào)用和執(zhí)行結(jié)果信息的表達(dá);“運(yùn)行時(shí)系統(tǒng)”裝置160和“函數(shù)接口服務(wù)器”裝置200之間采用“函數(shù)統(tǒng)一接口”格式進(jìn)行函數(shù)接口信息的查詢;不同“運(yùn)行時(shí)系統(tǒng)”裝置160之間采用采用“函數(shù)統(tǒng)一接口”格式進(jìn)行函數(shù)請求調(diào)用和執(zhí)行結(jié)果信息的表達(dá);“函數(shù)統(tǒng)一接口”格式采用可擴(kuò)展標(biāo)記語言對函數(shù)的聲明、調(diào)用以及執(zhí)行結(jié)果信息進(jìn)行描述;“函數(shù)統(tǒng)一接口”實(shí)例既可以為文件,也可以為字節(jié)流。
[0082]“函數(shù)統(tǒng)一接口”格式可以采用XML,也可以采用JS0N,也可以采用其它標(biāo)記語言來表述。
[0083]所述系統(tǒng)中,“應(yīng)用程序”執(zhí)行過程中請求調(diào)用“函數(shù)”的“函數(shù)調(diào)用實(shí)例”信息需要包括函數(shù)所屬組件庫名稱、函數(shù)名、參數(shù)個(gè)數(shù)、{參數(shù)名、參數(shù)值}序列表;“函數(shù)統(tǒng)一接口”實(shí)例信息需要包括函數(shù)實(shí)例唯一索引號、函數(shù)所屬組件庫類型、函數(shù)所屬組件庫名稱、函數(shù)名、參數(shù)個(gè)數(shù)、{參數(shù)名、參數(shù)值}序列表、函數(shù)最大執(zhí)行時(shí)間;“函數(shù)統(tǒng)一接口”實(shí)例的執(zhí)行結(jié)果需要包括函數(shù)實(shí)例唯一索引號、函數(shù)唯一索引號、函數(shù)類別號、函數(shù)名、所屬“運(yùn)行時(shí)系統(tǒng)”唯一索引號、結(jié)果參數(shù)個(gè)數(shù)、{結(jié)果參數(shù)名、結(jié)果參數(shù)值}序列表、運(yùn)行實(shí)際時(shí)間。
[0084]參數(shù)值可以為空。
[0085]例如:斐波那契Fibonacci函數(shù)的某次具體函數(shù)調(diào)用實(shí)例1:
[0086]{函數(shù)所屬組件庫名稱:mathlib.dll;函數(shù)名:Fibonacci ;參數(shù)個(gè)數(shù):2; {{參數(shù)名:η,參數(shù)值:9},{參數(shù)名:返回值,參數(shù)值:}}
[0087]例如:前述函數(shù)調(diào)用實(shí)例I轉(zhuǎn)化為“函數(shù)統(tǒng)一接口”實(shí)例2,其中“函數(shù)統(tǒng)一接口”實(shí)例2采用XML來表述:
[0088]<?xml vers1n = "1.0"encoding = "UTF-8"?>〈request>
[0089]<funct1ninterface)
[0090]<funcrequest>
[0091]<funcinfo>
[0092]〈函數(shù)實(shí)例唯一索引號>8000101〈/函數(shù)實(shí)例唯一索引號〉
[0093]〈函數(shù)所屬組件庫類型〉DLL〈/函數(shù)所屬組件庫類型〉
[0094]〈函數(shù)所屬組件庫名稱〉mathlib.dll〈/函數(shù)所屬組件庫名稱〉
[0095]〈函數(shù)名〉FibonacciX/函數(shù)名〉
[0096]〈參數(shù)個(gè)數(shù)>2〈/參數(shù)個(gè)數(shù)〉
[0097]〈函數(shù)最大執(zhí)行時(shí)間>5s〈/函數(shù)最大執(zhí)行時(shí)間〉
[0098]</funcinfo>
[0099]〈arguments〉
[0100]<param>
[0101 ]〈參數(shù)名〉n〈/參數(shù)名〉
[0102]〈參數(shù)值>9〈/參數(shù)值〉
[0103]</param>
[0104]<param>
[0?05]〈參數(shù)名〉返回值〈/參數(shù)名〉
[0106]〈參數(shù)值>〈/參數(shù)值〉
[0107]</param>
[0108]〈/arguments〉
[0109]</funcrequest>
[0110]</funct1ninterface)
[0111]所述系統(tǒng)中,“運(yùn)行時(shí)系統(tǒng)”裝置中,“函數(shù)實(shí)例庫”可針對待執(zhí)行“函數(shù)統(tǒng)一接口”實(shí)例分為多個(gè)優(yōu)先級隊(duì)列,并由“函數(shù)實(shí)例調(diào)度”模塊來設(shè)置“函數(shù)統(tǒng)一接口”實(shí)例執(zhí)行的優(yōu)先級以及優(yōu)先級隊(duì)列;“函數(shù)實(shí)例調(diào)度”模塊通過操作系統(tǒng)提供的各種進(jìn)程間或者線程間通信機(jī)制來與“函數(shù)統(tǒng)一接口”實(shí)例收發(fā)模塊、“函數(shù)實(shí)例執(zhí)行”模塊進(jìn)行協(xié)作運(yùn)行。
[0112]例如:“函數(shù)統(tǒng)一接口”實(shí)例的多個(gè)優(yōu)先級隊(duì)列可以分為3個(gè)優(yōu)先級隊(duì)列:緊急隊(duì)列、正常隊(duì)列、無時(shí)限隊(duì)列。
[0113]實(shí)施例2、一種面向統(tǒng)一接口調(diào)用的運(yùn)行時(shí)系統(tǒng)的運(yùn)行方法:
[0114]本發(fā)明所提供的一種面向統(tǒng)一接口調(diào)用的運(yùn)行時(shí)系統(tǒng)的運(yùn)行方法,具體如下步驟:
[0115]第I步、“第三方函數(shù)組件庫”的“函數(shù)”可隨時(shí)注冊到“運(yùn)行時(shí)系統(tǒng)”;
[0116]例如:將組件庫mathlib.dll中的Fibonacci函數(shù)注冊到某個(gè)“運(yùn)行時(shí)系統(tǒng)”中,“運(yùn)行時(shí)系統(tǒng)”的運(yùn)行時(shí)系統(tǒng)唯一索引號為710101。
[0117]第2步、“運(yùn)行時(shí)系統(tǒng)”中已注冊“函數(shù)”信息隨時(shí)更新到“函數(shù)接口服務(wù)器”;
[0118]例如:各個(gè)“運(yùn)行時(shí)系統(tǒng)”RTS將注冊到自己的“函數(shù)”信息隨時(shí)更新到“函數(shù)接口服務(wù)器”,例如將組件庫mathlib.dll中的Fibonacci函數(shù)信息更新到“函數(shù)接口服務(wù)器”,這樣“函數(shù)接口服務(wù)器”FIS將擁有全網(wǎng)絡(luò)的已注冊函數(shù)信息,這樣當(dāng)某個(gè)計(jì)算機(jī)結(jié)點(diǎn)上的某個(gè)“應(yīng)用程序”請求調(diào)用一個(gè)已注冊函數(shù)的函數(shù)實(shí)例時(shí)就會最終在“函數(shù)接口服務(wù)器” FIS檢索至IJ、并且由該注冊函數(shù)的注冊信息所在的“運(yùn)行時(shí)系統(tǒng)”來完成該函數(shù)實(shí)例的具體執(zhí)行任務(wù)。
[0119]第3步、“應(yīng)用程序”啟動,并加載“運(yùn)行時(shí)系統(tǒng)代理”;“運(yùn)行時(shí)系統(tǒng)代理”連接當(dāng)前指定的“運(yùn)行時(shí)系統(tǒng)”,當(dāng)前指定的“運(yùn)行時(shí)系統(tǒng)”簡稱為當(dāng)前“運(yùn)行時(shí)系統(tǒng)”;
[0120]第4步、“應(yīng)用程序”繼續(xù)運(yùn)行,直至“應(yīng)用程序”執(zhí)行退出函數(shù)或者“應(yīng)用程序”執(zhí)行到請求調(diào)用“運(yùn)行時(shí)系統(tǒng)代理”所負(fù)責(zé)的“函數(shù)”;若“應(yīng)用程序”繼續(xù)運(yùn)行過程中請求調(diào)用“運(yùn)行時(shí)系統(tǒng)代理”所負(fù)責(zé)的“函數(shù)”,則執(zhí)行第5步;若“應(yīng)用程序”執(zhí)行退出函數(shù),則執(zhí)行第15步;
[0121]第5步、“應(yīng)用程序”運(yùn)行過程中請求調(diào)用“運(yùn)行時(shí)系統(tǒng)代理”所負(fù)責(zé)的“函數(shù)”時(shí),“運(yùn)行時(shí)系統(tǒng)代理”將該“函數(shù)”的“函數(shù)調(diào)用實(shí)例”轉(zhuǎn)化為對應(yīng)的“函數(shù)統(tǒng)一接口”實(shí)例,并將該“函數(shù)統(tǒng)一接口”實(shí)例轉(zhuǎn)交給當(dāng)前“運(yùn)行時(shí)系統(tǒng)”等待處理結(jié)果;
[0122]例如:前述函數(shù)調(diào)用實(shí)例I轉(zhuǎn)化為“函數(shù)統(tǒng)一接口”實(shí)例2,在此不贅述。
[0123]第6步、當(dāng)前“運(yùn)行時(shí)系統(tǒng)”接收到待執(zhí)行的“函數(shù)統(tǒng)一接口”實(shí)例后,檢索本地“函數(shù)信息庫”查找該“函數(shù)統(tǒng)一接口”實(shí)例所對應(yīng)的“第三發(fā)函數(shù)組件庫”信息,若檢索到該“函數(shù)統(tǒng)一接口”實(shí)例所對應(yīng)的“第三發(fā)函數(shù)組件庫”信息則執(zhí)行第10步,否則執(zhí)行第7步;
[0124]例如:對于斐波那契Fibonacci函數(shù),該函數(shù)所對應(yīng)的函數(shù)組件庫為mathl ib.dll。斐波那契Fibonacci函數(shù)可能已經(jīng)在當(dāng)前“運(yùn)行時(shí)系統(tǒng)”中注冊函數(shù)信息,斐波那契Fibonacci函數(shù)也可能尚未在當(dāng)前“運(yùn)行時(shí)系統(tǒng)”中注冊函數(shù)信息。
[0125]第7步、當(dāng)前“運(yùn)行時(shí)系統(tǒng)”向“函數(shù)接口服務(wù)器”提出請求檢索第5步中“函數(shù)統(tǒng)一接口”實(shí)例所對應(yīng)的函數(shù)注冊信息,若“函數(shù)接口服務(wù)器”返回結(jié)果未檢索到該“函數(shù)統(tǒng)一接口”實(shí)例所對應(yīng)的函數(shù)注冊信息則執(zhí)行第11步,否則執(zhí)行第8步;
[0126]例如:當(dāng)斐波那契Fibonacci函數(shù)也可能尚未在當(dāng)前“運(yùn)行時(shí)系統(tǒng)”中注冊函數(shù)信息時(shí),由當(dāng)前“運(yùn)行時(shí)系統(tǒng)”向“函數(shù)接口服務(wù)器”提出請求檢索斐波那契Fibonacci函數(shù)的注冊信息;若“函數(shù)接口服務(wù)器”返回結(jié)果未檢索到該“函數(shù)統(tǒng)一接口”實(shí)例即本案例中斐波那契Fibonacci函數(shù)所對應(yīng)的函數(shù)注冊信息,則說明在全網(wǎng)絡(luò)中尚未有斐波那契Fibonacci函數(shù)注冊到某個(gè)“運(yùn)行時(shí)系統(tǒng)”中,這種情況下該斐波那契Fibonacci函數(shù)的函數(shù)調(diào)用實(shí)例無法由任何一個(gè)“運(yùn)行時(shí)系統(tǒng)”來具體執(zhí)行。
[0127]第8步、當(dāng)前“運(yùn)行時(shí)系統(tǒng)”將請求第7步中檢索到的該函數(shù)所注冊的異地“運(yùn)行時(shí)系統(tǒng)”來完成該“函數(shù)統(tǒng)一接口”實(shí)例的執(zhí)行,若異地“運(yùn)行時(shí)系統(tǒng)”未正常提供服務(wù)則執(zhí)行第11步,否則執(zhí)行第9步;
[0128]例如:“函數(shù)接口服務(wù)器”返回結(jié)果檢索到該“函數(shù)統(tǒng)一接口”實(shí)例即本案例中斐波那契Fibonacci函數(shù)所對應(yīng)的函數(shù)注冊信息,該斐波那契Fibonacci函數(shù)的函數(shù)注冊信息表明該斐波那契Fibonacci函數(shù)已注冊到某個(gè)異地“運(yùn)行時(shí)系統(tǒng)”中,則由該異地“運(yùn)行時(shí)系統(tǒng)”負(fù)責(zé)對該斐波那契Fibonacci函數(shù)調(diào)用實(shí)例進(jìn)行具體執(zhí)行。
[0129]第9步、當(dāng)前“運(yùn)行時(shí)系統(tǒng)”獲得異地“運(yùn)行時(shí)系統(tǒng)”返回的“函數(shù)統(tǒng)一接口”實(shí)例執(zhí)行結(jié)果作為第6步中“函數(shù)統(tǒng)一接口”實(shí)例執(zhí)行結(jié)果,并執(zhí)行第12步;
[0130]第10步、當(dāng)前“運(yùn)行時(shí)系統(tǒng)”通過“函數(shù)實(shí)例執(zhí)行模塊”調(diào)用“函數(shù)統(tǒng)一接口”實(shí)例所對應(yīng)的函數(shù)組件庫來執(zhí)行該“函數(shù)統(tǒng)一接口”實(shí)例,并將該“函數(shù)統(tǒng)一接口”實(shí)例執(zhí)行結(jié)果作為第6步中“函數(shù)統(tǒng)一接口”實(shí)例執(zhí)行結(jié)果;并進(jìn)一步執(zhí)行第12步;
[0131 ] 例如:對于斐波那契Fibonacci函數(shù),斐波那契Fibonacci函數(shù)的某次“函數(shù)統(tǒng)一接口”實(shí)例執(zhí)行結(jié)果可以如下:
[0132]<?xml vers1n = "1.CTencoding = "UTFUXrequest〉
[0133]<funct1ninterface)
[0134]<funcresponse>
[0135]<funcinfo>
[0136]〈函數(shù)實(shí)例唯一索引號>8000101〈/函數(shù)實(shí)例唯一索引號〉
[0137]〈函數(shù)唯一索引號>123001〈/函數(shù)唯一索引號〉
[0138]〈函數(shù)類別號M23V函數(shù)類別號〉
[0139]〈函數(shù)所屬組件庫類型〉DLL〈/函數(shù)所屬組件庫類型〉
[0140]〈函數(shù)所屬組件庫名稱〉mathlib.dll〈/函數(shù)所屬組件庫名稱〉
[0141 ]〈函數(shù)名〉FibonacciX/函數(shù)名〉
[0142]〈所屬運(yùn)行時(shí)系統(tǒng)唯一索引號>710101〈/所屬運(yùn)行時(shí)系統(tǒng)唯一索引號〉
[0143]〈結(jié)果參數(shù)個(gè)數(shù)>2〈/結(jié)果參數(shù)個(gè)數(shù)〉
[0144]〈運(yùn)行實(shí)際時(shí)間>I s〈/運(yùn)行實(shí)際時(shí)間>
[0145]</funcinfo>
[0146]〈arguments〉
[0147]<param>
[ΟΙ48]〈結(jié)果參數(shù)名>η〈/結(jié)果參數(shù)名〉
[0149]〈結(jié)果參數(shù)值>9〈/結(jié)果參數(shù)值〉
[0150]</param>
[0151]<param>
[0152]〈結(jié)果參數(shù)名〉返回值〈/結(jié)果參數(shù)名〉
[0153]〈結(jié)果參數(shù)值>21〈/結(jié)果參數(shù)值〉
[0154]</param>
[0155]〈/arguments〉
[0156]</funcresponse>
[0157]</funct1ninterface)
[0158]第11步、當(dāng)前“運(yùn)行時(shí)系統(tǒng)”將第6步中“函數(shù)統(tǒng)一接口”實(shí)例執(zhí)行結(jié)果設(shè)置為“執(zhí)行異?!?;
[0159]第12步、當(dāng)前“運(yùn)行時(shí)系統(tǒng)”將第6步中“函數(shù)統(tǒng)一接口”實(shí)例執(zhí)行結(jié)果返回給“運(yùn)行時(shí)系統(tǒng)代理”;
[0160]第13步、“運(yùn)行時(shí)系統(tǒng)代理”將第12步中“函數(shù)統(tǒng)一接口”實(shí)例執(zhí)行結(jié)果轉(zhuǎn)化為“函數(shù)調(diào)用實(shí)例”執(zhí)行結(jié)果,并將該“函數(shù)調(diào)用實(shí)例”執(zhí)行結(jié)果返回給“應(yīng)用程序”;
[0161]第14步、“應(yīng)用程序”繼續(xù)執(zhí)行第4步;
[0162]第15步、“應(yīng)用程序”執(zhí)行結(jié)束。
[0163]所述方法中,當(dāng)“運(yùn)行時(shí)系統(tǒng)”在“函數(shù)信息庫”檢索到“函數(shù)統(tǒng)一接口”實(shí)例對應(yīng)有不止一個(gè)的函數(shù)信息時(shí),“運(yùn)行時(shí)系統(tǒng)”既可以隨機(jī)選取一個(gè)函數(shù)組件庫來運(yùn)行,也可以根據(jù)該組“函數(shù)”信息中的輔助信息來決定選擇哪一個(gè)函數(shù)組件庫來運(yùn)行,“函數(shù)”信息中的輔助信息包括運(yùn)行平均時(shí)間、運(yùn)行可靠性評估值以及函數(shù)所屬組件庫開發(fā)商唯一索引號中的全部或者部分;
[0164]例如:可以選擇運(yùn)行可靠性評估值為I的某函數(shù)實(shí)現(xiàn)作為此次欲執(zhí)行的備選函數(shù)組件庫及函數(shù)。
[0165]所述方法中,當(dāng)“函數(shù)接□服務(wù)器”在“函數(shù)信息庫”檢索到“函數(shù)統(tǒng)一接口”實(shí)例對應(yīng)有不止一個(gè)的函數(shù)信息時(shí),“函數(shù)接口服務(wù)器”既可以隨機(jī)選取一個(gè)函數(shù)組件庫來運(yùn)行,也可以根據(jù)該組“函數(shù)”信息中的輔助信息來決定選擇哪一個(gè)函數(shù)組件庫來運(yùn)行,“函數(shù)”信息中的輔助信息包括運(yùn)行平均時(shí)間、運(yùn)行可靠性評估值、函數(shù)所屬組件庫開發(fā)商唯一索引號以及所屬“運(yùn)行時(shí)系統(tǒng)”唯一索引號中的全部或者部分。
[0166]例如:可以選擇指定的函數(shù)所屬組件庫開發(fā)商所開發(fā)的某函數(shù)實(shí)現(xiàn)作為此次欲執(zhí)行的備選備選函數(shù)組件庫及函數(shù)。
[0167]考慮到在此公開的對本發(fā)明的描述和特例的實(shí)施例,本發(fā)明的其他實(shí)施例對于本領(lǐng)域的技術(shù)人員來說是顯而意見的。這些說明和實(shí)施例僅作為例子來考慮,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【主權(quán)項(xiàng)】
1.一種面向統(tǒng)一接口調(diào)用的運(yùn)行時(shí)系統(tǒng),其特征在于,所述系統(tǒng)包括“運(yùn)行時(shí)系統(tǒng)代理”裝置、“運(yùn)行時(shí)系統(tǒng)”裝置、“函數(shù)接□服務(wù)器”裝置、“通道”裝置和“網(wǎng)絡(luò)”裝置;“運(yùn)行時(shí)系統(tǒng)代理”裝置,主要是負(fù)責(zé)監(jiān)控、接收和返回“應(yīng)用程序”執(zhí)行過程中請求調(diào)用“函數(shù)”的執(zhí)行代理;“運(yùn)行時(shí)系統(tǒng)”裝置,主要是負(fù)責(zé)“第三方函數(shù)組件庫”的“函數(shù)”注冊、管理和檢索,以及請求調(diào)用函數(shù)實(shí)例的具體執(zhí)行;“函數(shù)接口服務(wù)器”裝置,主要是負(fù)責(zé)整個(gè)網(wǎng)絡(luò)中各個(gè)“運(yùn)行時(shí)系統(tǒng)”中提供函“第三方函數(shù)組件庫”的“函數(shù)”注冊、管理和檢索服務(wù);“運(yùn)行時(shí)系統(tǒng)代理”裝置和“運(yùn)行時(shí)系統(tǒng)”裝置通過“通道”裝置互聯(lián);“運(yùn)行時(shí)系統(tǒng)”裝置和“函數(shù)接口服務(wù)器”裝置通過“網(wǎng)絡(luò)”裝置互聯(lián);“運(yùn)行時(shí)系統(tǒng)代理”裝置和“函數(shù)接口服務(wù)器”裝置不直接互聯(lián); 其中, “運(yùn)行時(shí)系統(tǒng)代理”裝置包括:函數(shù)執(zhí)行監(jiān)控模塊、函數(shù)執(zhí)行請求代理模塊、函數(shù)執(zhí)行請求封裝模塊、“函數(shù)統(tǒng)一接口”請求發(fā)送模塊、“函數(shù)統(tǒng)一接口”結(jié)果接收模塊、函數(shù)執(zhí)行結(jié)果拆裝模塊;函數(shù)執(zhí)行監(jiān)控模塊負(fù)責(zé)動態(tài)監(jiān)控“應(yīng)用程序”執(zhí)行過程中請求調(diào)用“函數(shù)”的執(zhí)行,并負(fù)責(zé)將該函數(shù)調(diào)用實(shí)例交給函數(shù)執(zhí)行請求代理模塊來代理執(zhí)行以及將該函數(shù)調(diào)用實(shí)例的執(zhí)行結(jié)果返回給“應(yīng)用程序”;函數(shù)執(zhí)行請求封裝模塊負(fù)責(zé)將該函數(shù)調(diào)用實(shí)例轉(zhuǎn)化為“函數(shù)統(tǒng)一接口”實(shí)例;函數(shù)執(zhí)行結(jié)果拆裝模塊負(fù)責(zé)將“函數(shù)統(tǒng)一接口”實(shí)例執(zhí)行結(jié)果轉(zhuǎn)化為函數(shù)調(diào)用實(shí)例執(zhí)行結(jié)果;“函數(shù)統(tǒng)一接口”請求發(fā)送模塊負(fù)責(zé)將“函數(shù)統(tǒng)一接口”實(shí)例發(fā)送到“通道”中;“函數(shù)統(tǒng)一接口”結(jié)果接收模塊負(fù)責(zé)從“通道”中獲得“函數(shù)統(tǒng)一接口”實(shí)例執(zhí)行結(jié)果,并交給函數(shù)執(zhí)行請求代理模塊;函數(shù)執(zhí)行請求代理模塊負(fù)責(zé)接收來自“應(yīng)用程序”或者函數(shù)執(zhí)行監(jiān)控模塊的函數(shù)調(diào)用實(shí)例,函數(shù)執(zhí)行請求代理模塊通過函數(shù)執(zhí)行請求封裝模塊將函數(shù)調(diào)用實(shí)例轉(zhuǎn)化為“函數(shù)統(tǒng)一接口”實(shí)例,并通過“函數(shù)統(tǒng)一接口”請求發(fā)送模塊將該“函數(shù)統(tǒng)一接口”實(shí)例進(jìn)一步發(fā)送到“通道”中,并通過函數(shù)執(zhí)行結(jié)果拆裝模塊將該“函數(shù)統(tǒng)一接口”實(shí)例執(zhí)行結(jié)果轉(zhuǎn)化為該函數(shù)調(diào)用實(shí)例執(zhí)行結(jié)果,以及將該函數(shù)調(diào)用實(shí)例執(zhí)行結(jié)果返回給對應(yīng)的調(diào)用者; “運(yùn)行時(shí)系統(tǒng)”裝置包括:業(yè)務(wù)模塊組、網(wǎng)絡(luò)通信模塊和持久存儲模塊;業(yè)務(wù)模塊組包括函數(shù)信息注冊模塊、函數(shù)信息管理模塊、函數(shù)信息檢索模塊、函數(shù)信息庫、函數(shù)實(shí)例庫、“函數(shù)統(tǒng)一接口”實(shí)例收發(fā)模塊、函數(shù)實(shí)例調(diào)度模塊和函數(shù)實(shí)例執(zhí)行模塊;函數(shù)信息注冊模塊與函數(shù)信息庫連接,負(fù)責(zé)“第三方函數(shù)組件庫”的“函數(shù)”接口信息的登記注冊;函數(shù)信息管理模塊與函數(shù)信息庫連接,負(fù)責(zé)對已注冊的“函數(shù)”接口信息的信息維護(hù),包括修改、刪除、合并、關(guān)聯(lián)、發(fā)布和撤銷“函數(shù)”接口信息;函數(shù)信息檢索模塊與函數(shù)信息庫和函數(shù)實(shí)例執(zhí)行模塊連接,負(fù)責(zé)從函數(shù)信息庫中對“函數(shù)”接口信息的檢索查詢、以及為函數(shù)實(shí)例執(zhí)行模塊提供“函數(shù)”接口信息的檢索查詢服務(wù);函數(shù)信息庫負(fù)責(zé)提供“函數(shù)”接口信息基礎(chǔ)數(shù)據(jù)訪問;函數(shù)實(shí)例庫分別與“函數(shù)統(tǒng)一接口”實(shí)例收發(fā)模塊、函數(shù)實(shí)例調(diào)度模塊和函數(shù)實(shí)例執(zhí)行模塊連接,負(fù)責(zé)提供函數(shù)實(shí)例信息基礎(chǔ)數(shù)據(jù)訪問;“函數(shù)統(tǒng)一接口”實(shí)例收發(fā)模塊負(fù)責(zé)接收“運(yùn)行時(shí)系統(tǒng)代理”發(fā)來的“函數(shù)統(tǒng)一接口”實(shí)例執(zhí)行請求、以及返回“函數(shù)統(tǒng)一接口”實(shí)例執(zhí)行結(jié)果給對應(yīng)的“運(yùn)行時(shí)系統(tǒng)代理”;函數(shù)實(shí)例執(zhí)行模塊負(fù)責(zé)具體加載“函數(shù)統(tǒng)一接口”實(shí)例所對應(yīng)“第三方函數(shù)組件庫”并執(zhí)行對應(yīng)的函數(shù)調(diào)用實(shí)例;函數(shù)實(shí)例調(diào)度模塊分別與“函數(shù)統(tǒng)一接口”實(shí)例收發(fā)模塊和函數(shù)實(shí)例執(zhí)行模塊連接,負(fù)責(zé)對待執(zhí)行“函數(shù)統(tǒng)一接口”實(shí)例的執(zhí)行優(yōu)先級及先后順序進(jìn)行管理、以及協(xié)調(diào)“函數(shù)統(tǒng)一接口”實(shí)例收發(fā)模塊和函數(shù)實(shí)例執(zhí)行模塊的運(yùn)行;業(yè)務(wù)模塊組中的各個(gè)模塊通過網(wǎng)絡(luò)通信模塊實(shí)現(xiàn)與其它裝置的網(wǎng)絡(luò)通信;函數(shù)信息庫和函數(shù)實(shí)例庫的數(shù)據(jù)持久保存在持久存儲模塊中; “函數(shù)接口服務(wù)器”裝置包括:業(yè)務(wù)模塊組、網(wǎng)絡(luò)通信模塊和持久存儲模塊;業(yè)務(wù)模塊組包括函數(shù)信息注冊模塊、函數(shù)信息管理模塊、函數(shù)信息檢索模塊和函數(shù)信息庫;函數(shù)信息注冊模塊、函數(shù)信息管理模塊和函數(shù)信息檢索模塊分別與函數(shù)信息庫連接;函數(shù)信息注冊模塊負(fù)責(zé)“第三方函數(shù)組件庫”的“函數(shù)”接口信息的登記注冊;函數(shù)信息管理模塊負(fù)責(zé)對已注冊的“函數(shù)”接口信息的信息維護(hù),包括修改、刪除、合并、關(guān)聯(lián)、發(fā)布和撤銷“函數(shù)”接口信息;函數(shù)信息檢索模塊負(fù)責(zé)“函數(shù)”接口信息的檢索查詢;函數(shù)信息庫負(fù)責(zé)提供“函數(shù)”接口信息基礎(chǔ)數(shù)據(jù)訪問;業(yè)務(wù)模塊組中的各個(gè)模塊通過網(wǎng)絡(luò)通信模塊實(shí)現(xiàn)與其它裝置的網(wǎng)絡(luò)通信;函數(shù)信息庫的數(shù)據(jù)持久保存在持久存儲模塊中。2.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,“應(yīng)用程序”執(zhí)行過程中請求調(diào)用“函數(shù)”的函數(shù)代碼具體執(zhí)行是由“運(yùn)行時(shí)系統(tǒng)”裝置來完成,“應(yīng)用程序”本身并不真正執(zhí)行請求調(diào)用“函數(shù)”的函數(shù)代碼;“應(yīng)用程序”將將請求調(diào)用“函數(shù)”的“函數(shù)調(diào)用實(shí)例”交給“運(yùn)行時(shí)系統(tǒng)代理”裝置,“運(yùn)行時(shí)系統(tǒng)代理”裝置進(jìn)一步通過“通道”裝置將請求調(diào)用“函數(shù)”的“函數(shù)調(diào)用實(shí)例”傳遞給“運(yùn)行時(shí)系統(tǒng)”裝置;當(dāng)“運(yùn)行時(shí)系統(tǒng)代理”裝置和“運(yùn)行時(shí)系統(tǒng)”裝置在同一個(gè)計(jì)算機(jī)結(jié)點(diǎn)時(shí)“通道”裝置可采用進(jìn)程間通信技術(shù)實(shí)現(xiàn),當(dāng)“運(yùn)行時(shí)系統(tǒng)代理”裝置和“運(yùn)行時(shí)系統(tǒng)”裝置不在同一個(gè)計(jì)算機(jī)結(jié)點(diǎn)時(shí)“通道”裝置可采用網(wǎng)絡(luò)消息隊(duì)列技術(shù)實(shí)現(xiàn);“運(yùn)行時(shí)系統(tǒng)”裝置中的“函數(shù)實(shí)例執(zhí)行”模塊來負(fù)責(zé)具體執(zhí)行“應(yīng)用程序”所請求調(diào)用的“函數(shù)”,“函數(shù)實(shí)例執(zhí)行”模塊既可以在“運(yùn)行時(shí)系統(tǒng)”裝置內(nèi)直接運(yùn)行來完成、也可以由“運(yùn)行時(shí)系統(tǒng)”裝置調(diào)用“第三方函數(shù)組件庫”的外部服務(wù)程序來完成、還可以由“運(yùn)行時(shí)系統(tǒng)”裝置委托網(wǎng)上的其它“運(yùn)行時(shí)系統(tǒng)”裝置來完成;“函數(shù)接□服務(wù)器”裝置不負(fù)責(zé)具體執(zhí)行“應(yīng)用程序”所請求調(diào)用的“函數(shù)”代碼。3.根據(jù)權(quán)利要求1或2所述的系統(tǒng),其特征在于,只有在“運(yùn)行時(shí)系統(tǒng)”裝置中直接注冊的“函數(shù)”才能在該“運(yùn)行時(shí)系統(tǒng)”裝置中直接運(yùn)行來完成、或者由“運(yùn)行時(shí)系統(tǒng)”裝置調(diào)用“第三方函數(shù)組件庫”的外部服務(wù)程序來完成;“運(yùn)行時(shí)系統(tǒng)”裝置具體采用上述兩種方式的哪一種則取決于“應(yīng)用程序”所請求調(diào)用“函數(shù)”所屬的組件庫類型;“運(yùn)行時(shí)系統(tǒng)”裝置所支持的“第三方函數(shù)組件庫”的組件庫類型包括Corba、EJB、COM+、Web Service、OLE、Java庫代碼、DLL庫代碼和SO庫代碼。4.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,“運(yùn)行時(shí)系統(tǒng)代理”裝置既可以在“應(yīng)用程序”進(jìn)程空間內(nèi)來運(yùn)行,也可以作為獨(dú)立的進(jìn)程來運(yùn)行;“運(yùn)行時(shí)系統(tǒng)代理”裝置在“應(yīng)用程序”進(jìn)程空間內(nèi)來運(yùn)行時(shí),“應(yīng)用程序”需要將“運(yùn)行時(shí)系統(tǒng)代理”裝置的代碼編譯鏈接到該“應(yīng)用程序”中;“運(yùn)行時(shí)系統(tǒng)代理”裝置監(jiān)控“應(yīng)用程序”所請求調(diào)用“函數(shù)”有兩種方法:第一種方法為“應(yīng)用程序”所請求調(diào)用“函數(shù)”的實(shí)現(xiàn)代碼改寫為將該調(diào)用“函數(shù)”及其參數(shù)傳遞給“運(yùn)行時(shí)系統(tǒng)代理”裝置的函數(shù)執(zhí)行請求代理模塊;第二種方法為“運(yùn)行時(shí)系統(tǒng)代理”裝置中函數(shù)執(zhí)行監(jiān)控模塊采用函數(shù)鉤子技術(shù)來對“應(yīng)用程序”所請求調(diào)用“函數(shù)”增加監(jiān)控鉤子函數(shù)代碼。5.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,“運(yùn)行時(shí)系統(tǒng)”裝置中“函數(shù)”的注冊信息需要包括函數(shù)唯一索引號、函數(shù)類別號、函數(shù)名、參數(shù)個(gè)數(shù)、{參數(shù)名、參數(shù)類型}序列表、函數(shù)所屬組件庫類型、函數(shù)所屬組件庫名稱、函數(shù)所屬組件庫訪問路徑、函數(shù)所屬組件庫開發(fā)商唯一索引號、運(yùn)行平均時(shí)間、運(yùn)行可靠性評估值;“函數(shù)接口服務(wù)器”裝置上“函數(shù)”的注冊信息需要包括函數(shù)唯一索引號、函數(shù)類別號、函數(shù)名、參數(shù)個(gè)數(shù)、{參數(shù)名、參數(shù)類型}序列表、函數(shù)所屬組件庫類型、函數(shù)所屬組件庫名稱、函數(shù)所屬組件庫訪問路徑、函數(shù)所屬組件庫開發(fā)商唯一索引號、所屬“運(yùn)行時(shí)系統(tǒng)”裝置唯一索引號、所屬“運(yùn)行時(shí)系統(tǒng)”裝置訪問路徑、運(yùn)行平均時(shí)間和運(yùn)行可靠性評估值。6.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,“運(yùn)行時(shí)系統(tǒng)代理”裝置和“運(yùn)行時(shí)系統(tǒng)”裝置之間采用“函數(shù)統(tǒng)一接口”格式進(jìn)行函數(shù)請求調(diào)用和執(zhí)行結(jié)果信息的表達(dá);“運(yùn)行時(shí)系統(tǒng)”裝置和“函數(shù)接口服務(wù)器”裝置之間采用“函數(shù)統(tǒng)一接口”格式進(jìn)行函數(shù)接口信息的查詢;不同“運(yùn)行時(shí)系統(tǒng)”裝置之間采用采用“函數(shù)統(tǒng)一接口”格式進(jìn)行函數(shù)請求調(diào)用和執(zhí)行結(jié)果信息的表達(dá);“函數(shù)統(tǒng)一接口”格式采用可擴(kuò)展標(biāo)記語言對函數(shù)的聲明、調(diào)用以及執(zhí)行結(jié)果信息進(jìn)行描述;“函數(shù)統(tǒng)一接口”實(shí)例既可以為文件,也可以為字節(jié)流。7.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,“應(yīng)用程序”執(zhí)行過程中請求調(diào)用“函數(shù)”的“函數(shù)調(diào)用實(shí)例”信息需要包括函數(shù)所屬組件庫名稱、函數(shù)名、參數(shù)個(gè)數(shù)、{參數(shù)名、參數(shù)值}序列表;“函數(shù)統(tǒng)一接口”實(shí)例信息需要包括函數(shù)實(shí)例唯一索引號、函數(shù)所屬組件庫類型、函數(shù)所屬組件庫名稱、函數(shù)名、參數(shù)個(gè)數(shù)、{參數(shù)名、參數(shù)值}序列表、函數(shù)最大執(zhí)行時(shí)間;“函數(shù)統(tǒng)一接口”實(shí)例的執(zhí)行結(jié)果需要包括函數(shù)實(shí)例唯一索引號、函數(shù)唯一索引號、函數(shù)類別號、函數(shù)名、所屬“運(yùn)行時(shí)系統(tǒng)”唯一索引號、結(jié)果參數(shù)個(gè)數(shù)、{結(jié)果參數(shù)名、結(jié)果參數(shù)值}序列表、運(yùn)行實(shí)際時(shí)間。8.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,“運(yùn)行時(shí)系統(tǒng)”裝置中,“函數(shù)實(shí)例庫”可針對待執(zhí)行“函數(shù)統(tǒng)一接口”實(shí)例分為多個(gè)優(yōu)先級隊(duì)列,并由“函數(shù)實(shí)例調(diào)度”模塊來設(shè)置“函數(shù)統(tǒng)一接口”實(shí)例執(zhí)行的優(yōu)先級以及優(yōu)先級隊(duì)列;“函數(shù)實(shí)例調(diào)度”模塊通過操作系統(tǒng)提供的各種進(jìn)程間或者線程間通信機(jī)制來與“函數(shù)統(tǒng)一接口”實(shí)例收發(fā)模塊、“函數(shù)實(shí)例執(zhí)行”模塊進(jìn)行協(xié)作運(yùn)行。9.一種面向統(tǒng)一接口調(diào)用的運(yùn)行時(shí)系統(tǒng)的運(yùn)行方法,其特征在于,所述方法包括具體步驟如下: 第I步、“第三方函數(shù)組件庫”的“函數(shù)”可隨時(shí)注冊到“運(yùn)行時(shí)系統(tǒng)”; 第2步、“運(yùn)行時(shí)系統(tǒng)”中已注冊“函數(shù)”信息隨時(shí)更新到“函數(shù)接口服務(wù)器”; 第3步、“應(yīng)用程序”啟動,并加載“運(yùn)行時(shí)系統(tǒng)代理”;“運(yùn)行時(shí)系統(tǒng)代理”連接當(dāng)前指定的“運(yùn)行時(shí)系統(tǒng)”,當(dāng)前指定的“運(yùn)行時(shí)系統(tǒng)”簡稱為當(dāng)前“運(yùn)行時(shí)系統(tǒng)”; 第4步、“應(yīng)用程序”繼續(xù)運(yùn)行,直至“應(yīng)用程序”執(zhí)行退出函數(shù)或者“應(yīng)用程序”執(zhí)行到請求調(diào)用“運(yùn)行時(shí)系統(tǒng)代理”所負(fù)責(zé)的“函數(shù)”;若“應(yīng)用程序”繼續(xù)運(yùn)行過程中請求調(diào)用“運(yùn)行時(shí)系統(tǒng)代理”所負(fù)責(zé)的“函數(shù)”,則執(zhí)行第5步;若“應(yīng)用程序”執(zhí)行退出函數(shù),則執(zhí)行第15步;第5步、“應(yīng)用程序”運(yùn)行過程中請求調(diào)用“運(yùn)行時(shí)系統(tǒng)代理”所負(fù)責(zé)的“函數(shù)”時(shí),“運(yùn)行時(shí)系統(tǒng)代理”將該“函數(shù)”的“函數(shù)調(diào)用實(shí)例”轉(zhuǎn)化為對應(yīng)的“函數(shù)統(tǒng)一接口”實(shí)例,并將該“函數(shù)統(tǒng)一接口”實(shí)例轉(zhuǎn)交給當(dāng)前“運(yùn)行時(shí)系統(tǒng)”等待處理結(jié)果; 第6步、當(dāng)前“運(yùn)行時(shí)系統(tǒng)”接收到待執(zhí)行的“函數(shù)統(tǒng)一接口”實(shí)例后,檢索本地“函數(shù)信息庫”查找該“函數(shù)統(tǒng)一接口”實(shí)例所對應(yīng)的“第三發(fā)函數(shù)組件庫”信息,若檢索到該“函數(shù)統(tǒng)一接口”實(shí)例所對應(yīng)的“第三發(fā)函數(shù)組件庫”信息則執(zhí)行第10步,否則執(zhí)行第7步; 第7步、當(dāng)前“運(yùn)行時(shí)系統(tǒng)”向“函數(shù)接口服務(wù)器”提出請求檢索第5步中“函數(shù)統(tǒng)一接口”實(shí)例所對應(yīng)的函數(shù)注冊信息,若“函數(shù)接口服務(wù)器”返回結(jié)果未檢索到該“函數(shù)統(tǒng)一接口”實(shí)例所對應(yīng)的函數(shù)注冊信息則執(zhí)行第11步,否則執(zhí)行第8步; 第8步、當(dāng)前“運(yùn)行時(shí)系統(tǒng)”將請求第7步中檢索到的該函數(shù)所注冊的異地“運(yùn)行時(shí)系統(tǒng)”來完成該“函數(shù)統(tǒng)一接口”實(shí)例的執(zhí)行,若異地“運(yùn)行時(shí)系統(tǒng)”未正常提供服務(wù)則執(zhí)行第11步,否則執(zhí)行第9步; 第9步、當(dāng)前“運(yùn)行時(shí)系統(tǒng)”獲得異地“運(yùn)行時(shí)系統(tǒng)”返回的“函數(shù)統(tǒng)一接口”實(shí)例執(zhí)行結(jié)果作為第6步中“函數(shù)統(tǒng)一接口”實(shí)例執(zhí)行結(jié)果,并執(zhí)行第12步; 第10步、當(dāng)前“運(yùn)行時(shí)系統(tǒng)”通過“函數(shù)實(shí)例執(zhí)行模塊”調(diào)用“函數(shù)統(tǒng)一接口”實(shí)例所對應(yīng)的函數(shù)組件庫來執(zhí)行該“函數(shù)統(tǒng)一接口”實(shí)例,并將該“函數(shù)統(tǒng)一接口”實(shí)例執(zhí)行結(jié)果作為第6步中“函數(shù)統(tǒng)一接口”實(shí)例執(zhí)行結(jié)果;并進(jìn)一步執(zhí)行第12步; 第11步、當(dāng)前“運(yùn)行時(shí)系統(tǒng)”將第6步中“函數(shù)統(tǒng)一接口”實(shí)例執(zhí)行結(jié)果設(shè)置為“執(zhí)行異常”; 第12步、當(dāng)前“運(yùn)行時(shí)系統(tǒng)”將第6步中“函數(shù)統(tǒng)一接口”實(shí)例執(zhí)行結(jié)果返回給“運(yùn)行時(shí)系統(tǒng)代理”; 第13步、“運(yùn)行時(shí)系統(tǒng)代理”將第12步中“函數(shù)統(tǒng)一接口”實(shí)例執(zhí)行結(jié)果轉(zhuǎn)化為“函數(shù)調(diào)用實(shí)例”執(zhí)行結(jié)果,并將該“函數(shù)調(diào)用實(shí)例”執(zhí)行結(jié)果返回給“應(yīng)用程序”; 第14步、“應(yīng)用程序”繼續(xù)執(zhí)行第4步; 第15步、“應(yīng)用程序”執(zhí)行結(jié)束。10.根據(jù)權(quán)利要求9所述的方法,其特征在于,當(dāng)“運(yùn)行時(shí)系統(tǒng)”在“函數(shù)信息庫”檢索到“函數(shù)統(tǒng)一接口 ”實(shí)例對應(yīng)有不止一個(gè)的函數(shù)信息時(shí),“運(yùn)行時(shí)系統(tǒng)”既可以隨機(jī)選取一個(gè)函數(shù)組件庫來運(yùn)行,也可以根據(jù)該組“函數(shù)”信息中的輔助信息來決定選擇哪一個(gè)函數(shù)組件庫來運(yùn)行,“函數(shù)”信息中的輔助信息包括運(yùn)行平均時(shí)間、運(yùn)行可靠性評估值以及函數(shù)所屬組件庫開發(fā)商唯一索引號中的全部或者部分;當(dāng)“函數(shù)接口服務(wù)器”在“函數(shù)信息庫”檢索到“函數(shù)統(tǒng)一接口”實(shí)例對應(yīng)有不止一個(gè)的函數(shù)信息時(shí),“函數(shù)接口服務(wù)器”既可以隨機(jī)選取一個(gè)函數(shù)組件庫來運(yùn)行,也可以根據(jù)該組“函數(shù)”信息中的輔助信息來決定選擇哪一個(gè)函數(shù)組件庫來運(yùn)行,“函數(shù)”信息中的輔助信息包括運(yùn)行平均時(shí)間、運(yùn)行可靠性評估值、函數(shù)所屬組件庫開發(fā)商唯一索引號以及所屬“運(yùn)行時(shí)系統(tǒng)”唯一索引號中的全部或者部分。
【文檔編號】G06F9/44GK105975261SQ201610280393
【公開日】2016年9月28日
【申請日】2016年4月28日
【發(fā)明人】李旭東
【申請人】南開大學(xué)