国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      遠(yuǎn)端程序的調(diào)用裝置和調(diào)用方法

      文檔序號:7804699閱讀:234來源:國知局
      專利名稱:遠(yuǎn)端程序的調(diào)用裝置和調(diào)用方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及計算機(jī)技術(shù)領(lǐng)域,具體而言,涉及遠(yuǎn)端程序的調(diào)用裝置和調(diào)用方法。
      背景技術(shù)
      隨著計算機(jī)網(wǎng)絡(luò)的發(fā)展和普及,越來越多的計算機(jī)信息系統(tǒng)依賴網(wǎng)絡(luò)作為基本的運(yùn)行條件,大部分的系統(tǒng)都采用了廣義的C/S (Client/Server,客戶機(jī)/服務(wù)器)模型。即使被稱為B/S結(jié)構(gòu)(Browser/Server,瀏覽器/服務(wù)器)的模型,實(shí)質(zhì)上也是利用網(wǎng)頁瀏覽器(Web Browser)當(dāng)作一個通用的客戶機(jī)?;谶@種計算模型,運(yùn)行在一臺機(jī)器上的程序必然要調(diào)用運(yùn)行在另外一臺計算機(jī)上的子程序,這個過程被稱為遠(yuǎn)程調(diào)用。相比于同一臺計算機(jī)上兩個程序的相互調(diào)用,遠(yuǎn)程調(diào)用的時間開銷要大很多,往往相差在三個數(shù)量級以上,甚至更多。因此降低遠(yuǎn)程調(diào)用的時間開銷是提高這類系統(tǒng)的效率的關(guān)鍵。遠(yuǎn)程調(diào)用的時間開銷,即從調(diào)用發(fā)起開始到獲取到返回值所花費(fèi)的時間,等于被調(diào)用程序運(yùn)行所花的時間再加上數(shù)據(jù)在兩臺計算機(jī)之間傳遞所花費(fèi)的時間。一般來說程序運(yùn)行時間較難減少,數(shù)據(jù)傳輸所花費(fèi)的時間可以通過壓縮算法等手段降低實(shí)際通過網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)量來減少。但是,數(shù)據(jù)傳輸?shù)臅r間開銷中有一部分基本是固定不變,無法減少的,那就是網(wǎng)絡(luò)通訊協(xié)議所導(dǎo)致的開銷。簡單地說,為了進(jìn)行遠(yuǎn)程調(diào)用,兩個計算機(jī)需要建立“連接”,而建立連接也是需要時間的。對于一些運(yùn)行時間短,傳輸數(shù)據(jù)量的小的遠(yuǎn)程調(diào)用,建立連接所占用的時間要占整個時間花銷的較大比例。另外還具有通信時延,即數(shù)據(jù)包在通信的兩端之間往返也需要占用一定的時間,這在廣域網(wǎng)及衛(wèi)星網(wǎng)尤為明顯。對于單獨(dú)的一次遠(yuǎn)程調(diào)用來說,建立連接的時間及網(wǎng)絡(luò)時延是無法避免的。但是實(shí)際的程序中,為了完成一個相對獨(dú)立的功能,程序需要進(jìn)行多次遠(yuǎn)程調(diào)用。針對這種情況一般的處理辦法是把多次遠(yuǎn)程調(diào)用進(jìn)行合并。舉例來說明其原理,假設(shè)為了完成某項(xiàng)功能需要調(diào)用遠(yuǎn)程計算機(jī)上的A、B、C三個程序??梢粤硗饩帉懸粋€運(yùn)行在遠(yuǎn)程計算機(jī)上的程序M,在程序M中分別調(diào)用A、B、C,并將三次調(diào)用的結(jié)果一并作為程序M的返回值。當(dāng)然,程序M的參數(shù)需要是程序A、B、C的參數(shù)的并集。在客戶端,不再分別進(jìn)行三次遠(yuǎn)程調(diào)用,而是改成調(diào)用程序M,這樣就將多次遠(yuǎn)程調(diào)用減少為一次。這種方法最大的缺點(diǎn)就是成本很高。第一,需要增加一個程序M,這本身就需要增加額外的開發(fā)和維護(hù)的成本。第二,當(dāng)需求發(fā)生變化時,比如說除了 A、B、C之外,還需要調(diào)用程序D,那么就需要對程序M進(jìn)行修改,讓M也調(diào)用程序D?;蛘哂懈鼔牡那闆r,M又被其他的程序調(diào)用了,為了保證兼容性,可能就無法對M進(jìn)行修改,這種情況下又必須增加一個程序N,來實(shí)現(xiàn)對這四個程序進(jìn)行合并調(diào)用。第三,M的適用性較窄。假設(shè)有另外一個程序需要掉用程序A、B、D來實(shí)現(xiàn)其需求,
      4這種情況下M也是沒有用處的,需要另外再編寫一個程序K來實(shí)現(xiàn)對A、B、D的合并調(diào)用。 當(dāng)這種組合的可能很多時,為每種可能編寫合并調(diào)用程序的成本是不可想象的。因此在實(shí)際的系統(tǒng)中,由于成本的考慮,只能對少數(shù)的情況采用合并調(diào)用的方式進(jìn)行優(yōu)化。如前所述,目前對遠(yuǎn)程調(diào)用合并的方式就是對每個出現(xiàn)多次遠(yuǎn)程調(diào)用的場合,分表編寫一個程序來合并多次的遠(yuǎn)程調(diào)用。這種方法主要缺陷就是開發(fā)成本較高,而成本高的原因就是,每種遠(yuǎn)程調(diào)用的組合都需要一個寫專門的程序來做合并遠(yuǎn)程調(diào)用,當(dāng)軟件的需求發(fā)生變化時,就可能導(dǎo)致要修改合并調(diào)用的程序,或者是增加新的合并調(diào)用程序。因此,需要一種新的遠(yuǎn)程調(diào)用方案,實(shí)現(xiàn)應(yīng)用程序可以根據(jù)需要合并其遠(yuǎn)程調(diào)用, 而不用另外編寫遠(yuǎn)程調(diào)用合并的程序,提高遠(yuǎn)程調(diào)用的效率。

      發(fā)明內(nèi)容
      本發(fā)明要解決的技術(shù)問題在于提供一種新的遠(yuǎn)程調(diào)用方案,以實(shí)現(xiàn)應(yīng)用程序可以根據(jù)需要合并其遠(yuǎn)程調(diào)用,而不用另外編寫遠(yuǎn)程調(diào)用合并的程序,提高遠(yuǎn)程調(diào)用的效率。有鑒于此,本發(fā)明提出了一種遠(yuǎn)端程序的調(diào)用裝置,包括客戶端和服務(wù)器端,其中,所述客戶端包括注冊單元,分別對多個需要進(jìn)行調(diào)用的遠(yuǎn)端程序進(jìn)行注冊;請求生成單元,在所有需要進(jìn)行調(diào)用的遠(yuǎn)端程序完成所述注冊后,生成對應(yīng)于所有的所述遠(yuǎn)端程序的調(diào)用請求;請求發(fā)送單元,將所述請求生成單元生成的所述調(diào)用請求發(fā)送至所述服務(wù)器端;以及所述服務(wù)器端包括請求接收單元,接收來自所述客戶端的所述調(diào)用請求;解析單元,對所述請求接收單元接收到的調(diào)用請求進(jìn)行解析;執(zhí)行單元,根據(jù)所述解析單元的解析結(jié)果,調(diào)用對應(yīng)的目標(biāo)程序,并獲取對應(yīng)于每個所述目標(biāo)程序的返回結(jié)果;結(jié)果返回單元, 將所述執(zhí)行單元獲取的所有的所述返回結(jié)果返回至所述客戶端。在該技術(shù)方案中,通過對需要進(jìn)行同時調(diào)用的遠(yuǎn)端程序進(jìn)行注冊后,發(fā)送包含這些遠(yuǎn)端程序的信息的請求,服務(wù)器端可以根據(jù)該請求,對這些遠(yuǎn)端程序在同一次調(diào)用過程中進(jìn)行調(diào)用,從而大大地減少調(diào)用過程所消耗的時間。在上述技術(shù)方案中,優(yōu)選地,所述客戶端還包括詢問單元,查詢是否已得到本次調(diào)用的返回結(jié)果,若不存在,則向所述請求生成單元發(fā)送生成命令。在該技術(shù)方案中,由于需要進(jìn)行合并調(diào)用時,需要對所有需要進(jìn)行調(diào)用的遠(yuǎn)端程序進(jìn)行注冊,而為了了解到是否已經(jīng)完成了最后一個遠(yuǎn)端程序的注冊,從而進(jìn)行調(diào)用請求的發(fā)送,可以進(jìn)行推遲調(diào)用的策略,即當(dāng)發(fā)生對調(diào)用結(jié)果的查詢時,表明已經(jīng)完成注冊,已經(jīng)開始等待調(diào)用結(jié)果,則此時生成并發(fā)送調(diào)用請求。在上述技術(shù)方案中,優(yōu)選地,所述客戶端還包括標(biāo)識生成單元,為每個所述遠(yuǎn)端程序生成對應(yīng)的標(biāo)識;以及結(jié)果辨識單元,根據(jù)所述標(biāo)識生成單元生成的所述標(biāo)識,分別獲取對應(yīng)于每個所述遠(yuǎn)端程序的返回結(jié)果。在該技術(shù)方案中,每次進(jìn)行注冊后,生成一個對應(yīng)于需要進(jìn)行調(diào)用的遠(yuǎn)端程序的標(biāo)識,則在進(jìn)行合并調(diào)用完成后,對于返回的多個調(diào)用結(jié)果, 可以通過之前生成的標(biāo)識進(jìn)行辨別,準(zhǔn)確地將每個調(diào)用結(jié)果分配至對應(yīng)的程序。在上述技術(shù)方案中,優(yōu)選地,所述服務(wù)器端還包括封裝單元,將所有的所述返回結(jié)果按照預(yù)設(shè)格式封裝成數(shù)據(jù)包;以及所述結(jié)果返回單元將所述數(shù)據(jù)包返回至所述客戶端。
      5
      在上述技術(shù)方案中,優(yōu)選地,所述服務(wù)器端還包括查錯單元,檢查所述遠(yuǎn)端程序在執(zhí)行時是否出現(xiàn)錯誤;以及在出現(xiàn)錯誤時,所述封裝單元將對應(yīng)生成的異常結(jié)果與正常的結(jié)果進(jìn)行所述封裝后,由所述結(jié)果返回單元返回至所述客戶端。在該技術(shù)方案中,將出現(xiàn)的錯誤進(jìn)行記錄并返回,可以防止因?yàn)橐粋€程序的異常而影響到其它程序的執(zhí)行或因?yàn)橐粋€程序的異常而影響到已經(jīng)執(zhí)行出結(jié)果的返回,同時,也可以作為一種特殊的結(jié)果,使得在返回該結(jié)果后,用戶可以及時了解到調(diào)用的情況。根據(jù)本發(fā)明的又一方面,還提供了一種遠(yuǎn)端程序的調(diào)用方法,包括步驟202,客戶端分別對多個需要進(jìn)行調(diào)用的遠(yuǎn)端程序進(jìn)行注冊;步驟204,在所有需要進(jìn)行調(diào)用的遠(yuǎn)端程序完成所述注冊后,生成對應(yīng)于所有的所述遠(yuǎn)端程序的調(diào)用請求,并發(fā)送至服務(wù)器端; 步驟206,所述服務(wù)器端解析所述調(diào)用請求,調(diào)用對應(yīng)的目標(biāo)程序,并獲取對應(yīng)于每個所述目標(biāo)程序的返回結(jié)果;步驟208,所述服務(wù)器端將所有的所述返回結(jié)果發(fā)送至所述客戶端。在該技術(shù)方案中,通過對需要進(jìn)行同時調(diào)用的遠(yuǎn)端程序進(jìn)行注冊后,發(fā)送包含這些遠(yuǎn)端程序的信息的請求,服務(wù)器端可以根據(jù)該請求,對這些遠(yuǎn)端程序在同一次調(diào)用過程中進(jìn)行調(diào)用,從而大大地減少調(diào)用過程所消耗的時間。在上述技術(shù)方案中,優(yōu)選地,在所述步驟204中,還包括查詢是否已得到本次調(diào)用的返回結(jié)果,若不存在,則生成所述調(diào)用請求,并發(fā)送至所述服務(wù)器端。在該技術(shù)方案中, 由于需要進(jìn)行合并調(diào)用時,需要對所有需要進(jìn)行調(diào)用的遠(yuǎn)端程序進(jìn)行注冊,而為了了解到是否已經(jīng)完成了最后一個遠(yuǎn)端程序的注冊,從而進(jìn)行調(diào)用請求的發(fā)送,可以進(jìn)行推遲調(diào)用的策略,即當(dāng)發(fā)生對調(diào)用結(jié)果的查詢時,表明已經(jīng)完成注冊,已經(jīng)開始等待調(diào)用結(jié)果,則此時生成并發(fā)送調(diào)用請求。在上述技術(shù)方案中,優(yōu)選地,在所述步驟202中,還包括為每個所述遠(yuǎn)端程序生成對應(yīng)的標(biāo)識;以及在所述步驟208中,還包括由所述客戶端根據(jù)所述標(biāo)識獲取對應(yīng)于每個所述遠(yuǎn)端程序的返回結(jié)果。在該技術(shù)方案中,每次進(jìn)行注冊后,生成一個對應(yīng)于需要進(jìn)行調(diào)用的遠(yuǎn)端程序的標(biāo)識,則在進(jìn)行合并調(diào)用完成后,對于返回的多個調(diào)用結(jié)果,可以通過之前生成的標(biāo)識進(jìn)行辨別,準(zhǔn)確地將每個調(diào)用結(jié)果分配至對應(yīng)的程序。在上述技術(shù)方案中,優(yōu)選地,在所述步驟208中,還包括所述服務(wù)器端將所有的所述返回結(jié)果按照預(yù)設(shè)格式封裝成數(shù)據(jù)包后,返回至所述客戶端。在上述技術(shù)方案中,優(yōu)選地,還包括若所述遠(yuǎn)端程序在執(zhí)行時出現(xiàn)錯誤,則生成異常結(jié)果;以及將所述異常結(jié)果與正常的結(jié)果進(jìn)行所述封裝后,發(fā)送至所述客戶端。在該技術(shù)方案中,將出現(xiàn)的錯誤進(jìn)行記錄并返回,可以防止因?yàn)橐粋€程序的異常而影響到其它程序的執(zhí)行或因?yàn)橐粋€程序的異常而影響到已經(jīng)執(zhí)行出結(jié)果的返回,同時,也可以作為一種特殊的結(jié)果,使得在返回該結(jié)果后,用戶可以及時了解到調(diào)用的情況。綜上所述,通過本發(fā)明的技術(shù)方案,實(shí)現(xiàn)了在調(diào)用需求發(fā)生變化時,應(yīng)用程序可以根據(jù)需要合并其遠(yuǎn)程調(diào)用,而不用另外編寫遠(yuǎn)程調(diào)用合并的程序,只需要修改客戶端應(yīng)用程序所生成的標(biāo)識,而無需調(diào)整服務(wù)器端,可以很容易地增加或刪除需要合并的遠(yuǎn)程調(diào)用, 大大地提高了遠(yuǎn)程調(diào)用的效率,降低了開發(fā)的成本;客戶端應(yīng)用程序可以按需合并多個遠(yuǎn)程調(diào)用,降低網(wǎng)絡(luò)傳輸時間,提高軟件的響應(yīng)速度,改善用戶體驗(yàn);而且可以讓客戶端更靈活地實(shí)現(xiàn)對多個遠(yuǎn)程調(diào)用的合并,開發(fā)成本更低。


      圖1是根據(jù)本發(fā)明的實(shí)施例的遠(yuǎn)端程序的調(diào)用裝置的框圖;圖2是根據(jù)本發(fā)明的實(shí)施例的遠(yuǎn)端程序的調(diào)用方法的流程圖;圖3是根據(jù)本發(fā)明的實(shí)施例的客戶端應(yīng)用程序通過注冊單元調(diào)用后臺服務(wù)的過程的示意圖;圖4是根據(jù)本發(fā)明的實(shí)施例的推遲調(diào)用的流程圖;圖5是根據(jù)本發(fā)明的實(shí)施例的執(zhí)行單元的執(zhí)行流程圖;圖6是根據(jù)本發(fā)明的實(shí)施例的客戶端展現(xiàn)界面的過程的流程圖;圖7是根據(jù)本發(fā)明的實(shí)施例的客戶端展現(xiàn)界面過程中系統(tǒng)之間的交互過程示意圖。
      具體實(shí)施例方式為了能夠更清楚地理解本發(fā)明的上述目的、特征和優(yōu)點(diǎn),下面結(jié)合附圖和具體實(shí)施方式
      對本發(fā)明進(jìn)行進(jìn)一步的詳細(xì)描述。在下面的描述中闡述了很多具體細(xì)節(jié)以便于充分理解本發(fā)明,但是,本發(fā)明還可以采用其他不同于在此描述的其他方式來實(shí)施,因此,本發(fā)明并不限于下面公開的具體實(shí)施例的限制。圖1是根據(jù)本發(fā)明一個實(shí)施例的遠(yuǎn)端程序的調(diào)用裝置的框圖。本發(fā)明提出了一種遠(yuǎn)端程序的調(diào)用裝置100,如圖1所示,包括客戶端102和服務(wù)器端104,其中,客戶端102包括注冊單元102A,分別對多個需要進(jìn)行調(diào)用的遠(yuǎn)端程序進(jìn)行注冊;請求生成單元102B,在所有需要進(jìn)行調(diào)用的遠(yuǎn)端程序完成注冊后,生成對應(yīng)于所有的遠(yuǎn)端程序的調(diào)用請求;請求發(fā)送單元102C,將請求生成單元102B生成的調(diào)用請求發(fā)送至服務(wù)器端104 ;以及服務(wù)器端104包括請求接收單元104A,接收來自客戶端102的調(diào)用請求;解析單元104B,對請求接收單元104A接收到的調(diào)用請求進(jìn)行解析;執(zhí)行單元104C, 根據(jù)解析單元104B的解析結(jié)果,調(diào)用對應(yīng)的目標(biāo)程序,并獲取對應(yīng)于每個目標(biāo)程序的返回結(jié)果;結(jié)果返回單元104D,將執(zhí)行單元104C獲取的所有的返回結(jié)果返回至客戶端102。在該技術(shù)方案中,通過對需要進(jìn)行同時調(diào)用的遠(yuǎn)端程序進(jìn)行注冊后,發(fā)送包含這些遠(yuǎn)端程序的信息的請求,服務(wù)器端104可以根據(jù)該請求,對這些遠(yuǎn)端程序在同一次調(diào)用過程中進(jìn)行調(diào)用,從而大大地減少調(diào)用過程所消耗的時間。在上述技術(shù)方案中,客戶端102還包括詢問單元102D,查詢是否已得到本次調(diào)用的返回結(jié)果,若不存在,則向請求生成單元102B發(fā)送生成命令。在該技術(shù)方案中,由于需要進(jìn)行合并調(diào)用時,需要對所有需要進(jìn)行調(diào)用的遠(yuǎn)端程序進(jìn)行注冊,而為了了解到是否已經(jīng)完成了最后一個遠(yuǎn)端程序的注冊,從而進(jìn)行調(diào)用請求的發(fā)送,可以進(jìn)行推遲調(diào)用的策略,即當(dāng)發(fā)生對調(diào)用結(jié)果的查詢時,表明已經(jīng)完成注冊,已經(jīng)開始等待調(diào)用結(jié)果,則此時生成并發(fā)送調(diào)用請求。在上述技術(shù)方案中,客戶端102還包括標(biāo)識生成單元102E,為每個遠(yuǎn)端程序生成對應(yīng)的標(biāo)識;以及結(jié)果辨識單元102F,根據(jù)標(biāo)識生成單元102E生成的標(biāo)識,分別獲取對應(yīng)于每個遠(yuǎn)端程序的返回結(jié)果。在該技術(shù)方案中,每次進(jìn)行注冊后,生成一個對應(yīng)于需要進(jìn)行調(diào)用的遠(yuǎn)端程序的標(biāo)識,則在進(jìn)行合并調(diào)用完成后,對于返回的多個調(diào)用結(jié)果,可以通過之前生成的標(biāo)識進(jìn)行辨別,準(zhǔn)確地將每個調(diào)用結(jié)果分配至對應(yīng)的程序。在上述技術(shù)方案中,服務(wù)器端104還包括封裝單元104E,將所有的返回結(jié)果按照預(yù)設(shè)格式封裝成數(shù)據(jù)包;以及結(jié)果返回單元104D將數(shù)據(jù)包返回至客戶端102。在上述技術(shù)方案中,服務(wù)器端104還包括查錯單元104F,檢查遠(yuǎn)端程序在執(zhí)行時是否出現(xiàn)錯誤;以及在出現(xiàn)錯誤時,封裝單元104E將對應(yīng)生成的異常結(jié)果與正常的結(jié)果進(jìn)行封裝后,由結(jié)果返回單元104D返回至客戶端102。在該技術(shù)方案中,將出現(xiàn)的錯誤進(jìn)行記錄并返回,可以防止因?yàn)橐粋€程序的異常而影響到其它程序的執(zhí)行或因?yàn)橐粋€程序的異常而影響到已經(jīng)執(zhí)行出結(jié)果的返回,同時,也可以作為一種特殊的結(jié)果,使得在返回該結(jié)果后,用戶可以及時了解到調(diào)用的情況。圖2是根據(jù)本發(fā)明一個實(shí)施例的遠(yuǎn)端程序的調(diào)用方法的流程圖本發(fā)明還提供了一種遠(yuǎn)端程序的調(diào)用方法,如圖2所示,包括步驟202,客戶端分別對多個需要進(jìn)行調(diào)用的遠(yuǎn)端程序進(jìn)行注冊;步驟204,在所有需要進(jìn)行調(diào)用的遠(yuǎn)端程序完成注冊后,生成對應(yīng)于所有的遠(yuǎn)端程序的調(diào)用請求,并發(fā)送至服務(wù)器端;步驟206,服務(wù)器端解析調(diào)用請求,調(diào)用對應(yīng)的目標(biāo)程序,并獲取對應(yīng)于每個目標(biāo)程序的返回結(jié)果;步驟 208,服務(wù)器端將所有的返回結(jié)果發(fā)送至客戶端。在該技術(shù)方案中,通過對需要進(jìn)行同時調(diào)用的遠(yuǎn)端程序進(jìn)行注冊后,發(fā)送包含這些遠(yuǎn)端程序的信息的請求,服務(wù)器端可以根據(jù)該請求,對這些遠(yuǎn)端程序在同一次調(diào)用過程中進(jìn)行調(diào)用,從而大大地減少調(diào)用過程所消耗的時間。在上述技術(shù)方案中,在步驟204中,還包括查詢是否已得到本次調(diào)用的返回結(jié)果,若不存在,則生成調(diào)用請求,并發(fā)送至服務(wù)器端。在該技術(shù)方案中,由于需要進(jìn)行合并調(diào)用時,需要對所有需要進(jìn)行調(diào)用的遠(yuǎn)端程序進(jìn)行注冊,而為了了解到是否已經(jīng)完成了最后一個遠(yuǎn)端程序的注冊,從而進(jìn)行調(diào)用請求的發(fā)送,可以進(jìn)行推遲調(diào)用的策略,即當(dāng)發(fā)生對調(diào)用結(jié)果的查詢時,表明已經(jīng)完成注冊,已經(jīng)開始等待調(diào)用結(jié)果,則此時生成并發(fā)送調(diào)用請求。在上述技術(shù)方案中,在步驟202中,還包括為每個遠(yuǎn)端程序生成對應(yīng)的標(biāo)識;以及在步驟208中,還包括由客戶端根據(jù)標(biāo)識獲取對應(yīng)于每個遠(yuǎn)端程序的返回結(jié)果。在該技術(shù)方案中,每次進(jìn)行注冊后,生成一個對應(yīng)于需要進(jìn)行調(diào)用的遠(yuǎn)端程序的標(biāo)識,則在進(jìn)行合并調(diào)用完成后,對于返回的多個調(diào)用結(jié)果,可以通過之前生成的標(biāo)識進(jìn)行辨別,準(zhǔn)確地將每個調(diào)用結(jié)果分配至對應(yīng)的程序。在上述技術(shù)方案中,在步驟208中,還包括服務(wù)器端將所有的返回結(jié)果按照預(yù)設(shè)格式封裝成數(shù)據(jù)包后,返回至客戶端。在上述技術(shù)方案中,還包括若遠(yuǎn)端程序在執(zhí)行時出現(xiàn)錯誤,則生成異常結(jié)果;以及將異常結(jié)果與正常的結(jié)果進(jìn)行封裝后,發(fā)送至客戶端。在該技術(shù)方案中,將出現(xiàn)的錯誤進(jìn)行記錄并返回,可以防止因?yàn)橐粋€程序的異常而影響到其它程序的執(zhí)行或因?yàn)橐粋€程序的異常而影響到已經(jīng)執(zhí)行出結(jié)果的返回,同時,也可以作為一種特殊的結(jié)果,使得在返回該結(jié)果后,用戶可以及時了解到調(diào)用的情況。圖3是根據(jù)本發(fā)明的一個實(shí)施例的客戶端應(yīng)用程序通過注冊單元調(diào)用后臺服務(wù)的過程的示意圖。如圖3所示,遠(yuǎn)端程序的調(diào)用裝置從結(jié)構(gòu)上分成兩個部分,一個是運(yùn)行在服務(wù)器
      8端的執(zhí)行單元P(對應(yīng)于圖1中的服務(wù)器104),另一個是運(yùn)行在客戶端的注冊單元R(對應(yīng)于圖1中的客戶端102)。注冊單元R主要功能是收集客戶端程序的多個遠(yuǎn)程調(diào)用的信息, 并且通過調(diào)用執(zhí)行單元P來執(zhí)行并獲取遠(yuǎn)程調(diào)用的結(jié)果。執(zhí)行單元P的主要功能是接收并解析注冊單元R傳遞過來的遠(yuǎn)程調(diào)用信息,逐個執(zhí)行所請求的遠(yuǎn)程調(diào)用,并把結(jié)果返回給 R0這里描述了客戶端應(yīng)用程序通過注冊單元R調(diào)用后臺服務(wù)的過程??蛻舳藨?yīng)用程序App把需要執(zhí)行的遠(yuǎn)程調(diào)用請求提交給注冊單元R,然后R通過網(wǎng)絡(luò)和執(zhí)行單元P進(jìn)行通信,再由P在服務(wù)器調(diào)用App所請求的程序,Si,S2等等。以下分別介紹注冊單元R和執(zhí)行單元P的具體設(shè)計。一、注冊單元R,主要提供三項(xiàng)功能。1.注冊調(diào)用信息對一個遠(yuǎn)程程序的調(diào)用,可以用描述為一個二元組C = (S,A)。其中S表示需要調(diào)用的程序,A表示調(diào)用S所需要的參數(shù)集合。注冊單元R提供一個函數(shù)register,供客戶端應(yīng)用程序注冊調(diào)用信息,其定義如下Token register(C c)register函數(shù)接受前述二元組C為參數(shù),并返回一個令牌Token,供后續(xù)獲取調(diào)用結(jié)果使用。Register函數(shù)可以被調(diào)用多次,每次注冊一個遠(yuǎn)程調(diào)用的信息。2.提交調(diào)用請求注冊單元R提供一個commit函數(shù),把通過register函數(shù)收集的遠(yuǎn)程調(diào)用信息提交給服務(wù)器端的執(zhí)行單元P,并接受P回傳的返回值。返回值會被保存下來,供客戶端應(yīng)用程序來獲取。為了達(dá)到合并調(diào)用的效果,commit顯然必須在所有的register調(diào)用完之后執(zhí)行。 但是客戶端應(yīng)用程序?qū)egister的調(diào)用有可能會很分散,且其順序可能會調(diào)整,因此由客戶端應(yīng)用程序決定何時調(diào)用commit有時是不可行的。為了解決commit調(diào)用時機(jī)的問題,可以采用推遲調(diào)用的策略,即客戶端應(yīng)用不需要主動調(diào)用commit,而是當(dāng)其在獲取第一個調(diào)用結(jié)果時由注冊程序R來調(diào)用commit函數(shù)。 其具體調(diào)用流程如圖4所示步驟402,客戶端應(yīng)用程序調(diào)用getResult (token)獲取結(jié)果。步驟404,判斷是否是第一次調(diào)用getResult,如果是則轉(zhuǎn)至步驟406 ;如果不是, 則轉(zhuǎn)至步驟408。步驟406,調(diào)用commit并保存返回值。步驟408,根據(jù)token取到對應(yīng)的返回值。3.獲取調(diào)用結(jié)果如前所述調(diào)用commit函數(shù)后,能從服務(wù)器獲取到調(diào)用的返回值,該返回值是通過register函數(shù)所注冊的多個遠(yuǎn)程調(diào)用對應(yīng)的返回值的集合。注冊單元R提供一個 getResult函數(shù)來獲取各個遠(yuǎn)程調(diào)用的返回值。其定義如下Result getResult(Token t)其中Token即為前述的令牌。
      9
      把調(diào)用register時所得到令牌作為參數(shù)調(diào)用getReuslt即可以得到對應(yīng)的返回值。返回類型Result是對遠(yuǎn)程調(diào)用結(jié)果的一個封裝。對于有異常機(jī)制的編程語言,比如 C++或者Java,遠(yuǎn)端程序調(diào)用可能會產(chǎn)生異常,因此異常也要作為一種特殊的返回值封裝在Result類型中。以Java描述Result的定義如下
      class Result {
      public Object return Value; public Throwable exception;
      }客戶端獲取到Result之后,首先檢查Result, exception是否存在,如果存在則說明這次遠(yuǎn)程調(diào)用失敗了,在后臺捕獲到了異常,客戶端應(yīng)用程序需要進(jìn)入異常處理邏輯。若不存在,則直接獲取returnValue,執(zhí)行正常邏輯。作為一種優(yōu)化方案,也可以把getResult函數(shù)定義為(以Java語言為例):Object getResult(Token t)throws Throwable即由注冊程序R來檢查遠(yuǎn)程調(diào)用是否成功,客戶端應(yīng)用程序只需要正常獲取結(jié)果并處理可能出現(xiàn)的異常。二、執(zhí)行單元P主要功能分為三項(xiàng)。1.解析調(diào)用信息執(zhí)行單元P接受到注冊單元R提交的遠(yuǎn)程調(diào)用信息,即一系列的二元組C (S,A)。 每一個二元組都對應(yīng)著對服務(wù)器上一個程序的調(diào)用請求。執(zhí)行單元P需要解析這些二元組,確定需要調(diào)用的程序,以及對應(yīng)的參數(shù)。2.執(zhí)行調(diào)用在解析完調(diào)用信息之后,執(zhí)行單元P將逐個執(zhí)行被請求調(diào)用的程序。由于被執(zhí)行的程序有可能出現(xiàn)錯誤,比如程序拋出了異常。執(zhí)行程序P需要保證a.不會因?yàn)槠渲幸粋€程序出現(xiàn)異常,而停止執(zhí)行之后的程序;b.不會因?yàn)槠渲械囊粋€程序出現(xiàn)異常,而影響到之前已經(jīng)執(zhí)行的程序的結(jié)果。3.封裝調(diào)用結(jié)果執(zhí)行單元P需要將每個程序的執(zhí)行結(jié)果封裝起來。不論程序是正常執(zhí)行,返回了返回值,還是執(zhí)行出現(xiàn)異常,執(zhí)行單元P都需要將程序的返回值或者異常,記錄到前述的 Result數(shù)據(jù)結(jié)構(gòu)中。然后將多個程序的調(diào)用結(jié)果,打包成一個Result的集合,返回給客戶端。圖5是根據(jù)本發(fā)明一個實(shí)施例的執(zhí)行單元P的執(zhí)行流程圖。如圖5所示,執(zhí)行單元P的執(zhí)行流程如下步驟502,取出一個待處理的調(diào)用信息C(S,A)。步驟504,解析調(diào)用信息,確定要執(zhí)行的程序及參數(shù)。步驟506,執(zhí)行程序。步驟508,判斷程序是否正常執(zhí)行,如果是,則轉(zhuǎn)至步驟510 ;如果不是,則轉(zhuǎn)至步驟 514。
      步驟510,記錄返回值到調(diào)用結(jié)果。步驟512,把調(diào)用結(jié)果記錄到調(diào)用結(jié)果集。步驟514,記錄異常信息到調(diào)用結(jié)果。步驟516,判斷是否還有未處理的調(diào)用信息,如果有則轉(zhuǎn)至步驟502 ;如果沒有,則轉(zhuǎn)至步驟518。步驟518,返回調(diào)用結(jié)果集合到客戶端。下面是上述遠(yuǎn)端程序的調(diào)用裝置的應(yīng)用舉例。目前很多企業(yè)采用一些管理信息系統(tǒng)來實(shí)現(xiàn)其企業(yè)的運(yùn)行管理。由于各種企業(yè)的組織架構(gòu)、管理模式差別很大,產(chǎn)品化的管理信息系統(tǒng)一般在設(shè)計時考慮了很多不同的情況,在軟件里有設(shè)計了很多可以調(diào)整、配置的參數(shù)。這些管理軟件在企業(yè)安裝部署之后,需要一個“實(shí)施”過程。其主要的工作包括調(diào)整軟件一些參數(shù)設(shè)置,以符合企業(yè)的需要。這些軟件中一般有一個被稱為“個性化”的子系統(tǒng)來讓用戶能夠調(diào)整軟件的設(shè)置。這些調(diào)整中很重要的一項(xiàng)就是,調(diào)整軟件的界面。簡單一些的包括調(diào)整界面上的圖標(biāo),有些企業(yè)希望軟件上能顯示自己公司的標(biāo)識,因此需要替換產(chǎn)品中原有的圖標(biāo)。復(fù)雜一些的包括調(diào)整軟件界面上的一些元素,比如調(diào)整錄入項(xiàng)目的順序,隱藏一些企業(yè)不會使用的錄入項(xiàng)目。這些調(diào)整工作不會修改軟件的代碼,而是作為數(shù)據(jù)記錄下來,一般是保存在后臺的數(shù)據(jù)庫中。另外,企業(yè)對使用軟件不同的操作者要求有不同的權(quán)限控制。經(jīng)理崗位能操作的一些功能,業(yè)務(wù)員可能就不能操作。管理軟件都有“權(quán)限管理”子系統(tǒng)來為不同的操作者設(shè)置其能夠使用的功能。權(quán)限設(shè)置也會影響到界面,對于某個操作員無權(quán)使用的菜單、按鈕或者是某個子界面,在該操作員使用時不能被顯示出來。綜合上述兩個方面的情況,當(dāng)一個操作員在使用管理軟件時,管理軟件的客戶端至少需要兩類信息才能正確地展示界面,分別為界面?zhèn)€性化信息和權(quán)限信息。也意味著, 客戶端界面展示子系統(tǒng)需要分別與后臺的個性化子系統(tǒng)以及權(quán)限管理子系統(tǒng)通信,也就是需要執(zhí)行兩次遠(yuǎn)程調(diào)用。當(dāng)運(yùn)行在時延比較高的網(wǎng)絡(luò)上時,多次的遠(yuǎn)程調(diào)用會顯著地提高軟件的響應(yīng)時間,用戶會感覺程序反應(yīng)遲鈍。如果應(yīng)用本發(fā)明中提出的裝置和方法,可以把兩次的遠(yuǎn)程調(diào)用合并成一次,從而在一定程度上降低軟件的響應(yīng)時間,改善用戶的使用體驗(yàn)。圖6是根據(jù)本發(fā)明一個實(shí)施例的客戶端展現(xiàn)界面的過程的流程圖。改進(jìn)后的客戶端展現(xiàn)界面的過程基本可以分為以下幾個步驟步驟602,調(diào)用注冊單元R登記對個性化系統(tǒng)的調(diào)用請求,記錄返回的Token為 tl。步驟604,調(diào)用注冊單元R登記對權(quán)限系統(tǒng)的調(diào)用請求,記錄返回的Token為t2。步驟606,以tl為參數(shù)調(diào)用注冊單元R的getResult函數(shù),獲取界面的個性化信
      肩、ο步驟608,以t2為參數(shù)調(diào)用注冊單元R的getResult函數(shù),獲取當(dāng)前操作員的權(quán)限
      fn息ο步驟610,根據(jù)步驟606和608得到信息展現(xiàn)界面??蛻舳苏故窘缑娴倪^程,涉及到界面展示子系統(tǒng),注冊單元R,執(zhí)行單元P,個性化子系統(tǒng),權(quán)限子系統(tǒng)。在以上步驟中,系統(tǒng)之間的交互過程示意圖如圖7所示。以上結(jié)合附圖詳細(xì)說明了本發(fā)明的技術(shù)方案,綜上所述,實(shí)現(xiàn)了在調(diào)用需求發(fā)生變化時,應(yīng)用程序可以根據(jù)需要合并其遠(yuǎn)程調(diào)用,而不用另外編寫遠(yuǎn)程調(diào)用合并的程序,只需要修改客戶端應(yīng)用程序所生成的標(biāo)識,而無需調(diào)整服務(wù)器端,可以很容易地增加或刪除需要合并的遠(yuǎn)程調(diào)用,大大地提高了遠(yuǎn)程調(diào)用的效率,降低了開發(fā)的成本;客戶端應(yīng)用程序可以按需合并多個遠(yuǎn)程調(diào)用,降低網(wǎng)絡(luò)傳輸時間,提高軟件的響應(yīng)速度,改善用戶體驗(yàn);而且可以讓客戶端更靈活地實(shí)現(xiàn)對多個遠(yuǎn)程調(diào)用的合并,開發(fā)成本更低。以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,對于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
      權(quán)利要求
      1.一種遠(yuǎn)端程序的調(diào)用裝置,其特征在于,包括 客戶端和服務(wù)器端,其中,所述客戶端包括注冊單元,分別對多個需要進(jìn)行調(diào)用的遠(yuǎn)端程序進(jìn)行注冊;請求生成單元,在所有需要進(jìn)行調(diào)用的遠(yuǎn)端程序完成所述注冊后,生成對應(yīng)于所有的所述遠(yuǎn)端程序的調(diào)用請求;請求發(fā)送單元,將所述請求生成單元生成的所述調(diào)用請求發(fā)送至所述服務(wù)器端;以及所述服務(wù)器端包括請求接收單元,接收來自所述客戶端的所述調(diào)用請求; 解析單元,對所述請求接收單元接收到的調(diào)用請求進(jìn)行解析; 執(zhí)行單元,根據(jù)所述解析單元的解析結(jié)果,調(diào)用對應(yīng)的目標(biāo)程序,并獲取對應(yīng)于每個所述目標(biāo)程序的返回結(jié)果;結(jié)果返回單元,將所述執(zhí)行單元獲取的所有的所述返回結(jié)果返回至所述客戶端。
      2.根據(jù)權(quán)利要求1所述的遠(yuǎn)端程序的調(diào)用裝置,其特征在于,所述客戶端還包括 詢問單元,查詢是否已得到本次調(diào)用的返回結(jié)果,若不存在,則向所述請求生成單元發(fā)送生成命令。
      3.根據(jù)權(quán)利要求1所述的遠(yuǎn)端程序的調(diào)用裝置,其特征在于,所述客戶端還包括 標(biāo)識生成單元,為每個所述遠(yuǎn)端程序生成對應(yīng)的標(biāo)識;以及結(jié)果辨識單元,根據(jù)所述標(biāo)識生成單元生成的所述標(biāo)識,分別獲取對應(yīng)于每個所述遠(yuǎn)端程序的返回結(jié)果。
      4.根據(jù)權(quán)利要求1至3中任一項(xiàng)所述的遠(yuǎn)端程序的調(diào)用裝置,其特征在于,所述服務(wù)器端還包括封裝單元,將所有的所述返回結(jié)果按照預(yù)設(shè)格式封裝成數(shù)據(jù)包;以及所述結(jié)果返回單元將所述數(shù)據(jù)包返回至所述客戶端。
      5.根據(jù)權(quán)利要求4所述的遠(yuǎn)端程序的調(diào)用裝置,其特征在于,所述服務(wù)器端還包括 查錯單元,檢查所述遠(yuǎn)端程序在執(zhí)行時是否出現(xiàn)錯誤;以及在出現(xiàn)錯誤時,所述封裝單元將對應(yīng)生成的異常結(jié)果與正常的結(jié)果進(jìn)行所述封裝后, 由所述結(jié)果返回單元返回至所述客戶端。
      6.一種遠(yuǎn)端程序的調(diào)用方法,其特征在于,包括步驟202,客戶端分別對多個需要進(jìn)行調(diào)用的遠(yuǎn)端程序進(jìn)行注冊; 步驟204,在所有需要進(jìn)行調(diào)用的遠(yuǎn)端程序完成所述注冊后,生成對應(yīng)于所有的所述遠(yuǎn)端程序的調(diào)用請求,并發(fā)送至服務(wù)器端;步驟206,所述服務(wù)器端解析所述調(diào)用請求,調(diào)用對應(yīng)的目標(biāo)程序,并獲取對應(yīng)于每個所述目標(biāo)程序的返回結(jié)果;步驟208,所述服務(wù)器端將所有的所述返回結(jié)果發(fā)送至所述客戶端。
      7.根據(jù)權(quán)利要求6所述的遠(yuǎn)端程序的調(diào)用方法,其特征在于,在所述步驟204中,還包括查詢是否已得到本次調(diào)用的返回結(jié)果,若不存在,則生成所述調(diào)用請求,并發(fā)送至所述服務(wù)器端。
      8.根據(jù)權(quán)利要求6所述的遠(yuǎn)端程序的調(diào)用方法,其特征在于,在所述步驟202中,還包括為每個所述遠(yuǎn)端程序生成對應(yīng)的標(biāo)識;以及在所述步驟208中,還包括由所述客戶端根據(jù)所述標(biāo)識獲取對應(yīng)于每個所述遠(yuǎn)端程序的返回結(jié)果。
      9.根據(jù)權(quán)利要求6至8中任一項(xiàng)所述的遠(yuǎn)端程序的調(diào)用方法,其特征在于,在所述步驟 208中,還包括所述服務(wù)器端將所有的所述返回結(jié)果按照預(yù)設(shè)格式封裝成數(shù)據(jù)包后,返回至所述客戶端。
      10.根據(jù)權(quán)利要求9所述的遠(yuǎn)端程序的調(diào)用方法,其特征在于,還包括 若所述遠(yuǎn)端程序在執(zhí)行時出現(xiàn)錯誤,則生成異常結(jié)果;以及將所述異常結(jié)果與正常的結(jié)果進(jìn)行所述封裝后,發(fā)送至所述客戶端。
      全文摘要
      本發(fā)明提供了一種遠(yuǎn)端程序的調(diào)用裝置,包括客戶端和服務(wù)器端,其中,客戶端包括注冊單元,分別對多個需要進(jìn)行調(diào)用的遠(yuǎn)端程序進(jìn)行注冊;請求生成單元,生成對應(yīng)于所有的遠(yuǎn)端程序的調(diào)用請求;請求發(fā)送單元,將調(diào)用請求發(fā)送至服務(wù)器端;以及服務(wù)器端包括請求接收單元,接收來自客戶端的調(diào)用請求;解析單元,對調(diào)用請求進(jìn)行解析;執(zhí)行單元,調(diào)用對應(yīng)的目標(biāo)程序,并獲取對應(yīng)于每個目標(biāo)程序的返回結(jié)果;結(jié)果返回單元,將所有的返回結(jié)果返回至客戶端。相應(yīng)地,本發(fā)明還提供了一種遠(yuǎn)端程序的調(diào)用方法。通過本發(fā)明的技術(shù)方案,可以使應(yīng)用程序根據(jù)需要合并其遠(yuǎn)程調(diào)用,而不用另外編寫遠(yuǎn)程調(diào)用合并的程序,提高遠(yuǎn)程調(diào)用的效率。
      文檔編號H04L29/08GK102497453SQ20111044874
      公開日2012年6月13日 申請日期2011年12月28日 優(yōu)先權(quán)日2011年12月28日
      發(fā)明者劉劍 申請人:用友軟件股份有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
      1