應(yīng)的數(shù)據(jù)庫。該數(shù)據(jù)庫既可以存儲于ROMll等存儲器,也可以與響應(yīng)的高速緩存同樣地存儲于其他存儲器裝置。
[0060]圖5以及圖6是示出用于生成替換命令的數(shù)據(jù)庫的一個例子的圖。圖5示出用于生成與參數(shù)的變更對應(yīng)的替換命令的數(shù)據(jù)庫的一個例子。圖6示出用于生成協(xié)議不同的情況下的替換命令的數(shù)據(jù)庫的一個例子。詳細而言,參照圖5,針對中繼裝置100,預(yù)先規(guī)定了:參數(shù)從假響應(yīng)所包含的參數(shù)變化的實際響應(yīng)(命令)、和在該請求以后的請求中將參數(shù)置換為實際響應(yīng)所包含的參數(shù)的請求。例如,在圖5的例子中規(guī)定了:在作為命令“GetDefault”的實際響應(yīng)所包含的參數(shù)從對應(yīng)的假響應(yīng)所包含的參數(shù)變化的情況下,在作為命令“Startjob”或者“Sendjob”的請求中,將參數(shù)置換為實際響應(yīng)的參數(shù)而發(fā)送到服務(wù)器500。優(yōu)選為,如圖5所示,針對每個協(xié)議規(guī)定了置換參數(shù)的請求。
[0061]另外,參照圖6,針對中繼裝置100,在來自服務(wù)器500的實際響應(yīng)的協(xié)議與假響應(yīng)的協(xié)議不同的情況、即服務(wù)器500的通信協(xié)議和MFP300的通信協(xié)議不同的情況下,針對每個命令,預(yù)先規(guī)定有這些協(xié)議的對應(yīng)。例如,在圖6的例子中,在一方的協(xié)議是API(應(yīng)用編程接口)協(xié)議的版本1.0,另一方是TCP(傳輸控制協(xié)議)的版本1.0的情況下,規(guī)定了將API的命令“ScanSetting”置換為命令“ScanSet”而生成替換命令。進而,在圖6的數(shù)據(jù)庫中,也可以針對同一協(xié)議,還規(guī)定與不同的版本有關(guān)的命令的對應(yīng)。
[0062]優(yōu)選為,圖5、圖6的數(shù)據(jù)庫存儲于中繼裝置100的存儲器?;蛘撸谕獠垦b置中與中繼裝置100關(guān)聯(lián)起來存儲了這些數(shù)據(jù)庫。然后,中繼裝置100能夠在與其他中繼裝置之間交換這些數(shù)據(jù)庫。即,優(yōu)選為,中繼裝置100從其他中繼裝置或者與其他中繼裝置關(guān)聯(lián)的外部裝置取得數(shù)據(jù)庫,并對在自身的存儲器中存儲的數(shù)據(jù)庫進行更新。
[0063]在圖4的例子中,在上述步驟S28中,中繼裝置100參照圖5的數(shù)據(jù)庫。然后,由于用命令“GetDefault”變更了參數(shù),所以中繼裝置100生成例如將命令“StartJob (jpg) ”的參數(shù)jpg置換為參數(shù)HF的替換命令“StartJob (PDF) ”,并存儲于存儲器。之后,中繼裝置100如果從MFP300接受到請求“Req_GetDefault”,則在上述步驟S30中判斷為有替換命令“StartJob (PDF) ”,所以在步驟S31中,將該替換命令發(fā)送到服務(wù)器500。
[0064]另外,即使在來自服務(wù)器500的實際響應(yīng)的協(xié)議與假響應(yīng)的協(xié)議不同的情況、即服務(wù)器500的通信協(xié)議和MFP300的通信協(xié)議不同的情況下,本系統(tǒng)也與圖4同樣地動作。即,如果比較假響應(yīng)和實際響應(yīng)而判斷為有協(xié)議的差異,則中繼裝置100參照圖6的數(shù)據(jù)庫來生成變換了協(xié)議的替換命令。然后,中繼裝置100替換來自MFP300的請求而發(fā)送到服務(wù)器 500。
[0065]通過在本系統(tǒng)中進行以上的動作,即使假響應(yīng)和實際響應(yīng)的參數(shù)不同、或者協(xié)議、其版本不同,其差異也被中繼裝置100吸收。于是,實現(xiàn)服務(wù)器500與MFP300之間的順暢且迅速的通信。因此,MFP300的用戶能夠迅速地進行面板操作。
[0066]<功能結(jié)構(gòu)>
[0067]圖7是示出用于進行上述動作的中繼裝置100的功能結(jié)構(gòu)的一個例子的框圖。關(guān)于圖7的各功能,通過由中繼裝置100的CPUlO將在ROMll中存儲的程序讀出到RAM12上并執(zhí)行,由此主要由CPUlO實現(xiàn)。但是,至少一部分功能也可以通過圖2所示或者電氣電路(未圖示)等其他硬件來實現(xiàn)。
[0068]參照圖7,ROMll包括數(shù)據(jù)庫(DB)存儲部111,該數(shù)據(jù)庫(DB)存儲部111是用于將在圖5、圖6中示出的用于生成替換命令的數(shù)據(jù)庫進行存儲的存儲區(qū)域。
[0069]進而,參照圖7,在CPUlO中,作為對MFP300與服務(wù)器500之間的通信進行中繼的功能,包括請求輸入部101、請求輸出部102、響應(yīng)輸入部103、以及響應(yīng)輸出部104。
[0070]請求輸入部101經(jīng)由第一通信控制器14從MFP300接受發(fā)往服務(wù)器500的請求的輸入。請求輸出部102經(jīng)由第二通信控制器15將來自MFP300的請求輸出到服務(wù)器500。響應(yīng)輸入部103經(jīng)由第二通信控制器15,從服務(wù)器500接受發(fā)往MFP300的響應(yīng)的輸入。響應(yīng)輸出部104經(jīng)由第一通信控制器14將來自服務(wù)器500的響應(yīng)輸出到MFP300。
[0071]進而,CPUlO包括高速緩存積蓄部105、高速緩存讀出部106、以及發(fā)送部107。
[0072]高速緩存積蓄部105將來自服務(wù)器500的響應(yīng)與請求關(guān)聯(lián)起來而高速緩存到存儲器裝置100A中。高速緩存讀出部106根據(jù)從MFP300接受到的請求,從存儲器裝置100A讀出關(guān)聯(lián)的響應(yīng)。發(fā)送部107將從存儲器裝置100A讀出的響應(yīng)作為假響應(yīng),經(jīng)由第一通信控制器14發(fā)送到MFP300。
[0073]優(yōu)選為,CPUlO還包括判斷部108、第一生成部109、以及第二生成部110。
[0074]判斷部108通過比較假響應(yīng)和實際響應(yīng),判斷它們是否一致。如果在判斷部108中判斷為它們不一致,則第一生成部109為了將與實際響應(yīng)對應(yīng)的響應(yīng)作為針對以后的來自MFP300的請求的響應(yīng)而發(fā)送到MFP300,生成包括與實際響應(yīng)對應(yīng)的參數(shù)的響應(yīng),即生成將從存儲器裝置100A讀出的響應(yīng)所包含的參數(shù)置換為實際響應(yīng)的參數(shù)的響應(yīng)。在假響應(yīng)和實際響應(yīng)的參數(shù)不同、或者協(xié)議、其版本不同等屬性不同的情況下,第二生成部110為了替換來自MFP300的以后的請求,參照在DB存儲部111中存儲的數(shù)據(jù)庫,變換該請求的屬性而生成替換命令。
[0075]優(yōu)選為,第二生成部110在實際響應(yīng)的參數(shù)與假響應(yīng)的參數(shù)不同的情況下,通過參照圖5的數(shù)據(jù)庫將來自MFP300的以后的請求所包含的參數(shù)置換為與和實際響應(yīng)的參數(shù)的關(guān)系對應(yīng)的參數(shù),從而生成替換命令。另外,優(yōu)選為,第二生成部110在實際響應(yīng)的協(xié)議與假響應(yīng)的協(xié)議不同的情況下,通過參照圖6的數(shù)據(jù)庫,根據(jù)實際響應(yīng)的協(xié)議與假響應(yīng)的協(xié)議的關(guān)系,置換來自MFP300的以后的請求,從而生成替換命令。
[0076]優(yōu)選為,CPUlO還包括DB積蓄部112,該DB積蓄部112用于從其他裝置取得與其他中繼裝置關(guān)聯(lián)起來的圖5、圖6那樣的數(shù)據(jù)庫,并存儲到DB存儲部111。
[0077]<動作流程>
[0078]圖8以及圖9是示出中繼裝置100的動作的流程的一個例子的流程圖。通過由中繼裝置100的CPUlO將在ROMll中存儲的程序讀出到RAM12上并執(zhí)行,并發(fā)揮圖7的各功能,由此實現(xiàn)在圖8以及圖9的流程圖中示出的動作。
[0079]參照圖8,CPUlO如果從MFP300接受到發(fā)往服務(wù)器500的請求(在步驟SlOl中“是”),則讀出在存儲器裝置100A中高速緩存的、與該請求關(guān)聯(lián)起來的響應(yīng)(步驟S107、S125)。另外,在存儲器裝置100A中沒有相應(yīng)的高速緩存的情況下,與通常的中繼裝置同樣地,CPUlO分別直接轉(zhuǎn)送來自MFP300的請求和來自服務(wù)器500的響應(yīng)。
[0080]優(yōu)選為,CPUlO如果從MFP300接受到請求,則判斷在MFP300與服務(wù)器500之間的該會話中的針對以前的來自MFP300的請求的假響應(yīng)中是否有與實際響應(yīng)不一致的假響應(yīng)(步驟S103)。其結(jié)果,在沒有與實際響應(yīng)不一致的假響應(yīng)的情況(在步驟S103中“是”)、即所有假響應(yīng)與實際響應(yīng)一致的情況下,CPUlO在步驟S107中讀出高速緩存,在以后的動作中從服務(wù)器接受作為實際響應(yīng)的針對請求的響應(yīng)之前,將該響應(yīng)作為假響應(yīng)發(fā)送到MFP300 (步驟S109)。之后,CPUlO將來自MFP300的請求發(fā)送到服務(wù)器500 (步驟S111),從服務(wù)器500接受實際響應(yīng)(步驟S113)。在該實際響應(yīng)與假響應(yīng)相同的情況下(在步驟SI 15中“是”),CPUlO將實際響應(yīng)作為針對上述請求的響應(yīng)而高速緩存到存儲器裝置100A中(步驟SI 17)。
[0081]在上述步驟SI 13中接受到的實際響應(yīng)與在步驟S109中發(fā)送到MFP300的假響應(yīng)不一致的情況、且協(xié)議等屬性不同的情況下(在步驟S119中“否”),CPU10參照圖6的數(shù)據(jù)庫,根據(jù)假響應(yīng)和實際響應(yīng)的差異變換屬性而生成替換命令(步驟S121)。將所生成的替換命令臨時存儲到存儲器。然后,CPUlO返回到最初的動作,等待來自MFP300的接下來的請求。
[0082]另一方面,在該會話中有與實際響應(yīng)不一致的假響應(yīng)(在步驟S103中“否”)、且假響應(yīng)的協(xié)議等屬性與實際響應(yīng)一致的情況下(在步驟S123中“是”),CPUlO根據(jù)假響應(yīng)和實際響應(yīng)的差異,置換在存儲器中高速緩存的針對在上述步驟SlOl中接受到的請求的響應(yīng)所包含的參數(shù)(步驟S127)。CPUlO將置換了參數(shù)的響應(yīng)發(fā)送到MFP300(步驟S129)。然后,CPUlO返回到最初的動作,等待來自MFP300的接下來的請求。
[0083]在該會話中有與實際響應(yīng)不一致的假響應(yīng)(在步驟S103中“否”)、且假響應(yīng)的協(xié)議等屬性與實際響應(yīng)不一致的情況下(在步驟S123中“否”),參照圖9,CPU10確認是否在存儲器中存儲有關(guān)于在上述步驟SlOl中從MFP300接受到的請求的替換命令(步驟S131)。在上述步驟SlOl中從MFP300接受到的請求是存儲有替換命令的請求的情況下(在步驟S131中“是”),CPUlO通過將替換命令發(fā)送到服務(wù)器500(步驟S133),替換來自MFP300的請求。在未存儲有替換命令的情況下(在步驟S131中“否”),CPUlO將來自MFP300的請求發(fā)送到服務(wù)器500 (步驟S135)。
[0084]CPUlO如果從服務(wù)器500接受到實際響應(yīng)