專(zhuān)利名稱(chēng):一種遠(yuǎn)程過(guò)程調(diào)用方法、裝置和注冊(cè)庫(kù)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,尤其涉及一種遠(yuǎn)程過(guò)程調(diào)用方法、裝置和注冊(cè)庫(kù)。
背景技術(shù):
遠(yuǎn)程過(guò)程調(diào)用(RPC,Remote Procedure Call)是一種通過(guò)網(wǎng)絡(luò)從遠(yuǎn)程計(jì)算機(jī)程序上請(qǐng)求服務(wù),而不需要了解底層網(wǎng)絡(luò)通訊細(xì)節(jié)的技術(shù)?,F(xiàn)有技術(shù)中,瀏覽器端調(diào)用服務(wù)器端的業(yè)務(wù)邏輯時(shí)多采用RPC這種協(xié)議。 目前,瀏覽器與服務(wù)器的交互,常用的方式包括模擬表單、異步JavaScript和XML (AJAX, Asynchronous JavaScript and XML)、遠(yuǎn)程調(diào)用框架(DWR, Direct WebRemoting)、WEB服務(wù)等。 本發(fā)明人在對(duì)現(xiàn)有技術(shù)的研究中發(fā)現(xiàn),現(xiàn)有的瀏覽器與服務(wù)器的各種交互方式都存在一些問(wèn)題,例如模擬表單方式需要解決表單內(nèi)容的編碼、調(diào)用結(jié)果的解析以及處理業(yè)務(wù)過(guò)程等多個(gè)異步提交之間的銜接問(wèn)題;AJAX方式在業(yè)務(wù)過(guò)程涉及多次人機(jī)交互及瀏覽器/服務(wù)器交互時(shí),需要程序員使用特殊的手段來(lái)實(shí)現(xiàn)多次交互之間銜接(例如在服務(wù)器響應(yīng)中添加JavaScript腳本代碼;或定義多個(gè)支持回調(diào)用Ajax標(biāo)簽等),使得整個(gè)過(guò)程實(shí)現(xiàn)缺乏連貫性,不易理解,更不易維護(hù);DWR則需要學(xué)習(xí)一種新的遠(yuǎn)程調(diào)用類(lèi)庫(kù)及其部署、應(yīng)用方法;Web服務(wù)的主要問(wèn)題在于學(xué)習(xí)成本高,要求程序員至少應(yīng)掌握一套定義Web服務(wù)的標(biāo)簽或聲明和一套瀏覽器調(diào)用Web服務(wù)的JavaScript API。另外,由于DWR、Web服務(wù)都會(huì)公開(kāi)服務(wù)器端類(lèi)的調(diào)用細(xì)節(jié),大規(guī)模應(yīng)用時(shí)容易引發(fā)潛在的安全性問(wèn)題。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明實(shí)施例提供一種遠(yuǎn)程過(guò)程調(diào)用方法、裝置和注冊(cè)庫(kù),實(shí)現(xiàn)快捷安全的遠(yuǎn)程過(guò)程調(diào)用。 為實(shí)現(xiàn)上述目的,本發(fā)明實(shí)施例提供了如下技術(shù)方案
—種遠(yuǎn)程過(guò)程調(diào)用方法,包括 服務(wù)器端接收瀏覽器端的頁(yè)面的JavaScript腳本代理函數(shù)發(fā)送的函數(shù)調(diào)用請(qǐng)求,所述函數(shù)調(diào)用請(qǐng)求中包括本次調(diào)用的類(lèi)的類(lèi)注冊(cè)標(biāo)識(shí),方法名以及本次調(diào)用使用的參數(shù); 所述服務(wù)器端對(duì)所述函數(shù)調(diào)用請(qǐng)求進(jìn)行解碼,確定所述JavaScript腳本代理函
數(shù)對(duì)應(yīng)的類(lèi)注冊(cè)標(biāo)識(shí),并,獲取本次調(diào)用的方法名以及本次調(diào)用使用的參數(shù); 所述服務(wù)器端從注冊(cè)庫(kù)中檢索與所述類(lèi)注冊(cè)標(biāo)識(shí)和方法名對(duì)應(yīng)的實(shí)體類(lèi)和相應(yīng)
的方法聲明,并根據(jù)所述方法聲明對(duì)本次調(diào)用使用的參數(shù)進(jìn)行類(lèi)型轉(zhuǎn)換; 所述服務(wù)器端創(chuàng)建服務(wù)器端對(duì)象并執(zhí)行調(diào)用,獲得調(diào)用結(jié)果,并將所述調(diào)用結(jié)果
返回給瀏覽器端。 所述JavaScript腳本代理函數(shù)由所述注冊(cè)庫(kù)根據(jù)所述服務(wù)器端的類(lèi)注冊(cè)請(qǐng)求對(duì)服務(wù)器端類(lèi)進(jìn)行注冊(cè)后返回給瀏覽器端。
所述注冊(cè)庫(kù)根據(jù)所述服務(wù)器端的類(lèi)注冊(cè)請(qǐng)求對(duì)服務(wù)器端類(lèi)進(jìn)行注冊(cè)包括
服務(wù)器端向注冊(cè)庫(kù)發(fā)送類(lèi)注冊(cè)請(qǐng)求,請(qǐng)求所述注冊(cè)庫(kù)根據(jù)所述類(lèi)注冊(cè)請(qǐng)求中攜帶 的信息進(jìn)行類(lèi)注冊(cè),所述類(lèi)注冊(cè)請(qǐng)求由瀏覽器端所請(qǐng)求的頁(yè)面的服務(wù)器端代碼發(fā)送至注冊(cè) 庫(kù),其中包括所述服務(wù)器端類(lèi)在服務(wù)器端的類(lèi)名以及希望在瀏覽器調(diào)用所述服務(wù)器端類(lèi)時(shí) 使用的命名空間; 注冊(cè)庫(kù)根據(jù)所述服務(wù)器端類(lèi)在服務(wù)器端的類(lèi)名查找到與所述服務(wù)器端類(lèi)對(duì)應(yīng)的 實(shí)體類(lèi),并分析所述實(shí)體類(lèi)中的方法聲明,為所述實(shí)體類(lèi)生成一個(gè)類(lèi)注冊(cè)標(biāo)識(shí)和與所述類(lèi) 注冊(cè)標(biāo)識(shí)對(duì)應(yīng)的JavaScript腳本代理函數(shù); 所述注冊(cè)庫(kù)將所述JavaScript腳本代理函數(shù)返回給所述瀏覽器端的頁(yè)面。
可選地,所述方法還包括 所述瀏覽器端的頁(yè)面將所述JavaScript腳本代理函數(shù)加載到當(dāng)前頁(yè)面中。
所述注冊(cè)庫(kù)將所述JavaScript腳本代理函數(shù)返回給所述瀏覽器端的頁(yè)面具體 為 所述注冊(cè)庫(kù)將所述JavaScript腳本代理函數(shù)的引用寫(xiě)到所述瀏覽器端所請(qǐng)求的 頁(yè)面內(nèi)容中。 所述類(lèi)注冊(cè)標(biāo)識(shí)由所述注冊(cè)庫(kù)隨機(jī)生成,當(dāng)服務(wù)器重新啟動(dòng)時(shí),為每個(gè)注冊(cè)的類(lèi) 生成新的類(lèi)注冊(cè)標(biāo)識(shí)。
—種遠(yuǎn)程過(guò)程調(diào)用裝置,該裝置位于服務(wù)器端,包括 第一接收單元,用于接收瀏覽器端的頁(yè)面的JavaScript腳本代理函數(shù)發(fā)送的函 數(shù)調(diào)用請(qǐng)求,所述函數(shù)調(diào)用請(qǐng)求中包括本次調(diào)用的類(lèi)的類(lèi)注冊(cè)標(biāo)識(shí)、方法名以及本次調(diào)用 使用的參數(shù); 獲取單元,用于對(duì)所述函數(shù)調(diào)用請(qǐng)求進(jìn)行解碼,確定所述JavaScript腳本代理函
數(shù)對(duì)應(yīng)的類(lèi)注冊(cè)標(biāo)識(shí),并,獲取本次調(diào)用的方法名以及本次調(diào)用使用的參數(shù); 處理單元,用于從注冊(cè)庫(kù)中檢索與所述類(lèi)注冊(cè)標(biāo)識(shí)和方法名對(duì)應(yīng)的實(shí)體類(lèi)和相應(yīng)
的方法聲明,并根據(jù)所述方法聲明對(duì)本次調(diào)用使用的參數(shù)進(jìn)行類(lèi)型轉(zhuǎn)換; 第一發(fā)送單元,用于創(chuàng)建服務(wù)器端對(duì)象并執(zhí)行調(diào)用,獲得調(diào)用結(jié)果,并將所述調(diào)用
結(jié)果返回給瀏覽器端。 可選地,所述裝置還包括 第二發(fā)送單元,用于向注冊(cè)庫(kù)發(fā)送類(lèi)注冊(cè)請(qǐng)求,請(qǐng)求所述注冊(cè)庫(kù)根據(jù)所述類(lèi)注冊(cè) 請(qǐng)求中攜帶的信息進(jìn)行類(lèi)注冊(cè),所述類(lèi)注冊(cè)請(qǐng)求由瀏覽器端所請(qǐng)求的頁(yè)面的服務(wù)器端代碼 發(fā)送至注冊(cè)庫(kù),其中包括所述服務(wù)器端類(lèi)在服務(wù)器端的類(lèi)名以及希望在瀏覽器調(diào)用所述服 務(wù)器端類(lèi)時(shí)使用的命名空間。 —種用于遠(yuǎn)程過(guò)程調(diào)用的注冊(cè)庫(kù),包括 接收單元,用于接收服務(wù)器端發(fā)送的類(lèi)注冊(cè)請(qǐng)求,所述類(lèi)注冊(cè)請(qǐng)求由瀏覽器端所 請(qǐng)求的頁(yè)面的服務(wù)器端代碼發(fā)送至注冊(cè)庫(kù),其中包括服務(wù)器端類(lèi)在服務(wù)器端的類(lèi)名以及希 望在瀏覽器調(diào)用所述服務(wù)器端類(lèi)時(shí)使用的命名空間; 處理單元,用于根據(jù)所述服務(wù)器端類(lèi)在服務(wù)器端的類(lèi)名查找到與所述服務(wù)器端類(lèi) 對(duì)應(yīng)的實(shí)體類(lèi),分析所述實(shí)體類(lèi)中的方法聲明; 生成單元,用于為所述實(shí)體類(lèi)生成一個(gè)類(lèi)注冊(cè)標(biāo)識(shí)和與所述類(lèi)注冊(cè)標(biāo)識(shí)對(duì)應(yīng)的JavaScript腳本代理函數(shù); 發(fā)送單元,用于將所述JavaScript腳本代理函數(shù)返回給所述瀏覽器端的頁(yè)面。
所述發(fā)送單元將所述JavaScript腳本代理函數(shù)返回給所述瀏覽器端的頁(yè)面具體 為 所述發(fā)送單元將所述JavaScript腳本代理函數(shù)的引用寫(xiě)到所述瀏覽器端所請(qǐng)求 的頁(yè)面內(nèi)容中。 所述注冊(cè)標(biāo)識(shí)由所述生成單元隨機(jī)生成,當(dāng)服務(wù)器重新啟動(dòng)時(shí),為每個(gè)注冊(cè)的類(lèi) 生成新的類(lèi)注冊(cè)標(biāo)識(shí)。 在本發(fā)明實(shí)施例中,服務(wù)器端接收瀏覽器端的頁(yè)面的JavaScript腳本代理函數(shù) 發(fā)送的函數(shù)調(diào)用請(qǐng)求,所述函數(shù)調(diào)用請(qǐng)求中包括本次調(diào)用的類(lèi)的類(lèi)注冊(cè)標(biāo)識(shí)、方法名以及 本次調(diào)用使用的參數(shù);所述服務(wù)器端對(duì)所述JavaScript腳本代理函數(shù)的調(diào)用請(qǐng)求進(jìn)行解 碼,獲取本次調(diào)用的類(lèi)注冊(cè)標(biāo)識(shí)、方法名以及本次調(diào)用使用的參數(shù);所述服務(wù)器端從注冊(cè) 庫(kù)中檢索與所述類(lèi)注冊(cè)標(biāo)識(shí)和方法名對(duì)應(yīng)的實(shí)體類(lèi)和相應(yīng)的方法聲明,并根據(jù)所述方法聲 明對(duì)本次調(diào)用使用的參數(shù)進(jìn)行類(lèi)型轉(zhuǎn)換;所述服務(wù)器端創(chuàng)建服務(wù)器端對(duì)象并執(zhí)行調(diào)用,獲 得調(diào)用結(jié)果,并將所述調(diào)用結(jié)果返回給瀏覽器端,可見(jiàn),本發(fā)明實(shí)施例所提供的方案利用 注冊(cè)庫(kù)對(duì)服務(wù)器端的類(lèi)進(jìn)行管理,為某個(gè)被注冊(cè)的類(lèi)生成一個(gè)類(lèi)注冊(cè)標(biāo)識(shí)和與之對(duì)應(yīng)的 JavaScript腳本代理函數(shù),通過(guò)將JavaScript腳本代理函數(shù)加載到瀏覽器的頁(yè)面建立瀏 覽器端對(duì)服務(wù)器端的調(diào)用的基礎(chǔ),使得瀏覽器端的頁(yè)面通過(guò)JavaScript腳本代理函數(shù),可 以實(shí)現(xiàn)對(duì)服務(wù)器端的類(lèi)定義的方法進(jìn)行調(diào)用,這種調(diào)用無(wú)需配置文件,而且只要某個(gè)類(lèi)已 經(jīng)注冊(cè),那么該類(lèi)所定義的方法在瀏覽器端的頁(yè)面中都可以調(diào)用,而且這種調(diào)用方法,在一 次業(yè)務(wù)處理過(guò)程中進(jìn)行多次遠(yuǎn)程調(diào)用無(wú)需處理多次調(diào)用之間所需的復(fù)雜協(xié)調(diào),簡(jiǎn)化了現(xiàn)有 技術(shù)中瀏覽器端與服務(wù)器端多次交互時(shí)復(fù)雜的業(yè)務(wù)過(guò)程的開(kāi)發(fā)。
為了更清楚地說(shuō)明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對(duì)本發(fā)明實(shí)施例描述中所 需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施 例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲 得其他的附圖。
圖1為本發(fā)明一實(shí)施例所提供的遠(yuǎn)程過(guò)程調(diào)用方法的流程圖; 圖2為本發(fā)明一實(shí)施例所提供的類(lèi)注冊(cè)過(guò)程的流程圖; 圖3為本發(fā)明另一實(shí)施例所提供的類(lèi)注冊(cè)過(guò)程的流程圖; 圖4為本發(fā)明另一實(shí)施例所提供的遠(yuǎn)程過(guò)程調(diào)用的方法的流程圖; 圖5為本發(fā)明一實(shí)施例所提供的遠(yuǎn)程過(guò)程調(diào)用的裝置的結(jié)構(gòu)示意圖; 圖6為本發(fā)明一實(shí)施例所提供的注冊(cè)庫(kù)的結(jié)構(gòu)示意圖。
具體實(shí)施例方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完 整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明的一部分實(shí)施例,而不是全部的實(shí)施例?;?于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。 參見(jiàn)圖l,本發(fā)明一實(shí)施例所提供的方法包括 S101,服務(wù)器端接收瀏覽器端的頁(yè)面的JavaScript腳本代理函數(shù)發(fā)送的函數(shù)調(diào) 用請(qǐng)求,所述函數(shù)調(diào)用請(qǐng)求中包括本次調(diào)用的類(lèi)的類(lèi)注冊(cè)標(biāo)標(biāo)識(shí)、方法名以及本次調(diào)用使 用的參數(shù); 本發(fā)明實(shí)施例主要描述了瀏覽器端調(diào)用服務(wù)器端業(yè)務(wù)邏輯實(shí)現(xiàn)的方法,該方法通 過(guò)瀏覽器端和服務(wù)器端之間的交互實(shí)現(xiàn)。 瀏覽器端的頁(yè)面的JavaScript腳本代理函數(shù)由所述注冊(cè)庫(kù)根據(jù)所述服務(wù)器端的 類(lèi)注冊(cè)請(qǐng)求對(duì)服務(wù)器端類(lèi)進(jìn)行注冊(cè)后返回給瀏覽器端。 參見(jiàn)圖2,注冊(cè)庫(kù)根據(jù)所述服務(wù)器端的類(lèi)注冊(cè)請(qǐng)求對(duì)服務(wù)器端類(lèi)進(jìn)行注冊(cè)的過(guò)程 包括 S201,服務(wù)器端向注冊(cè)庫(kù)發(fā)送類(lèi)注冊(cè)請(qǐng)求,請(qǐng)求所述注冊(cè)庫(kù)根據(jù)所述類(lèi)注冊(cè)請(qǐng)求 中攜帶的信息進(jìn)行類(lèi)注冊(cè),所述類(lèi)注冊(cè)請(qǐng)求由瀏覽器端所請(qǐng)求頁(yè)面的服務(wù)器端代碼發(fā)送至 注冊(cè)庫(kù),其中包括服務(wù)器端類(lèi)在服務(wù)器端的類(lèi)名以及希望在瀏覽器調(diào)用所述服務(wù)器端類(lèi)時(shí) 使用的命名空間; 其中,注冊(cè)請(qǐng)求由瀏覽器端所請(qǐng)求頁(yè)面的服務(wù)器端代碼發(fā)送至注冊(cè)庫(kù)具體為
瀏覽器端所請(qǐng)求頁(yè)面中增加一段服務(wù)器端代碼,該服務(wù)器端代碼的為指示服務(wù)器 向注冊(cè)庫(kù)注冊(cè)某個(gè)類(lèi)。 例如,所述服務(wù)器端代碼的形式可以是 〈%= R印ository. register (MyBiz. class, 〃 $〃 )%> 其中,register為類(lèi)注冊(cè)函數(shù)的函數(shù)名,參數(shù)包括類(lèi)名MyBiz. class和該類(lèi)注冊(cè) 后的空間名為$。 S202,注冊(cè)庫(kù)根據(jù)所述服務(wù)器端類(lèi)在服務(wù)器端的類(lèi)名查找到與所述服務(wù)器端類(lèi)對(duì) 應(yīng)的實(shí)體類(lèi),并分析所述實(shí)體類(lèi)中的方法聲明,為所述實(shí)體類(lèi)生成一個(gè)類(lèi)注冊(cè)標(biāo)識(shí)和與所 述類(lèi)注冊(cè)標(biāo)識(shí)對(duì)應(yīng)的JavaScript腳本代理函數(shù); 在本發(fā)明的一種實(shí)施例中,所述類(lèi)注冊(cè)標(biāo)識(shí)由所述注冊(cè)庫(kù)隨機(jī)生成,當(dāng)服務(wù)器重 新啟動(dòng)時(shí),注冊(cè)庫(kù)可以為每個(gè)注冊(cè)的類(lèi)生成新的類(lèi)注冊(cè)標(biāo)識(shí)。 在本發(fā)明的另一種實(shí)施例中,在注冊(cè)庫(kù)生成類(lèi)標(biāo)識(shí)后,可以將該類(lèi)標(biāo)識(shí)進(jìn)行保存, 例如保存在數(shù)據(jù)庫(kù)中,這樣,當(dāng)服務(wù)器重新啟動(dòng)時(shí),注冊(cè)庫(kù)就不需要重新生成類(lèi)注冊(cè)標(biāo)識(shí) 了,只需要根據(jù)類(lèi)名或者其他的類(lèi)標(biāo)識(shí)信息從數(shù)據(jù)庫(kù)中讀取即可。 S203,所述注冊(cè)庫(kù)將所述JavaScript腳本代理函數(shù)返回給所述瀏覽器端的頁(yè)面。
在本發(fā)明一實(shí)施例中,所述注冊(cè)庫(kù)可以通過(guò)將所述JavaScript腳本代理函數(shù)的 引用寫(xiě)到所述瀏覽器端所請(qǐng)求的頁(yè)面內(nèi)容中的方式將所述JavaScript腳本代理函數(shù)返回 給所述瀏覽器端的頁(yè)面。 進(jìn)一步地,當(dāng)瀏覽器端的頁(yè)面獲得JavaScript腳本代理函數(shù)后,注冊(cè)過(guò)程還包 括 S204,瀏覽器端的頁(yè)面將所述JavaScript腳本代理函數(shù)加載到當(dāng)前頁(yè)面中。
瀏覽器端的頁(yè)面加載了 JavaScript腳本代理函數(shù)后,如果瀏覽器要訪(fǎng)問(wèn)服務(wù) 器端的該JavaScript腳本代理函數(shù)所對(duì)應(yīng)的類(lèi)所定義的方法時(shí),直接調(diào)用瀏覽器端的JavaScript腳本代理函數(shù)就可以向服務(wù)器端發(fā)出調(diào)用請(qǐng)求,只要在該調(diào)用請(qǐng)求中指明需要 本次調(diào)用的方法名以及本次調(diào)用使用的參數(shù)。 S102,所述服務(wù)器端對(duì)所述函數(shù)調(diào)用請(qǐng)求進(jìn)行解碼,確定所述JavaScript腳本代
理函數(shù)對(duì)應(yīng)的類(lèi)注冊(cè)標(biāo)識(shí),并,獲取本次調(diào)用的方法名以及本次調(diào)用使用的參數(shù); S103,所述服務(wù)器端從注冊(cè)庫(kù)中檢索與所述類(lèi)注冊(cè)標(biāo)識(shí)和方法名對(duì)應(yīng)的實(shí)體類(lèi)和
相應(yīng)的方法聲明,并根據(jù)所述方法聲明對(duì)本次調(diào)用使用的參數(shù)進(jìn)行類(lèi)型轉(zhuǎn)換; 本發(fā)明實(shí)施例中,每個(gè)JavaScript腳本代理函數(shù)都與一個(gè)服務(wù)器端類(lèi)的同名方
法對(duì)應(yīng),并根據(jù)類(lèi)注冊(cè)標(biāo)識(shí)建立JavaScript代理函數(shù)與服務(wù)器端的實(shí)體類(lèi)之間的對(duì)應(yīng)關(guān)
系。每個(gè)實(shí)體類(lèi)中可以包含多個(gè)方法,每個(gè)方法通過(guò)方法聲明說(shuō)明自身的參數(shù)類(lèi)型。 本發(fā)明實(shí)施例所提供的方法,通過(guò)JavaScript腳本代理函數(shù)的實(shí)現(xiàn)嵌入本次調(diào)
用所涉及的類(lèi)注冊(cè)標(biāo)識(shí),再根據(jù)類(lèi)注冊(cè)標(biāo)識(shí)找到對(duì)應(yīng)的實(shí)體類(lèi)。在確定實(shí)體類(lèi)之后,根據(jù)方
法名找到該方法對(duì)應(yīng)的方法聲明,并根據(jù)方法聲明對(duì)參數(shù)進(jìn)行轉(zhuǎn)換。 S104,所述服務(wù)器端創(chuàng)建服務(wù)器端對(duì)象并執(zhí)行調(diào)用,獲得調(diào)用結(jié)果,并將所述調(diào)用 結(jié)果返回給瀏覽器端。 本發(fā)明實(shí)施例所提供的方法,利用注冊(cè)庫(kù)對(duì)服務(wù)器端的類(lèi)進(jìn)行管理,為某個(gè)被注 冊(cè)的類(lèi)生成一個(gè)類(lèi)注冊(cè)標(biāo)識(shí)和與之對(duì)應(yīng)的JavaScript腳本代理函數(shù),通過(guò)將JavaScript 腳本代理函數(shù)加載到瀏覽器的頁(yè)面建立瀏覽器端對(duì)服務(wù)器端的調(diào)用的基礎(chǔ),使得瀏覽器端 的頁(yè)面通過(guò)JavaScript腳本代理函數(shù),可以實(shí)現(xiàn)對(duì)服務(wù)器端的類(lèi)定義的方法進(jìn)行調(diào)用,這 種調(diào)用無(wú)需配置文件,而且只要某個(gè)類(lèi)已經(jīng)注冊(cè),那么該類(lèi)所定義的方法瀏覽器端的頁(yè)面 都可以調(diào)用,而且這種調(diào)用方法,在一次業(yè)務(wù)處理過(guò)程中進(jìn)行多次遠(yuǎn)程調(diào)用無(wú)需處理多次 調(diào)用之間所需的復(fù)雜協(xié)調(diào),簡(jiǎn)化了現(xiàn)有技術(shù)中瀏覽器端與服務(wù)器端多次交互時(shí)復(fù)雜的業(yè)務(wù) 過(guò)程的開(kāi)發(fā)。 隨著JavaScript腳本代理函數(shù)的增加,可以形成與服務(wù)器端交互的JavaScript 腳本庫(kù),提高了腳本代理函數(shù)的重用性。 下面以J2EE環(huán)境為例,對(duì)本發(fā)明實(shí)施例所提供的方法進(jìn)行詳細(xì)的說(shuō)明。 通過(guò)前面的描述,可以知道,本發(fā)明實(shí)施例主要涉及到三個(gè)主體,包括注冊(cè)庫(kù)、瀏
覽器端以及服務(wù)器端。 其中,注冊(cè)庫(kù)位于服務(wù)器中,主要負(fù)責(zé)所有需要被瀏覽器端調(diào)用的服務(wù)器端類(lèi)的 管理,為每個(gè)被注冊(cè)的服務(wù)器端的類(lèi)生成一個(gè)類(lèi)注冊(cè)標(biāo)識(shí)以及對(duì)應(yīng)的JavaScript腳本代 理函數(shù)。 類(lèi)注冊(cè)過(guò)程由需要調(diào)用服務(wù)器端代碼的瀏覽器端的Web界面的服務(wù)器端代碼主 動(dòng)發(fā)起,例如需要注冊(cè)的業(yè)務(wù)類(lèi)為MyBiz,則在瀏覽器端的JSP文件中包含的注冊(cè)代碼如 下 〈%= R印ository. register (MyBiz. class, 〃 $〃 )%> 其中"$"是被注冊(cè)類(lèi)的命名空間,上述注冊(cè)代碼的含義為MyBiz類(lèi)注冊(cè)到名稱(chēng)為 $的空間中去。當(dāng)類(lèi)注冊(cè)完成以后,恥b頁(yè)面可以通過(guò)S.method(...)調(diào)用服務(wù)器端該類(lèi)的 方法method。 Web頁(yè)面如果需要調(diào)用服務(wù)器端某個(gè)類(lèi)所定義的方法,首先需要向服務(wù)器端發(fā)送 類(lèi)注冊(cè)請(qǐng)求,實(shí)際應(yīng)用中,Web頁(yè)面發(fā)送該類(lèi)注冊(cè)請(qǐng)求的方式,可以是在該Web頁(yè)面的服務(wù)器端的執(zhí)行代碼中調(diào)用Web-RPC注冊(cè)庫(kù)的注冊(cè)方法,例如上述JSP文件中包含在〈% % > 之間的代碼,在該代碼中包含服務(wù)器端類(lèi)及希望在瀏覽器調(diào)用時(shí)使用的命名空間。
服務(wù)器端執(zhí)行上述代碼,相當(dāng)于向注冊(cè)庫(kù)發(fā)起了類(lèi)注冊(cè)流程。
注冊(cè)庫(kù)分析服務(wù)器端類(lèi)的方法聲明,為該類(lèi)生成代理JavaScript腳本,然后返回 一個(gè)包含有標(biāo)識(shí)被注冊(cè)類(lèi)的類(lèi)注冊(cè)標(biāo)識(shí)的字符串;最后,在Web頁(yè)面的輸出中嵌入該字符 串。參見(jiàn)圖3,以注冊(cè)服務(wù)器端MyBiz類(lèi)為例描述上述注冊(cè)過(guò)程 S301,注冊(cè)庫(kù)判斷MyBiz. Class是否已經(jīng)注冊(cè),如果否,進(jìn)入步驟S302,否則進(jìn)入 S30X ; S302,分析MyBiz. Class的方法聲明; S303,生成MyBiz. Class的JavaScript腳本代理函數(shù); S304,生成MyBiz. Class的類(lèi)注冊(cè)標(biāo)識(shí); S305,緩存MyBiz. Class的JavaScript腳本代理函數(shù)和類(lèi)注冊(cè)標(biāo)識(shí)。 通過(guò)S303 S305,為MyBiz. Class生成了類(lèi)注冊(cè)標(biāo)識(shí)和JavaScript腳本代理函
數(shù),并將類(lèi)注冊(cè)標(biāo)識(shí)和JavaScript腳本代理函數(shù)對(duì)應(yīng)起來(lái)。 S306,將MyBiz. Class的JavaScript腳本代理函數(shù)寫(xiě)到Web頁(yè)面的內(nèi)容中。
以JSP為例,注冊(cè)完成以后,在JSP頁(yè)面的輸出中添加的內(nèi)容如下
〈script src = 〃 /invoke.jsp a38fel36-bfbb_4e8f-943d-fd3c2fa2fdc9, $" X/script> 其中,"a38fel36-bfbb-4e8f-943d-fd3c2fa2fdc9"是MyBiz. Class的類(lèi)注冊(cè)標(biāo) 識(shí),這樣,相當(dāng)于將JavaScript腳本代理函數(shù)的引用關(guān)系返回給了 Web頁(yè)面,當(dāng)Web頁(yè)面需 要加載該JavaScript腳本代理函數(shù)時(shí),可以根據(jù)該引用關(guān)系獲取并加載即可。
參見(jiàn)圖4, MyBiz. Class類(lèi)注冊(cè)完成以后,瀏覽器如果要訪(fǎng)問(wèn)MyBiz. Class類(lèi)在服 務(wù)器端定義的方法,例如,服務(wù)器端類(lèi)MyBiz. Class定義了方法add (inta, int b)實(shí)現(xiàn)對(duì) "a+b"進(jìn)行求和運(yùn)算,并且注冊(cè)時(shí)使用"$"作為其命名空間,那么瀏覽器端調(diào)用服務(wù)器端的 add(a, b)方法計(jì)算"1+1"的具體過(guò)程包括 S401,瀏覽器端的JavaScript腳本代理函數(shù)發(fā)出函數(shù)調(diào)用請(qǐng)求,該函數(shù)調(diào)用請(qǐng)求 具體為var r = $ add(l, 1)。 該函數(shù)調(diào)用請(qǐng)求的意思是,請(qǐng)求調(diào)用命名空間為$的空間中的add方法,其中,兩 個(gè)參數(shù)分別為l,l,并要求將調(diào)用結(jié)果返回給變量r。 S402,服務(wù)器端對(duì)JavaScript腳本代理函數(shù)發(fā)送的函數(shù)調(diào)用請(qǐng)求進(jìn)行解碼,確定 該代理函數(shù)對(duì)應(yīng)的類(lèi)注冊(cè)標(biāo)識(shí)為a38fel36-bfbb-4e8f-943d-fd3c2fa2fdc9,獲取本次調(diào)用 的方法名以及本次調(diào)用使用的參數(shù)。 S403,所述服務(wù)器端在注冊(cè)庫(kù)中檢索,確定與a38fel36-bfbb-4e8f-943d-fd3c2fa 2fdc9對(duì)應(yīng)的類(lèi)為MyBiz. Class,并根據(jù)方法名add獲得該方法的方法聲明,并根據(jù)方法聲 明進(jìn)行參數(shù)類(lèi)型轉(zhuǎn)換。 S404,利用轉(zhuǎn)換后的參數(shù)進(jìn)行調(diào)用,并將結(jié)果返回給瀏覽器端。
S405 , r被賦值為結(jié)果2 。 本發(fā)明實(shí)施例所提供的方法,利用注冊(cè)庫(kù)對(duì)服務(wù)器端的類(lèi)進(jìn)行管理,為MyBiz. Class類(lèi)生成一個(gè)類(lèi)注冊(cè)標(biāo)識(shí)a38fel36-bfbb-4e8f-943d-fd3c2fa2fdc9和與之對(duì)應(yīng)的JavaScript腳本代理函數(shù),通過(guò)將JavaScript腳本代理函數(shù)加載到瀏覽器的頁(yè)面建立瀏
覽器端對(duì)服務(wù)器端調(diào)用的基礎(chǔ),使得瀏覽器端的頁(yè)面通過(guò)JavaScript腳本代理函數(shù),可以
實(shí)現(xiàn)對(duì)服務(wù)器端的MyBiz. Class類(lèi)定義的add的方法進(jìn)行調(diào)用,這種調(diào)用無(wú)需配置文件,而
且只要某個(gè)類(lèi)已經(jīng)注冊(cè),那么該類(lèi)所定義的方法在瀏覽器端的頁(yè)面中都可以調(diào)用,而且這
種調(diào)用方法在一次業(yè)務(wù)處理過(guò)程中進(jìn)行多次遠(yuǎn)程調(diào)用無(wú)需處理多次調(diào)用之間所需的復(fù)雜
協(xié)調(diào),簡(jiǎn)化了現(xiàn)有技術(shù)中瀏覽器端與服務(wù)器端多次交互時(shí)復(fù)雜的業(yè)務(wù)過(guò)程的開(kāi)發(fā)。 參見(jiàn)圖5,本發(fā)明實(shí)施例還提供一種遠(yuǎn)程過(guò)程調(diào)用裝置,該裝置位于服務(wù)器端,包
括 第一接收單元501,用于接收瀏覽器端的頁(yè)面的JavaScript腳本代理函數(shù)發(fā)送的 函數(shù)調(diào)用請(qǐng)求,所述函數(shù)調(diào)用請(qǐng)求中包括次調(diào)用的類(lèi)的類(lèi)注冊(cè)標(biāo)識(shí)、方法名以及本次調(diào)用 使用的參數(shù); 獲取單元502,用于對(duì)所述函數(shù)調(diào)用請(qǐng)求進(jìn)行解碼,確定所述JavaScript腳本代
理函數(shù)對(duì)應(yīng)的類(lèi)注冊(cè)標(biāo)識(shí),并獲取本次調(diào)用的方法名以及本次調(diào)用使用的參數(shù); 處理單元503,用于從注冊(cè)庫(kù)中檢索與所述類(lèi)注冊(cè)標(biāo)識(shí)和方法名對(duì)應(yīng)的實(shí)體類(lèi)和
相應(yīng)的方法聲明,并根據(jù)所述方法聲明對(duì)本次調(diào)用使用的參數(shù)進(jìn)行類(lèi)型轉(zhuǎn)換; 第一發(fā)送單元504,用于創(chuàng)建服務(wù)器端對(duì)象并執(zhí)行調(diào)用,獲得調(diào)用結(jié)果,并將所述
調(diào)用結(jié)果返回給瀏覽器端。 為了能夠順利實(shí)現(xiàn)瀏覽器端對(duì)某個(gè)類(lèi)所定義的方法的調(diào)用,服務(wù)器端需要首先在 注冊(cè)庫(kù)中對(duì)該類(lèi)進(jìn)行注冊(cè),所以,本發(fā)明實(shí)施例所提供的裝置還包括 第二接收單元505,用于接收瀏覽器端的頁(yè)面發(fā)送的類(lèi)注冊(cè)請(qǐng)求,所述類(lèi)注冊(cè)請(qǐng)求 中包括服務(wù)器端類(lèi)在服務(wù)器端的類(lèi)名以及希望在瀏覽器調(diào)用所述服務(wù)器端類(lèi)時(shí)使用的命 名空間; 第二發(fā)送單元506,用于向注冊(cè)庫(kù)發(fā)送類(lèi)注冊(cè)請(qǐng)求,請(qǐng)求所述注冊(cè)庫(kù)根據(jù)所述類(lèi)注 冊(cè)請(qǐng)求中攜帶的信息進(jìn)行類(lèi)注冊(cè)。 參見(jiàn)圖6,本發(fā)明實(shí)施例提供的用于遠(yuǎn)程過(guò)程調(diào)用的注冊(cè)庫(kù)包括
接收單元601,用于接收服務(wù)器端發(fā)送的類(lèi)注冊(cè)請(qǐng)求,所述類(lèi)注冊(cè)請(qǐng)求由瀏覽器端 的頁(yè)面發(fā)送至所述服務(wù)器端,其中包括服務(wù)器端類(lèi)在服務(wù)器端的類(lèi)名以及希望在瀏覽器調(diào) 用所述服務(wù)器端類(lèi)時(shí)使用的命名空間; 處理單元602,用于根據(jù)所述服務(wù)器端類(lèi)在服務(wù)器端的類(lèi)名查找到與所述服務(wù)器 端類(lèi)對(duì)應(yīng)的實(shí)體類(lèi),分析所述實(shí)體類(lèi)中的方法聲明; 生成單元603,用于為所述實(shí)體類(lèi)生成一個(gè)類(lèi)注冊(cè)標(biāo)識(shí)和與所述類(lèi)注冊(cè)標(biāo)識(shí)對(duì)應(yīng) 的JavaScript腳本代理函數(shù); 在本發(fā)明的一種實(shí)施例中,所述類(lèi)注冊(cè)標(biāo)識(shí)由所述注冊(cè)庫(kù)隨機(jī)生成,當(dāng)服務(wù)器重 新啟動(dòng)時(shí),注冊(cè)庫(kù)可以為每個(gè)注冊(cè)的類(lèi)生成新的類(lèi)注冊(cè)標(biāo)識(shí)。 在本發(fā)明的另一種實(shí)施例中,在注冊(cè)庫(kù)生成類(lèi)標(biāo)識(shí)后,可以將該類(lèi)標(biāo)識(shí)進(jìn)行保存, 例如保存在數(shù)據(jù)庫(kù)中,這樣,當(dāng)服務(wù)器重新啟動(dòng)時(shí),注冊(cè)庫(kù)就不需要重新生成類(lèi)注冊(cè)標(biāo)識(shí) 了,只需要根據(jù)類(lèi)名或者其他的類(lèi)標(biāo)識(shí)信息從數(shù)據(jù)庫(kù)中讀取即可。 發(fā)送單元604,用于將所述JavaScript腳本代理函數(shù)返回給所述瀏覽器端的頁(yè) 面。
在本發(fā)明一實(shí)施例中,所述發(fā)送單元604將所述JavaScript腳本代理函數(shù)返回給 所述瀏覽器端的頁(yè)面具體為 所述發(fā)送單元將所述JavaScript腳本代理函數(shù)的引用寫(xiě)到所述瀏覽器端所請(qǐng)求 的頁(yè)面內(nèi)容中。 本發(fā)明實(shí)施例所提供的裝置,利用注冊(cè)庫(kù)對(duì)服務(wù)器端的類(lèi)進(jìn)行管理,為某個(gè)被注 冊(cè)的類(lèi)生成一個(gè)類(lèi)注冊(cè)標(biāo)識(shí)和與之對(duì)應(yīng)的JavaScript腳本代理函數(shù),通過(guò)將JavaScript 腳本代理函數(shù)加載到瀏覽器的頁(yè)面建立瀏覽器端對(duì)服務(wù)器端的調(diào)用的基礎(chǔ),使得瀏覽器端 的頁(yè)面通過(guò)JavaScript腳本代理函數(shù),可以實(shí)現(xiàn)對(duì)服務(wù)器端的類(lèi)定義的方法進(jìn)行調(diào)用,這 種調(diào)用無(wú)需配置文件,而且只要某個(gè)類(lèi)已經(jīng)注冊(cè),那么該類(lèi)所定義的方法在瀏覽器端的頁(yè) 面中都可以調(diào)用,而且這種調(diào)用裝置在一次業(yè)務(wù)處理過(guò)程中進(jìn)行多次遠(yuǎn)程調(diào)用無(wú)需處理多 次調(diào)用之間所需的復(fù)雜協(xié)調(diào),簡(jiǎn)化了現(xiàn)有技術(shù)中瀏覽器端與服務(wù)器端多次交互時(shí)復(fù)雜的業(yè) 務(wù)過(guò)程的開(kāi)發(fā)。 本發(fā)明可以在由計(jì)算機(jī)執(zhí)行的計(jì)算機(jī)可執(zhí)行指令的一般上下文中描述,例如程序 模塊。 一般地,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類(lèi)型的例程、程序、對(duì)象、組 件、數(shù)據(jù)結(jié)構(gòu)等等。也可以在分布式計(jì)算環(huán)境中實(shí)踐本發(fā)明,在這些分布式計(jì)算環(huán)境中,由 通過(guò)通信網(wǎng)絡(luò)而被連接的遠(yuǎn)程處理設(shè)備來(lái)執(zhí)行任務(wù)。在分布式計(jì)算環(huán)境中,程序模塊可以 位于包括存儲(chǔ)設(shè)備在內(nèi)的本地和遠(yuǎn)程計(jì)算機(jī)存儲(chǔ)介質(zhì)中。 以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人 員來(lái)說(shuō),在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也應(yīng) 視為本發(fā)明的保護(hù)范圍。
權(quán)利要求
一種遠(yuǎn)程過(guò)程調(diào)用方法,其特征在于,包括服務(wù)器端接收瀏覽器端的頁(yè)面的JavaScript腳本代理函數(shù)發(fā)送的函數(shù)調(diào)用請(qǐng)求,所述函數(shù)調(diào)用請(qǐng)求中包括本次調(diào)用的類(lèi)的類(lèi)注冊(cè)標(biāo)識(shí),方法名以及本次調(diào)用使用的參數(shù);所述服務(wù)器端對(duì)所述函數(shù)調(diào)用請(qǐng)求進(jìn)行解碼,確定所述JavaScript腳本代理函數(shù)對(duì)應(yīng)的類(lèi)注冊(cè)標(biāo)識(shí),并,獲取本次調(diào)用的方法名以及本次調(diào)用使用的參數(shù);所述服務(wù)器端從注冊(cè)庫(kù)中檢索與所述類(lèi)注冊(cè)標(biāo)識(shí)和方法名對(duì)應(yīng)的實(shí)體類(lèi)和相應(yīng)的方法聲明,并根據(jù)所述方法聲明對(duì)本次調(diào)用使用的參數(shù)進(jìn)行類(lèi)型轉(zhuǎn)換;所述服務(wù)器端創(chuàng)建服務(wù)器端對(duì)象并執(zhí)行調(diào)用,獲得調(diào)用結(jié)果,并將所述調(diào)用結(jié)果返回給瀏覽器端。
2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述JavaScript腳本代理函數(shù)由所述注 冊(cè)庫(kù)根據(jù)所述服務(wù)器端的類(lèi)注冊(cè)請(qǐng)求對(duì)服務(wù)器端類(lèi)進(jìn)行注冊(cè)后返回給瀏覽器端。
3. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述注冊(cè)庫(kù)根據(jù)所述服務(wù)器端的類(lèi)注冊(cè) 請(qǐng)求對(duì)服務(wù)器端類(lèi)進(jìn)行注冊(cè)包括服務(wù)器端向注冊(cè)庫(kù)發(fā)送類(lèi)注冊(cè)請(qǐng)求,請(qǐng)求所述注冊(cè)庫(kù)根據(jù)所述類(lèi)注冊(cè)請(qǐng)求中攜帶的信 息進(jìn)行類(lèi)注冊(cè),所述類(lèi)注冊(cè)請(qǐng)求由瀏覽器端所請(qǐng)求的頁(yè)面的服務(wù)器端代碼發(fā)送至注冊(cè)庫(kù), 其中包括所述服務(wù)器端類(lèi)在服務(wù)器端的類(lèi)名以及希望在瀏覽器調(diào)用所述服務(wù)器端類(lèi)時(shí)使 用的命名空間;注冊(cè)庫(kù)根據(jù)所述服務(wù)器端類(lèi)在服務(wù)器端的類(lèi)名查找到與所述服務(wù)器端類(lèi)對(duì)應(yīng)的實(shí)體 類(lèi),并分析所述實(shí)體類(lèi)中的方法聲明,為所述實(shí)體類(lèi)生成一個(gè)類(lèi)注冊(cè)標(biāo)識(shí)和與所述類(lèi)注冊(cè) 標(biāo)識(shí)對(duì)應(yīng)的JavaScript腳本代理函數(shù);所述注冊(cè)庫(kù)將所述JavaScript腳本代理函數(shù)返回給所述瀏覽器端的頁(yè)面。
4. 根據(jù)權(quán)利要求3所述的方法,其特征在于,還包括所述瀏覽器端的頁(yè)面將所述JavaScript腳本代理函數(shù)加載到當(dāng)前頁(yè)面中。
5. 根據(jù)權(quán)利要求3或4所述的方法,其特征在于,所述注冊(cè)庫(kù)將所述JavaScript腳本 代理函數(shù)返回給所述瀏覽器端的頁(yè)面具體為所述注冊(cè)庫(kù)將所述JavaScript腳本代理函數(shù)的引用寫(xiě)到所述瀏覽器端所請(qǐng)求的頁(yè)面 內(nèi)容中。
6. 根據(jù)權(quán)利要求1 4任意一項(xiàng)所述的方法,其特征在于,所述類(lèi)注冊(cè)標(biāo)識(shí)由所述注冊(cè) 庫(kù)隨機(jī)生成,當(dāng)服務(wù)器重新啟動(dòng)時(shí),為每個(gè)注冊(cè)的類(lèi)生成新的類(lèi)注冊(cè)標(biāo)識(shí)。
7. —種遠(yuǎn)程過(guò)程調(diào)用裝置,其特征在于,該裝置位于服務(wù)器端,包括 第一接收單元,用于接收瀏覽器端的頁(yè)面的JavaScript腳本代理函數(shù)發(fā)送的函數(shù)調(diào)用請(qǐng)求,所述函數(shù)調(diào)用請(qǐng)求中包括本次調(diào)用的類(lèi)的類(lèi)注冊(cè)標(biāo)識(shí)、方法名以及本次調(diào)用使用 的參數(shù);獲取單元,用于對(duì)所述函數(shù)調(diào)用請(qǐng)求進(jìn)行解碼,確定所述JavaScript腳本代理函數(shù)對(duì) 應(yīng)的類(lèi)注冊(cè)標(biāo)識(shí),并,獲取本次調(diào)用的方法名以及本次調(diào)用使用的參數(shù);處理單元,用于從注冊(cè)庫(kù)中檢索與所述類(lèi)注冊(cè)標(biāo)識(shí)和方法名對(duì)應(yīng)的實(shí)體類(lèi)和相應(yīng)的方 法聲明,并根據(jù)所述方法聲明對(duì)本次調(diào)用使用的參數(shù)進(jìn)行類(lèi)型轉(zhuǎn)換;第一發(fā)送單元,用于創(chuàng)建服務(wù)器端對(duì)象并執(zhí)行調(diào)用,獲得調(diào)用結(jié)果,并將所述調(diào)用結(jié)果 返回給瀏覽器端。
8. 根據(jù)權(quán)利要求7所述的裝置,其特征在于,還包括第二發(fā)送單元,用于向注冊(cè)庫(kù)發(fā)送類(lèi)注冊(cè)請(qǐng)求,請(qǐng)求所述注冊(cè)庫(kù)根據(jù)所述類(lèi)注冊(cè)請(qǐng)求 中攜帶的信息進(jìn)行類(lèi)注冊(cè),所述類(lèi)注冊(cè)請(qǐng)求由瀏覽器端所請(qǐng)求的頁(yè)面的服務(wù)器端代碼發(fā)送 至注冊(cè)庫(kù),其中包括所述服務(wù)器端類(lèi)在服務(wù)器端的類(lèi)名以及希望在瀏覽器調(diào)用所述服務(wù)器 端類(lèi)時(shí)使用的命名空間。
9. 一種用于遠(yuǎn)程過(guò)程調(diào)用的注冊(cè)庫(kù),其特征在于,包括接收單元,用于接收服務(wù)器端發(fā)送的類(lèi)注冊(cè)請(qǐng)求,所述類(lèi)注冊(cè)請(qǐng)求由瀏覽器端所請(qǐng)求 的頁(yè)面的服務(wù)器端代碼發(fā)送至注冊(cè)庫(kù),其中包括服務(wù)器端類(lèi)在服務(wù)器端的類(lèi)名以及希望在 瀏覽器調(diào)用所述服務(wù)器端類(lèi)時(shí)使用的命名空間;處理單元,用于根據(jù)所述服務(wù)器端類(lèi)在服務(wù)器端的類(lèi)名查找到與所述服務(wù)器端類(lèi)對(duì)應(yīng) 的實(shí)體類(lèi),分析所述實(shí)體類(lèi)中的方法聲明;生成單元,用于為所述實(shí)體類(lèi)生成一個(gè)類(lèi)注冊(cè)標(biāo)識(shí)和與所述類(lèi)注冊(cè)標(biāo)識(shí)對(duì)應(yīng)的 JavaScript腳本代理函數(shù);發(fā)送單元,用于將所述JavaScript腳本代理函數(shù)返回給所述瀏覽器端的頁(yè)面。
10. 根據(jù)權(quán)利要求9所述的注冊(cè)庫(kù),其特征在于,所述發(fā)送單元將所述JavaScript腳本 代理函數(shù)返回給所述瀏覽器端的頁(yè)面具體為所述發(fā)送單元將所述JavaScript腳本代理函數(shù)的引用寫(xiě)到所述瀏覽器端所請(qǐng)求的頁(yè) 面內(nèi)容中。
11. 根據(jù)權(quán)利要求9或10任意一項(xiàng)所述的注冊(cè)庫(kù),其特征在于,所述注冊(cè)標(biāo)識(shí)由所述生 成單元隨機(jī)生成,當(dāng)服務(wù)器重新啟動(dòng)時(shí),為每個(gè)注冊(cè)的類(lèi)生成新的類(lèi)注冊(cè)標(biāo)識(shí)。
全文摘要
本發(fā)明實(shí)施例公開(kāi)了一種遠(yuǎn)程過(guò)程調(diào)用的方法、裝置和注冊(cè)庫(kù),本發(fā)明實(shí)施例所提供的方案利用注冊(cè)庫(kù)對(duì)服務(wù)器端的類(lèi)進(jìn)行管理,為某個(gè)被注冊(cè)的類(lèi)生成一個(gè)類(lèi)注冊(cè)標(biāo)識(shí)和與之對(duì)應(yīng)的JavaScript腳本代理函數(shù),通過(guò)將JavaScript腳本代理函數(shù)加載到瀏覽器的頁(yè)面建立瀏覽器端對(duì)服務(wù)器端的調(diào)用的基礎(chǔ),使得瀏覽器端的頁(yè)面通過(guò)JavaScript腳本代理函數(shù),可以實(shí)現(xiàn)對(duì)服務(wù)器端的類(lèi)定義的方法進(jìn)行調(diào)用,這種調(diào)用無(wú)需配置文件,而且只要某個(gè)類(lèi)已經(jīng)注冊(cè),那么該類(lèi)所定義的方法在瀏覽器端的頁(yè)面中都可以調(diào)用,而且這種調(diào)用方法,在一次業(yè)務(wù)處理過(guò)程中進(jìn)行多次遠(yuǎn)程調(diào)用無(wú)需處理多次調(diào)用之間所需的復(fù)雜協(xié)調(diào),簡(jiǎn)化了現(xiàn)有技術(shù)中瀏覽器端與服務(wù)器端多次交互時(shí)復(fù)雜的業(yè)務(wù)過(guò)程的開(kāi)發(fā)。
文檔編號(hào)G06F9/46GK101697139SQ20091021114
公開(kāi)日2010年4月21日 申請(qǐng)日期2009年11月6日 優(yōu)先權(quán)日2009年11月6日
發(fā)明者禹希初 申請(qǐng)人:金蝶軟件(中國(guó))有限公司;