專利名稱:一種函數(shù)回調(diào)的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機(jī)領(lǐng)域,特別是涉及ー種函數(shù)回調(diào)的方法和系統(tǒng)。
背景技術(shù):
回調(diào)技術(shù)在計算機(jī)軟件設(shè)計領(lǐng)域應(yīng)用得十分廣泛。尤其是在基于事件驅(qū)動模型的系統(tǒng)架構(gòu)中,回調(diào)技術(shù)極大地降低了軟件模塊間的耦合性,同時提高了以處理引擎形式提供給開發(fā)用戶的軟件產(chǎn)品的可定制性。一般而言,回調(diào)技術(shù)的基本原理就是調(diào)用者將自己實現(xiàn)的回調(diào)器向回調(diào)者 注冊,回調(diào)者在緩存該回調(diào)器的某種標(biāo)識后,在適當(dāng)?shù)臅r機(jī)使用該回調(diào)器的功能,從而使回調(diào)器的實現(xiàn)者得以將更多的精力投入到與其專業(yè)領(lǐng)域密切相關(guān)的回調(diào)器內(nèi)部,而完全沒有必要去關(guān)注其它信息。傳統(tǒng)意義上的回調(diào)往往都是通過函數(shù)指針實現(xiàn)的。圖I為現(xiàn)有技術(shù)中的回調(diào)技術(shù)的框架結(jié)構(gòu)圖。如圖I所示,調(diào)用者首先將回調(diào)器地址注冊到回調(diào)者提供的注冊器中,而后回調(diào)者會在適當(dāng)?shù)臅r機(jī)通過該函數(shù)指針調(diào)用回調(diào)器函數(shù),以實現(xiàn)回調(diào)。這種做法最大的問題在于,調(diào)用者和回調(diào)者必須同處于ー個進(jìn)程空間。因為操作系統(tǒng)進(jìn)程壁壘的存在,限制了函數(shù)指針形式的回調(diào)器地址在不同進(jìn)程間的跨越式使用。
發(fā)明內(nèi)容
本發(fā)明實施例g在提供ー種函數(shù)回調(diào)方法及系統(tǒng),以實現(xiàn)在不同進(jìn)程間跨越式回調(diào)函數(shù)。本發(fā)明提供的ー種函數(shù)回調(diào)方法,包括調(diào)用者向回調(diào)者注冊回調(diào)器吋,將回調(diào)器地址打包成進(jìn)程間通信(IPC)報文發(fā)送至回調(diào)者;回調(diào)者從IPC報文中提取并緩存回調(diào)器地址,以回調(diào)者進(jìn)程空間內(nèi)的本地地址向
注冊器注冊;當(dāng)回調(diào)者需要調(diào)用回調(diào)器的時候,調(diào)用注冊器所接收到的本地地址,通過該本地地址從緩存中提取回調(diào)器地址,并將所述回調(diào)器地址打包成IPC報文發(fā)送至調(diào)用者;調(diào)用者從IPC報文中提取回調(diào)器地址,調(diào)用該回調(diào)器地址所標(biāo)識的回調(diào)器函數(shù)。本發(fā)明提供的ー種函數(shù)回調(diào)系統(tǒng),包括位于調(diào)用者側(cè)的回調(diào)器以及回調(diào)者側(cè)的注冊器,其中,進(jìn)ー步包括位于調(diào)用者側(cè)的注冊模塊和回調(diào)代理,以及位于回調(diào)者側(cè)的注冊代理和回調(diào)模塊,其中,注冊模塊,用于將回調(diào)器地址打包成IPC報文發(fā)送至回調(diào)者所提供的注冊代理;注冊代理,用于從回調(diào)者側(cè)的注冊模塊提供IPC報文中提取并緩存回調(diào)器地址,以回調(diào)者進(jìn)程空間內(nèi)的本地地址向注冊器注冊;回調(diào)模塊,用于調(diào)用注冊器所接收到的本地地址,通過該本地地址從緩存中提取回調(diào)器地址,并將所述回調(diào)器地址打包成IPC報文發(fā)送至調(diào)用者的回調(diào)代理;
回調(diào)代理,用于從回調(diào)模塊發(fā)送過來的IPC報文中提取回調(diào)器地址,并調(diào)用所述回調(diào)器地址所標(biāo)識的回調(diào)器函數(shù)。利用本發(fā)明所提供的ー種函數(shù)回調(diào)方法和系統(tǒng),回調(diào)的實現(xiàn)不受進(jìn)程地址空間的限制,不受硬件部署的限制,不受編程語言和系統(tǒng)平臺的限制;回調(diào)器和注冊器的實現(xiàn)與本地回調(diào)沒有任何差別。
圖I為現(xiàn)有技術(shù)中的回調(diào)技術(shù)的框架結(jié)構(gòu)圖。圖2為本發(fā)明一實施例中ー種函數(shù)回調(diào)方法的流程圖。圖3為本發(fā)明一實施例中ー種函數(shù)回調(diào)系統(tǒng)的結(jié)構(gòu)圖。
圖4為本發(fā)明一實施例中ー種函數(shù)回調(diào)方法的流程圖。
具體實施例方式下面將結(jié)合附圖及實施例對本發(fā)明的技術(shù)方案進(jìn)行更詳細(xì)的說明。圖2所示為本發(fā)明實施例提供的ー種函數(shù)回調(diào)方法,如圖2所示,該函數(shù)回調(diào)方法包括步驟201 :當(dāng)調(diào)用者向回調(diào)者注冊回調(diào)器吋,將回調(diào)器地址打包成進(jìn)程間通信(IPC)報文發(fā)送至回調(diào)者。步驟202 :回調(diào)者從IPC報文中提取并緩存回調(diào)器地址,以回調(diào)者進(jìn)程空間內(nèi)的本地地址向注冊器注冊;在本發(fā)明ー實施例中,回調(diào)者以ー個回調(diào)者進(jìn)程空間內(nèi)的本地地址,即本地函數(shù)指針,向注冊器注冊,其中本地函數(shù)在被調(diào)用時,可從緩存中提取回調(diào)器地址。步驟203 :當(dāng)回調(diào)者需要調(diào)用回調(diào)器的時候,調(diào)用注冊器所接收到的本地地址,通過該本地地址從緩存中提取回調(diào)器地址,并將所述回調(diào)器地址打包成IPC報文發(fā)送至調(diào)用者;在本發(fā)明ー實施例中,回調(diào)者調(diào)用注冊器所接收到的本地函數(shù)指針?biāo)赶虻暮瘮?shù),通過該本地函數(shù),從緩存中提取回調(diào)器地址,并將其與輸入數(shù)據(jù)一起打包成IPC報文發(fā)送至調(diào)用者。步驟204 :調(diào)用者從IPC報文中提取回調(diào)器地址,調(diào)用該回調(diào)器地址所標(biāo)識的回調(diào)器函數(shù);在本發(fā)明ー實施例中,調(diào)用者從IPC報文中提取回調(diào)器地址和輸入數(shù)據(jù),并以后者為參數(shù)調(diào)用前者所標(biāo)識的回調(diào)器函數(shù)。步驟205 :調(diào)用者將回調(diào)器的返回值和輸出數(shù)據(jù)重新打包成IPC報文,返回給回調(diào)者進(jìn)程中。在本發(fā)明ー實施例中,調(diào)用者將IPC報文返回給回調(diào)者進(jìn)程中的本地函數(shù),該本地函數(shù)進(jìn)ー步解析IPC報文,并最終返回到回調(diào)者進(jìn)程中調(diào)用回調(diào)器的地方。圖3所示為本發(fā)明實施例提供的ー種函數(shù)回調(diào)系統(tǒng)的結(jié)構(gòu)圖。如圖2所示,函數(shù)回調(diào)系統(tǒng)由調(diào)用者側(cè)和回調(diào)者側(cè)構(gòu)成。其中,調(diào)用者側(cè)由注冊模塊、回調(diào)器和回調(diào)代理構(gòu)成,回調(diào)者側(cè)由注冊代理、注冊器和回調(diào)模塊構(gòu)成。其中回調(diào)器與注冊器的功能與現(xiàn)有技術(shù)相同,不在此贅述。
注冊模塊,用于將回調(diào)器地址打包成IPC報文發(fā)送至回調(diào)者所提供的注冊代理;注冊代理,用于從回調(diào)者側(cè)的注冊模塊提供IPC報文中提取并緩存回調(diào)器地址,以回調(diào)者進(jìn)程空間內(nèi)的本地地址向注冊器注冊;回調(diào)模塊,用于調(diào)用注冊器所接收到的本地地址,通過該本地地址從緩存中提取回調(diào)器地址,并將所述回調(diào)器地址打包成IPC報文發(fā)送至調(diào)用者的回調(diào)代理;
回調(diào)代理,用于從回調(diào)模塊發(fā)送過來的IPC報文中提取回調(diào)器地址,并調(diào)用所述回調(diào)器地址所標(biāo)識的回調(diào)器函數(shù)?;卣{(diào)代理還進(jìn)一歩將回調(diào)器的返回值重新打包成IPC報文,返回給回調(diào)者進(jìn)程中的本地函數(shù),其中,該本地函數(shù)被調(diào)用是,可解析該IPC報文并最終將返回值返回到回調(diào)者進(jìn)程中調(diào)用回調(diào)器的地方。利用本發(fā)明所提供的跨進(jìn)程實現(xiàn)回調(diào)的方法,相較于通常意義上本地回調(diào)和借助遠(yuǎn)程過程調(diào)用或Web Service機(jī)制實現(xiàn)類似功能的方法具有明顯優(yōu)勢回調(diào)的實現(xiàn)不受進(jìn)程地址空間的限制,不受硬件部署的限制,不受編程語言和系統(tǒng)平臺的限制;回調(diào)器和注冊器的實現(xiàn)與本地回調(diào)沒有任何差別,所有關(guān)于跨進(jìn)程特性的支持全部由注冊代理和回調(diào)代理提供,極大地降低了從本地回調(diào)系統(tǒng)遷移到跨進(jìn)程回調(diào)系統(tǒng)的技術(shù)難度和實施風(fēng)險;在不同進(jìn)程間直接傳遞函數(shù)指針而非函數(shù)名,使處理流程更加簡單,無需在本地建立函數(shù)名與函數(shù)地址的對應(yīng)關(guān)系。圖4所示為本發(fā)明實施例所提供的ー種函數(shù)回調(diào)方法的流程圖。在調(diào)用者和回調(diào)者方分別設(shè)置ー個支持進(jìn)程間通信的代理模塊,分別標(biāo)識為回調(diào)代理和注冊代理,其中回調(diào)代理位于調(diào)用者側(cè),注冊代理位于回調(diào)者側(cè)。在本實施例中,該進(jìn)程間通信為IPC/RPC,后續(xù)將都以IPC/RPC為例說明,但本領(lǐng)域技術(shù)人員可知,根據(jù)應(yīng)用環(huán)境的不同,還可以利用其他支持進(jìn)程間通信的協(xié)議。如圖4所示,該方法包括步驟401 :調(diào)用者向回調(diào)者注冊回調(diào)器吋,將回調(diào)器地址打包成IPC/RPC報文發(fā)送至回調(diào)者所提供的注冊代理,而不再像現(xiàn)有技術(shù)中直接以回調(diào)器地址作為參數(shù)調(diào)用回調(diào)者所提供的注冊器函數(shù)。步驟402 :注冊代理從IPC/RPC報文中提取并緩存回調(diào)器地址后,并不直接將取出的回調(diào)器地址交給注冊器,而是以ー個回調(diào)者進(jìn)程空間內(nèi)的本地地址,即本地函數(shù)指針,向注冊器注冊。該本地函數(shù)在被調(diào)用時,可從緩存中提取回調(diào)器地址。步驟403 :回調(diào)者在需要調(diào)用回調(diào)器的時候,自動調(diào)用注冊器所接收到的本地函數(shù)指針?biāo)赶虻暮瘮?shù)。通過該本地函數(shù),從緩存中提取回調(diào)器地址,并將其與輸入數(shù)據(jù)一起打包成IPC/RPC報文發(fā)送至調(diào)用者所提供的回調(diào)代理。步驟404 :回調(diào)代理從IPC/RPC報文中提取回調(diào)器地址和輸入數(shù)據(jù),并以后者為參數(shù)調(diào)用前者所標(biāo)識的回調(diào)器函數(shù)。因為回調(diào)器函數(shù)和回調(diào)代理同處于調(diào)用者進(jìn)程中,所以這種函數(shù)調(diào)用是允許的。步驟405 :回調(diào)代理將回調(diào)器的返回值和輸出數(shù)據(jù)重新打包成IPC/RPC報文,返回給回調(diào)者進(jìn)程中的本地函數(shù),該本地函數(shù)可以解析IPC/RPC報文,并最終返回到回調(diào)者進(jìn)程中調(diào)用回調(diào)器的地方,完成一次完整的跨進(jìn)程回調(diào)。在本實施例中,由于利用了 IPC/RPC進(jìn)程間通信方式,即使當(dāng)調(diào)用者進(jìn)程位于客戶機(jī)而回調(diào)者進(jìn)程位于服務(wù)器上吋,不但允許客戶機(jī)調(diào)用服務(wù)器的功能,而且還允許服務(wù)器回調(diào)客戶機(jī)的功能。
本發(fā)明所提供的跨進(jìn)程實現(xiàn)回調(diào)的方法,并不僅局限于同一臺計算機(jī)上的不同進(jìn)程,分別處于網(wǎng)絡(luò)上不同 計算機(jī)中的進(jìn)程同樣可以依照本方法實現(xiàn)回調(diào)。以上所述僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換以及改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.ー種函數(shù)回調(diào)方法,其特征在于,包括 調(diào)用者向回調(diào)者注冊回調(diào)器吋,將回調(diào)器地址打包成進(jìn)程間通信(IPC)報文發(fā)送至回調(diào)者; 回調(diào)者從IPC報文中提取并緩存回調(diào)器地址,以回調(diào)者進(jìn)程空間內(nèi)的本地地址向注冊器注冊; 當(dāng)回調(diào)者需要調(diào)用回調(diào)器的時候,調(diào)用注冊器所接收到的本地地址,通過該本地地址從緩存中提取回調(diào)器地址,并將所述回調(diào)器地址打包成IPC報文發(fā)送至調(diào)用者; 調(diào)用者從IPC報文中提取回調(diào)器地址,調(diào)用該回調(diào)器地址所標(biāo)識的回調(diào)器函數(shù)。
2.如權(quán)利要求I所述的方法,其特征在于,所述以回調(diào)者進(jìn)程空間內(nèi)的本地地址向注冊器注冊包括 利用一個本地函數(shù)指針向注冊器注冊,其中,所述本地函數(shù)被調(diào)用時,可從緩存中提取回調(diào)器地址; 所述通過該本地地址從緩存中提取回調(diào)器地址包括 調(diào)用所述本地函數(shù)指針?biāo)赶虻暮瘮?shù),通過該本地函數(shù)從緩存中提取回調(diào)器地址。
3.如權(quán)利要求I或2所述的方法,其特征在干,進(jìn)ー步包括所述調(diào)用者將回調(diào)器的返回值重新打包成IPC報文,返回給回調(diào)者進(jìn)程中的本地函數(shù),該本地函數(shù)進(jìn)ー步解析IPC報文,并最終返回到回調(diào)者進(jìn)程中調(diào)用回調(diào)器的地方。
4.如權(quán)利要求I或2所述的方法,其特征在于,所述IPC報文為IPC/RPC報文。
5.ー種函數(shù)回調(diào)系統(tǒng),包括位于調(diào)用者側(cè)的回調(diào)器以及回調(diào)者側(cè)的注冊器,其特征在干,進(jìn)ー步包括位于調(diào)用者側(cè)的注冊模塊和回調(diào)代理,以及位于回調(diào)者側(cè)的注冊代理和回調(diào)模塊,其中, 注冊模塊,用于將回調(diào)器地址打包成IPC報文發(fā)送至回調(diào)者所提供的注冊代理; 注冊代理,用于從回調(diào)者側(cè)的注冊模塊提供IPC報文中提取并緩存回調(diào)器地址,以回調(diào)者進(jìn)程空間內(nèi)的本地地址向注冊器注冊; 回調(diào)模塊,用于調(diào)用注冊器所接收到的本地地址,通過該本地地址從緩存中提取回調(diào)器地址,并將所述回調(diào)器地址打包成IPC報文發(fā)送至調(diào)用者的回調(diào)代理; 回調(diào)代理,用于從回調(diào)模塊發(fā)送過來的IPC報文中提取回調(diào)器地址,并調(diào)用所述回調(diào)器地址所標(biāo)識的回調(diào)器函數(shù)。
全文摘要
本發(fā)明實施例提供了一種函數(shù)回調(diào)方法和系統(tǒng),以實現(xiàn)在不同進(jìn)程間跨越式回調(diào)函數(shù)。其中,該函數(shù)回調(diào)方法包括調(diào)用者向回調(diào)者注冊回調(diào)器時,將回調(diào)器地址打包成進(jìn)程間通信(IPC)報文發(fā)送至回調(diào)者;回調(diào)者從IPC報文中提取并緩存回調(diào)器地址,以回調(diào)者進(jìn)程空間內(nèi)的本地地址向注冊器注冊;當(dāng)回調(diào)者需要調(diào)用回調(diào)器的時候,調(diào)用注冊器所接收到的本地地址,通過該本地地址從緩存中提取回調(diào)器地址,并將所述回調(diào)器地址打包成IPC報文發(fā)送至調(diào)用者;調(diào)用者從IPC報文中提取回調(diào)器地址,調(diào)用該回調(diào)器地址所標(biāo)識的回調(diào)器函數(shù)。
文檔編號G06F9/46GK102654840SQ20111039155
公開日2012年9月5日 申請日期2011年11月30日 優(yōu)先權(quán)日2011年11月30日
發(fā)明者閔衛(wèi) 申請人:北京書生數(shù)字圖書館軟件技術(shù)有限公司, 北京書生網(wǎng)絡(luò)技術(shù)有限公司, 天津書生投資有限公司