專利名稱:一種服務(wù)器的實(shí)現(xiàn)方法以及服務(wù)器系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及服務(wù)器技術(shù),特別涉及服務(wù)器的實(shí)現(xiàn)方法以及服務(wù)器系統(tǒng)。
背景技術(shù):
目前,服務(wù)器功能的實(shí)現(xiàn)基本包括兩部分?jǐn)?shù)據(jù)通信功能和邏輯處理功能,在現(xiàn)有技術(shù)中,數(shù)據(jù)通信功能和邏輯處理功能集成在同一服務(wù)器模塊的服務(wù)器軟件中,當(dāng)服務(wù)器提供服務(wù)時(shí),運(yùn)行該服務(wù)器模塊的服務(wù)器軟件,從而產(chǎn)生數(shù)據(jù)通信線程和邏輯處理線程來(lái)分別實(shí)現(xiàn)數(shù)據(jù)通信功能和邏輯處理功能。其中,數(shù)據(jù)通信功能用于與客戶端建立連接、發(fā)送/接收數(shù)據(jù)等,邏輯處理功能用于進(jìn)行協(xié)議處理,其主要作用是對(duì)客戶端發(fā)來(lái)的服務(wù)請(qǐng)求進(jìn)行分析和協(xié)議處理,并構(gòu)造服務(wù)響應(yīng)返回給客戶端。
圖1為現(xiàn)有技術(shù)中服務(wù)器系統(tǒng)的組成結(jié)構(gòu)示意圖。如圖1所示,服務(wù)器中包括用于提供服務(wù)器功能的服務(wù)器模塊,該服務(wù)器模塊連接客戶端。當(dāng)服務(wù)器模塊啟動(dòng)時(shí),產(chǎn)生服務(wù)器進(jìn)程,該服務(wù)器進(jìn)程包括數(shù)據(jù)通信線程和邏輯處理線程。其中,數(shù)據(jù)通信線程與客戶端建立連接、接收客戶端的服務(wù)請(qǐng)求、發(fā)送服務(wù)響應(yīng),當(dāng)數(shù)據(jù)通信線程接收到服務(wù)請(qǐng)求時(shí),將服務(wù)請(qǐng)求轉(zhuǎn)發(fā)給邏輯處理線程;該邏輯處理線程對(duì)服務(wù)請(qǐng)求進(jìn)行協(xié)議處理并構(gòu)造服務(wù)響應(yīng),返回服務(wù)響應(yīng)給數(shù)據(jù)通信線程,該數(shù)據(jù)通信線程再把服務(wù)響應(yīng)返回給客戶端。
但是,現(xiàn)有的數(shù)據(jù)通信功能與邏輯處理功能集成在同一服務(wù)器模塊中,二者之間屬直接耦合的關(guān)系,當(dāng)數(shù)據(jù)通信功能和邏輯處理功能中任一者的代碼被修改,就可能要對(duì)另一者的代碼進(jìn)行改動(dòng),并且數(shù)據(jù)通信功能和邏輯處理功能的代碼還將作為整體一起重新編譯。此外,服務(wù)器中通常要設(shè)置多個(gè)服務(wù)器模塊,各個(gè)服務(wù)器模塊的數(shù)據(jù)通信功能幾乎相同,而各個(gè)服務(wù)器模塊的差異主要在于各自的邏輯處理功能,服務(wù)器模塊能為客戶端提供何種服務(wù)完全取決于其中的邏輯處理功能。當(dāng)服務(wù)器模塊的數(shù)據(jù)通信功能發(fā)生變化時(shí),只能對(duì)各個(gè)服務(wù)器模塊的數(shù)據(jù)通信功能代碼逐一進(jìn)行修改。所以,如果要開(kāi)發(fā)新的服務(wù)器模塊以提供新的服務(wù),不但要編寫新的邏輯處理功能代碼,而且還要開(kāi)發(fā)新的數(shù)據(jù)通信功能代碼。這里,每一服務(wù)器功能對(duì)應(yīng)自身的服務(wù)器模塊,每一服務(wù)器模塊對(duì)應(yīng)自身的服務(wù)器軟件,所謂編寫數(shù)據(jù)通信功能代碼或邏輯處理功能代碼就是指編寫服務(wù)器軟件中數(shù)據(jù)通信功能或邏輯處理功能部分的代碼。
可見(jiàn),現(xiàn)有的服務(wù)器實(shí)現(xiàn)技術(shù)中,邏輯處理功能和數(shù)據(jù)通信功能之間還未實(shí)現(xiàn)獨(dú)立,因此二者中任何一方的改變都有可能引發(fā)另一方的修改,而且任何一方的改變還需要二者一起重新編譯才能得到更新后的服務(wù)器軟件。當(dāng)在服務(wù)器中實(shí)現(xiàn)多種服務(wù)器功能即實(shí)現(xiàn)多套服務(wù)器軟件時(shí),上述問(wèn)題將變得更為突出,不僅維護(hù)多套服務(wù)器軟件的多套邏輯處理功能和數(shù)據(jù)通信功能代碼的復(fù)雜度極高,而且當(dāng)要在多套服務(wù)器軟件的基礎(chǔ)上擴(kuò)展服務(wù)時(shí),邏輯處理功能和數(shù)據(jù)通信功能代碼的開(kāi)發(fā)難度也相當(dāng)大。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的在于提供一種服務(wù)器的實(shí)現(xiàn)方法,使服務(wù)器軟件中的數(shù)據(jù)通信功能與邏輯處理模塊功能相互獨(dú)立,從而易于服務(wù)器的維護(hù)和擴(kuò)展。
本發(fā)明的另一主要目的在于提供一種服務(wù)器系統(tǒng),使服務(wù)器功能更易于維護(hù)和擴(kuò)展。
為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的本發(fā)明公開(kāi)了一種服務(wù)器的實(shí)現(xiàn)方法,在服務(wù)器中設(shè)置存儲(chǔ)單元、以及用于實(shí)現(xiàn)數(shù)據(jù)通信功能的數(shù)據(jù)通信模塊和用于實(shí)現(xiàn)邏輯處理功能的邏輯處理模塊,并在所述存儲(chǔ)單元中為該數(shù)據(jù)通信模塊和邏輯處理模塊分配共享存儲(chǔ)空間;該方法還包括數(shù)據(jù)通信模塊與各個(gè)客戶端進(jìn)行通信,將各個(gè)客戶端的通信數(shù)據(jù)存儲(chǔ)至所述共享存儲(chǔ)空間;邏輯處理模塊從所述共享存儲(chǔ)空間讀取各個(gè)客戶端的通信數(shù)據(jù),對(duì)通信數(shù)據(jù)進(jìn)行邏輯處理。
其中,所述通信數(shù)據(jù)包括通信狀態(tài)和服務(wù)請(qǐng)求;所述數(shù)據(jù)通信模塊與各個(gè)客戶端建立連接并監(jiān)控各個(gè)客戶端的連接狀態(tài),接收來(lái)自客戶端的服務(wù)請(qǐng)求并存儲(chǔ)至所述共享存儲(chǔ)空間,確定各個(gè)客戶端的通信狀態(tài)并存儲(chǔ)到所述共享存儲(chǔ)空間;所述邏輯處理模塊讀取所述共享存儲(chǔ)空間中各個(gè)客戶端的通信狀態(tài)并根據(jù)該通信狀態(tài),分配或釋放用于記錄客戶端連接狀態(tài)的資源、或者從所述共享存儲(chǔ)空間讀取各個(gè)客戶端的服務(wù)請(qǐng)求并對(duì)該服務(wù)請(qǐng)求進(jìn)行協(xié)議處理。
其中,該方法進(jìn)一步包括所述邏輯處理模塊進(jìn)行協(xié)議處理后,確定當(dāng)前協(xié)議處理狀態(tài)并存儲(chǔ)至所述共享存儲(chǔ)空間,構(gòu)造服務(wù)響應(yīng)并存儲(chǔ)至所述共享存儲(chǔ)空間;所述數(shù)據(jù)通信模塊從所述共享存儲(chǔ)空間讀取協(xié)議處理狀態(tài)并根據(jù)該協(xié)議處理狀態(tài),從該共享存儲(chǔ)空間讀取服務(wù)響應(yīng)并發(fā)送給對(duì)應(yīng)的客戶端、和/或釋放自身與對(duì)應(yīng)客戶端之間的連接。
其中,所述共享存儲(chǔ)空間劃分為發(fā)送區(qū)和接收區(qū);所述數(shù)據(jù)通信模塊在所述接收區(qū)存儲(chǔ)各個(gè)客戶端的通信狀態(tài)和服務(wù)請(qǐng)求,從所述發(fā)送區(qū)讀取協(xié)議處理狀態(tài)和服務(wù)響應(yīng);所述邏輯處理模塊在所述發(fā)送區(qū)存儲(chǔ)所述協(xié)議處理狀態(tài)和服務(wù)響應(yīng),從所述接收區(qū)讀取所述通信狀態(tài)和服務(wù)請(qǐng)求。
其中,所述發(fā)送區(qū)進(jìn)一步劃分為用于存儲(chǔ)客戶端信息的控制信息區(qū)和用于存儲(chǔ)服務(wù)響應(yīng)的數(shù)據(jù)區(qū);所述接收區(qū)進(jìn)一步劃分為用于存儲(chǔ)客戶端信息的控制信息區(qū)和用于存儲(chǔ)服務(wù)請(qǐng)求的數(shù)據(jù)區(qū);在發(fā)送區(qū)的控制信息區(qū)中,每一客戶端信息用于指示協(xié)議處理狀態(tài);在接收區(qū)的控制信息區(qū)中,每一客戶端信息用于指示通信狀態(tài)。
其中,所述數(shù)據(jù)通信模塊的處理包括A1.創(chuàng)建或打開(kāi)共享存儲(chǔ)空間,開(kāi)始實(shí)時(shí)監(jiān)控客戶端的連接狀態(tài);
A2.判斷是否終止服務(wù),如果是,則釋放自身創(chuàng)建或打開(kāi)的共享存儲(chǔ)空間,結(jié)束當(dāng)前處理;否則執(zhí)行步驟A3;A3.判斷是否有客戶端建立連接,如果有,則向自身創(chuàng)建或打開(kāi)的共享存儲(chǔ)空間中接收區(qū)的控制信息區(qū)存入客戶端信息,該客戶端信息指示的通信狀態(tài)為客戶端已建立連接,再執(zhí)行步驟A4;否則直接執(zhí)行步驟A4;A4.判斷是否有客戶端斷開(kāi)連接,如果有,則向所述接收區(qū)的控制信息區(qū)存入客戶端信息,該客戶端信息指示的通信狀態(tài)為客戶端已斷開(kāi)連接,再執(zhí)行步驟A5;否則直接執(zhí)行步驟A5;A5.判斷是否接收到客戶端的服務(wù)請(qǐng)求,如果是,則向所述接收區(qū)的控制信息區(qū)存入客戶端信息,該客戶端信息指示的通信狀態(tài)為接收到客戶端服務(wù)請(qǐng)求,再執(zhí)行步驟A6;否則直接執(zhí)行步驟A6;A6.判斷客戶端的服務(wù)響應(yīng)是否發(fā)送完畢,如果是,則向所述接收區(qū)的控制信息區(qū)存入客戶端信息,該客戶端信息指示的通信狀態(tài)為客戶端服務(wù)服務(wù)響應(yīng)已發(fā)送完畢,再執(zhí)行步驟A7;否則直接執(zhí)行步驟A7;A7.判斷自身創(chuàng)建或打開(kāi)的共享存儲(chǔ)空間中發(fā)送區(qū)的控制信息區(qū)是否為空,如果是,則返回步驟A2;否則依次讀取該發(fā)送區(qū)的控制信息區(qū)內(nèi)各個(gè)客戶端信息,按各個(gè)客戶端信息指示的協(xié)議處理狀態(tài)確定是否從該發(fā)送區(qū)的數(shù)據(jù)區(qū)讀取服務(wù)響應(yīng),并將所讀取的各個(gè)客戶端的服務(wù)響應(yīng)發(fā)給各個(gè)客戶端,再返回步驟A2;所述邏輯處理模塊的處理包括B1.創(chuàng)建或打開(kāi)共享存儲(chǔ)空間;B2.判斷是否終止服務(wù),如果是,則釋放自身創(chuàng)建或打開(kāi)的共享存儲(chǔ)空間,結(jié)束當(dāng)前處理;否則執(zhí)行步驟B3;B3.判斷自身創(chuàng)建或打開(kāi)的共享存儲(chǔ)空間中接收區(qū)的控制信息區(qū)是否為空,如果是,則返回步驟B2;否則執(zhí)行步驟B4;B4.判斷所述接收區(qū)的控制信息區(qū)的首個(gè)客戶端信息指示的通信狀態(tài)是否為客戶端已建立連接,如果是,則為該客戶端分配用于記錄客戶端連接狀態(tài)的資源,執(zhí)行步驟B8;否則執(zhí)行B5;B5.判斷所述接收區(qū)的控制信息區(qū)的首個(gè)客戶端信息指示的通信狀態(tài)是否為客戶端已斷開(kāi)連接,如果是,則釋放為該客戶端分配的用于記錄客戶端連接狀態(tài)的資源,執(zhí)行步驟B8;否則執(zhí)行B6;B6.判斷所述接收區(qū)的控制信息區(qū)的首個(gè)客戶端信息指示的通信狀態(tài)是否為接收到客戶端服務(wù)請(qǐng)求,如果是,則從該接收區(qū)的數(shù)據(jù)區(qū)讀取該客戶端的服務(wù)請(qǐng)求進(jìn)行協(xié)議處理并確定該服務(wù)請(qǐng)求的協(xié)議處理狀態(tài),在自身創(chuàng)建或打開(kāi)的共享存儲(chǔ)空間中發(fā)送區(qū)的控制信息區(qū)內(nèi)存入指示該服務(wù)請(qǐng)求協(xié)議處理狀態(tài)的客戶端信息,構(gòu)造服務(wù)響應(yīng)并存放在該發(fā)送區(qū)的數(shù)據(jù)區(qū),再執(zhí)行步驟B8;否則執(zhí)行B7;B7.判斷所述接收區(qū)的控制信息區(qū)的首個(gè)客戶端信息指示的通信狀態(tài)是否為客戶端的服務(wù)響應(yīng)已發(fā)送完畢,如果是,則執(zhí)行步驟B8;否則進(jìn)行出錯(cuò)處理,再執(zhí)行B8;B8.將所述接收區(qū)的控制信息區(qū)中的下一客戶端信息置為首個(gè)客戶端信息,返回步驟B2。
其中,所述協(xié)議處理狀態(tài)為服務(wù)請(qǐng)求有誤或有服務(wù)響應(yīng)返回給客戶端;步驟B6中,當(dāng)協(xié)議處理狀態(tài)為有服務(wù)響應(yīng)返回給客戶端時(shí),構(gòu)造服務(wù)響應(yīng);當(dāng)協(xié)議處理狀態(tài)為服務(wù)請(qǐng)求有誤時(shí),構(gòu)造指示服務(wù)請(qǐng)求有誤的服務(wù)響應(yīng)或不構(gòu)造任何服務(wù)響應(yīng),并釋放為該客戶端分配的用于記錄客戶端連接狀態(tài)的資源;步驟A7中,當(dāng)協(xié)議處理狀態(tài)為有服務(wù)響應(yīng)返回給客戶端時(shí),讀取服務(wù)響應(yīng)并發(fā)送給所述客戶端;當(dāng)協(xié)議處理狀態(tài)為服務(wù)請(qǐng)求有誤時(shí),判斷發(fā)送區(qū)的數(shù)據(jù)區(qū)存有所述客戶端的服務(wù)響應(yīng),如果是,則讀取服務(wù)響應(yīng)并發(fā)送給該客戶端,同時(shí)釋放與該客戶端的連接;否則直接釋放與該客戶端的連接。
步驟B6中,當(dāng)構(gòu)造服務(wù)響應(yīng)時(shí),如果邏輯處理模塊要返回的數(shù)據(jù)超出預(yù)設(shè)的最大數(shù)據(jù)長(zhǎng)度,則將部分要返回的數(shù)據(jù)包含在服務(wù)響應(yīng)中,并將要返回的剩余數(shù)據(jù)暫時(shí)保存;步驟B7中,當(dāng)判斷客戶端的服務(wù)響應(yīng)發(fā)送完畢時(shí),在執(zhí)行步驟B8之前進(jìn)一步包括判斷是否有暫時(shí)保存的要返回給該客戶端的剩余數(shù)據(jù),如果是,則構(gòu)造包含該剩余數(shù)據(jù)的服務(wù)響應(yīng)并存放在發(fā)送區(qū)的數(shù)據(jù)區(qū),在發(fā)送區(qū)的控制信息區(qū)存入該客戶端的客戶端信息;否則執(zhí)行步驟B8。
其中,所述客戶端信息包含客戶端標(biāo)識(shí)、用于指示協(xié)議處理狀態(tài)或通信狀態(tài)的命令字。
其中,所述客戶端信息進(jìn)一步包含數(shù)據(jù)存放地址信息,該數(shù)據(jù)存放地址用于指示該客戶端服務(wù)請(qǐng)求或服務(wù)響應(yīng)在數(shù)據(jù)區(qū)的存儲(chǔ)地址;所述讀取服務(wù)請(qǐng)求或服務(wù)響應(yīng)的方法為根據(jù)客戶端信息中數(shù)據(jù)存放地址信息確定服務(wù)請(qǐng)求或服務(wù)響應(yīng)的存儲(chǔ)地址,并按此存儲(chǔ)地址從數(shù)據(jù)區(qū)讀取服務(wù)請(qǐng)求或服務(wù)響應(yīng)。
其中,所述邏輯處理模塊或數(shù)據(jù)通信模塊創(chuàng)建或打開(kāi)共享存儲(chǔ)空間時(shí),獲取該共享存儲(chǔ)空間中發(fā)送區(qū)的數(shù)據(jù)區(qū)的首指針和接收區(qū)的數(shù)據(jù)區(qū)的首指針;所述數(shù)據(jù)存放地址信息由客戶端信息存放的首指針相對(duì)于該數(shù)據(jù)區(qū)首指針的偏移量、以及該客戶端信息的數(shù)據(jù)長(zhǎng)度構(gòu)成。
其中,所述獲取發(fā)送區(qū)的數(shù)據(jù)區(qū)的首地址和接收區(qū)的數(shù)據(jù)區(qū)的首指針為所述邏輯處理模塊或數(shù)據(jù)通信模塊啟動(dòng)時(shí),獲取自身創(chuàng)建或打開(kāi)的共享存儲(chǔ)空間的首指針、發(fā)送區(qū)大小、接收區(qū)大小、接收區(qū)的控制信息區(qū)能容納的最大客戶端信息數(shù)量、發(fā)送區(qū)的控制信息區(qū)能容納的最大客戶端信息數(shù)量,并根據(jù)所獲取的信息計(jì)算得到發(fā)送區(qū)的數(shù)據(jù)區(qū)的首指針和接收區(qū)的數(shù)據(jù)區(qū)的首指針。
其中,所述發(fā)送區(qū)和接收區(qū)的控制信息區(qū)邏輯上對(duì)應(yīng)各自的客戶端信息隊(duì)列;所述邏輯處理模塊或數(shù)據(jù)通信模塊創(chuàng)建或打開(kāi)共享存儲(chǔ)空間時(shí),獲取發(fā)送區(qū)或接收區(qū)的控制信息區(qū)的客戶端信息隊(duì)列的首指針和尾指針;所述控制信息區(qū)進(jìn)一步記錄自身對(duì)應(yīng)客戶端信息隊(duì)列的首指針和尾指針;所述首指針用于讀取該客戶端信息隊(duì)列中首個(gè)客戶端信息,所述尾指針用于在該客戶端信息隊(duì)列的最后存儲(chǔ)客戶端信息。
其中,所述獲取客戶端信息隊(duì)列的首指針和尾指針為所述邏輯處理模塊或數(shù)據(jù)通信模塊啟動(dòng)時(shí),獲取共享存儲(chǔ)空間的首指針、發(fā)送區(qū)大小、接收區(qū)大小、接收區(qū)的控制信息區(qū)能容納的最大客戶端信息數(shù)量、發(fā)送區(qū)的控制信息區(qū)能容納的最大客戶端信息數(shù)量。
其中,所述存儲(chǔ)單元為內(nèi)存,所述共享存儲(chǔ)空間為共享內(nèi)存。
本發(fā)明還公開(kāi)了一種服務(wù)器系統(tǒng),該系統(tǒng)設(shè)置于服務(wù)器中,該系統(tǒng)包括數(shù)據(jù)通信模塊,用于接收來(lái)自各客戶端的通信數(shù)據(jù)并輸出至所述存儲(chǔ)單元;邏輯處理模塊,用于從所述存儲(chǔ)單元讀取各客戶端的通信數(shù)據(jù)并進(jìn)行邏輯處理;存儲(chǔ)單元,用于接收來(lái)自所述數(shù)據(jù)通信模塊的通信數(shù)據(jù)并存儲(chǔ),輸出所述通信數(shù)據(jù)給所述邏輯處理模塊。
其中,所述邏輯處理模塊進(jìn)一步用于構(gòu)造邏輯處理的結(jié)果并輸出給所述存儲(chǔ)單元;所述數(shù)據(jù)通信模塊進(jìn)一步從所述存儲(chǔ)單元讀取所述邏輯處理結(jié)果并輸出給客戶端。
其中,所述存儲(chǔ)單元為內(nèi)存。
由上述方案可以看出,本發(fā)明的關(guān)鍵在于在服務(wù)器中獨(dú)立設(shè)置存儲(chǔ)單元、數(shù)據(jù)通信模塊和邏輯處理模塊,并在該存儲(chǔ)單元中為該數(shù)據(jù)通信模塊和邏輯處理模塊分配共享的存儲(chǔ)空間;數(shù)據(jù)通信模塊與各個(gè)客戶端進(jìn)行通信,并將各客戶端的通信數(shù)據(jù)保存至共享的存儲(chǔ)空間;邏輯處理模塊則從該共享的存儲(chǔ)空間讀取通信數(shù)據(jù)并進(jìn)行邏輯處理。
因此,本發(fā)明提供的服務(wù)器的實(shí)現(xiàn)方法以及服務(wù)器系統(tǒng),能夠?qū)⒎?wù)器中的數(shù)據(jù)通信功能和邏輯處理功能獨(dú)立開(kāi)來(lái),在實(shí)現(xiàn)或修改二者中任一者的過(guò)程中不必考慮另一者,并且數(shù)據(jù)通信功能和邏輯處理功能不必一起編譯。從而顯著降低多套服務(wù)器軟件集成于同一服務(wù)器時(shí)的開(kāi)發(fā)難度,更易于日后對(duì)各套服務(wù)器軟件進(jìn)行升級(jí)和服務(wù)擴(kuò)展。
圖1為現(xiàn)有技術(shù)中服務(wù)器系統(tǒng)的組成結(jié)構(gòu)示意圖;圖2為本發(fā)明服務(wù)器系統(tǒng)的組成結(jié)構(gòu)示意圖;圖3為本發(fā)明方法一較佳實(shí)施例中數(shù)據(jù)通信模塊側(cè)的處理流程示意圖;
圖4為本發(fā)明方法一較佳實(shí)施例中邏輯處理模塊側(cè)的處理流程示意圖。
具體實(shí)施例方式
本發(fā)明公開(kāi)了一種服務(wù)器的實(shí)現(xiàn)方法以及服務(wù)器系統(tǒng),其主要設(shè)計(jì)思想為在服務(wù)器中設(shè)置包括存儲(chǔ)單元、數(shù)據(jù)通信模塊和邏輯處理模塊的服務(wù)器系統(tǒng),并在存儲(chǔ)單元中為該數(shù)據(jù)通信模塊和邏輯處理模塊分配共享存儲(chǔ)空間。在該服務(wù)器系統(tǒng)中,由數(shù)據(jù)通信模塊負(fù)責(zé)與各個(gè)客戶端進(jìn)行通信,并將各個(gè)客戶端的通信數(shù)據(jù)存儲(chǔ)至共享存儲(chǔ)空間;而由邏輯處理模塊從共享存儲(chǔ)空間中讀取各個(gè)客戶端的通信數(shù)據(jù),對(duì)通信數(shù)據(jù)進(jìn)行邏輯處理。
由于,服務(wù)器還可能需要返回通信數(shù)據(jù)邏輯處理的結(jié)果給客戶端,所以邏輯處理模塊還可進(jìn)一步在對(duì)通信數(shù)據(jù)進(jìn)行邏輯處理后,構(gòu)造邏輯處理的結(jié)果并輸出至存儲(chǔ)單元的共享存儲(chǔ)空間中;再由數(shù)據(jù)通信模塊從存儲(chǔ)單元的共享存儲(chǔ)空間讀取邏輯處理結(jié)果并輸出給客戶端。
其中,對(duì)于服務(wù)器來(lái)說(shuō),其負(fù)責(zé)處理的客戶端的通信數(shù)據(jù)包括客戶端的通信狀態(tài)和來(lái)自客戶端的服務(wù)請(qǐng)求,其對(duì)通信數(shù)據(jù)進(jìn)行的邏輯處理包括對(duì)服務(wù)請(qǐng)求的協(xié)議處理,以及對(duì)通信狀態(tài)的解析,其構(gòu)造的邏輯處理結(jié)果則包括服務(wù)請(qǐng)求協(xié)議處理后得到的協(xié)議處理狀態(tài)以及準(zhǔn)備返回給客戶端的服務(wù)響應(yīng)。數(shù)據(jù)通信模塊與各個(gè)客戶端建立連接并監(jiān)控各個(gè)客戶端的連接狀態(tài),接收來(lái)自客戶端的服務(wù)請(qǐng)求并存儲(chǔ)至共享存儲(chǔ)空間,確定各個(gè)客戶端的通信狀態(tài)并存儲(chǔ)到共享存儲(chǔ)空間;邏輯處理模塊讀取共享存儲(chǔ)空間中各個(gè)客戶端的通信狀態(tài)并根據(jù)該通信狀態(tài),分配或釋放用于記錄客戶端連接狀態(tài)的資源、或者從所述共享存儲(chǔ)空間讀取各個(gè)客戶端的服務(wù)請(qǐng)求并對(duì)該服務(wù)請(qǐng)求進(jìn)行協(xié)議處理。當(dāng)邏輯處理模塊對(duì)服務(wù)請(qǐng)求進(jìn)行協(xié)議處理后,確定當(dāng)前協(xié)議處理狀態(tài)并存儲(chǔ)至共享存儲(chǔ)空間,構(gòu)造服務(wù)響應(yīng)并存儲(chǔ)至共享存儲(chǔ)空間;數(shù)據(jù)通信模塊再?gòu)乃龉蚕泶鎯?chǔ)空間讀取協(xié)議處理狀態(tài)并根據(jù)該協(xié)議處理狀態(tài),從該共享存儲(chǔ)空間讀取服務(wù)響應(yīng)并發(fā)送給對(duì)應(yīng)的客戶端、和/或釋放自身與對(duì)應(yīng)客戶端之間的連接。
另外,本發(fā)明的存儲(chǔ)單元可為服務(wù)器的內(nèi)存,那么存儲(chǔ)單元中的共享存儲(chǔ)空間就為在內(nèi)存中指定地址范圍的一片地址空間,該地址空間可稱為數(shù)據(jù)通信模塊和邏輯處理模塊分配的一片共享內(nèi)存。
由于數(shù)據(jù)通信模塊和邏輯處理模塊分別與共享內(nèi)存進(jìn)行通信,數(shù)據(jù)通信模塊在實(shí)現(xiàn)時(shí)不必考慮邏輯處理模塊的實(shí)現(xiàn)情況,邏輯處理模塊的改變也不會(huì)影響到數(shù)據(jù)通信模塊。因此,當(dāng)服務(wù)器實(shí)現(xiàn)有多套服務(wù)器軟件時(shí),各套服務(wù)器軟件的數(shù)據(jù)通信模塊可以是相同的,從而易于在服務(wù)器擴(kuò)展服務(wù)。
圖2為本發(fā)明中服務(wù)器系統(tǒng)的組成結(jié)構(gòu)示意圖。圖2中,服務(wù)器中包含數(shù)據(jù)通信模塊、邏輯處理模塊和共享內(nèi)存,數(shù)據(jù)通信模塊負(fù)責(zé)與客戶端進(jìn)行信息交互,共享內(nèi)存則連接數(shù)據(jù)通信模塊和邏輯處理模塊。本發(fā)明的關(guān)鍵在于共享內(nèi)存的實(shí)現(xiàn),為保證數(shù)據(jù)通信模塊和邏輯處理模塊對(duì)共享內(nèi)存操作的準(zhǔn)確性,并避免操作的沖突,可將共享內(nèi)存進(jìn)一步劃分為發(fā)送區(qū)和接收區(qū)。接收區(qū)用于從數(shù)據(jù)通信模塊接收服務(wù)請(qǐng)求和通信狀態(tài)并輸出給邏輯處理模塊,發(fā)送區(qū)用于從邏輯處理模塊接收服務(wù)響應(yīng)和協(xié)議處理狀態(tài)并輸出給數(shù)據(jù)通信模塊。另外,為進(jìn)一步保證的共享內(nèi)存操作的準(zhǔn)確性,還可進(jìn)一步將發(fā)送區(qū)和接收區(qū)分別劃分為控制信息區(qū)和數(shù)據(jù)區(qū)。其中,控制信息區(qū)用于存放協(xié)調(diào)數(shù)據(jù)通信模塊和邏輯處理模塊工作的參數(shù),即指示通信狀態(tài)或協(xié)議處理狀態(tài)的參數(shù),數(shù)據(jù)區(qū)用于緩存準(zhǔn)備發(fā)送/接收的服務(wù)請(qǐng)求或服務(wù)響應(yīng)。本發(fā)明中,所述發(fā)送區(qū)劃分為用于存儲(chǔ)客戶端信息的控制信息區(qū)和用于存儲(chǔ)服務(wù)響應(yīng)的數(shù)據(jù)區(qū),每一客戶端信息用于指示協(xié)議處理狀態(tài);所述接收區(qū)進(jìn)一步劃分為用于存儲(chǔ)客戶端信息的控制信息區(qū)和用于存儲(chǔ)服務(wù)請(qǐng)求的數(shù)據(jù)區(qū),每一客戶端信息用于指示通信狀態(tài)。在發(fā)送區(qū)的控制信息區(qū)中,接收區(qū)的控制信息區(qū)中,所述客戶端信息包含客戶端標(biāo)識(shí)、用于指示當(dāng)前通信狀態(tài)或協(xié)議處理狀態(tài)的命令字。該客戶端信息還可進(jìn)一步包含數(shù)據(jù)存放地址信息。從而根據(jù)命令字可判斷當(dāng)前客戶端的通信狀態(tài)或當(dāng)前客戶端服務(wù)請(qǐng)求的協(xié)議處理狀態(tài),根據(jù)數(shù)據(jù)存放地址信息可確定當(dāng)前等待處理的服務(wù)請(qǐng)求或準(zhǔn)備發(fā)送的服務(wù)響應(yīng)在數(shù)據(jù)區(qū)中的存儲(chǔ)地址。其中,命令字所指示的通信狀態(tài)可以為客戶端已建立連接、或客戶端已斷開(kāi)連接、或接收到客戶端的服務(wù)請(qǐng)求、或客戶端的服務(wù)響應(yīng)已發(fā)送完畢;命令字所指示的協(xié)議處理狀態(tài)可以為有服務(wù)響應(yīng)返回給客戶端、或服務(wù)請(qǐng)求有誤。
由圖2所述的服務(wù)器系統(tǒng)可見(jiàn),本發(fā)明服務(wù)器系統(tǒng)將同一服務(wù)器功能中的數(shù)據(jù)通信功能和邏輯處理功能分為兩個(gè)獨(dú)立的數(shù)據(jù)通信模塊和邏輯處理模塊來(lái)實(shí)現(xiàn),該兩個(gè)模塊的代碼可分別單獨(dú)編譯,因此在服務(wù)器軟件運(yùn)行時(shí),數(shù)據(jù)通信模塊和邏輯處理模塊分別對(duì)應(yīng)數(shù)據(jù)通信進(jìn)程和邏輯處理進(jìn)程來(lái)進(jìn)行各自的處理,使數(shù)據(jù)通信功能和邏輯處理功能獨(dú)立開(kāi)來(lái),本發(fā)明可以說(shuō)是一種數(shù)據(jù)通信功能和邏輯處理功能相互獨(dú)立的服務(wù)器實(shí)現(xiàn)方法及服務(wù)器系統(tǒng)。而現(xiàn)有的服務(wù)器系統(tǒng)將同一服務(wù)器功能中的數(shù)據(jù)通信功能和邏輯處理功能集成在同一服務(wù)器模塊中實(shí)現(xiàn),數(shù)據(jù)通信功能和邏輯處理功能的代碼作為一個(gè)整體的服務(wù)器模塊代碼一起進(jìn)行編譯,因此在服務(wù)器軟件運(yùn)行時(shí),服務(wù)器模塊對(duì)應(yīng)服務(wù)器進(jìn)程來(lái)實(shí)現(xiàn)數(shù)據(jù)通信功能和邏輯處理功能,使數(shù)據(jù)通信功能和邏輯處理功能的實(shí)現(xiàn)緊密耦合、相互依賴。
本發(fā)明方法包括數(shù)據(jù)通信模塊側(cè)的處理和邏輯處理模塊側(cè)的處理,其中,共享內(nèi)存是一片地址連續(xù)的存儲(chǔ)空間;接收區(qū)為從共享內(nèi)存的起始地址開(kāi)始的一片地址連續(xù)的存儲(chǔ)空間,發(fā)送區(qū)為緊鄰接收區(qū)之后的一片地址連續(xù)的存儲(chǔ)空間;在接收區(qū)或發(fā)送區(qū)內(nèi)部,控制信息區(qū)為從接收區(qū)或發(fā)送區(qū)起始地址開(kāi)始的一片地址連續(xù)的存儲(chǔ)空間,數(shù)據(jù)區(qū)則為緊鄰控制信息區(qū)的一片地址連續(xù)的存儲(chǔ)空間?;谠摴蚕韮?nèi)存實(shí)現(xiàn)機(jī)制,本方法一較佳實(shí)施例也就包括數(shù)據(jù)通信模塊側(cè)和邏輯處理模塊側(cè)兩部分處理,并分別如圖3和圖4所示。
圖3為本發(fā)明一較佳實(shí)施例中數(shù)據(jù)通信模塊側(cè)的處理流程示意圖。如圖3所示,數(shù)據(jù)通信模塊開(kāi)始工作時(shí),生成數(shù)據(jù)通信進(jìn)程,該數(shù)據(jù)通信進(jìn)程的具體處理包括步驟301讀取配置文件,獲得當(dāng)前共享內(nèi)存的屬性信息,包括共享內(nèi)存大小、接收區(qū)大小、接收區(qū)中控制信息區(qū)能容納的最大客戶端信息數(shù)量、發(fā)送區(qū)的大小、發(fā)送區(qū)的控制信息區(qū)能容納的最大客戶端信息數(shù)量等。
步驟302判斷是否已創(chuàng)建了當(dāng)前數(shù)據(jù)通信模塊的共享內(nèi)存,如果是,則獲取該共享內(nèi)存的首指針;否則創(chuàng)建當(dāng)前數(shù)據(jù)通信模塊的共享內(nèi)存并獲取該共享內(nèi)存的首指針,并將共享內(nèi)存中的全部?jī)?nèi)容清零。
步驟303創(chuàng)建與客戶端之間的網(wǎng)絡(luò)通信接口,并開(kāi)始持續(xù)監(jiān)聽(tīng)與客戶端之間的網(wǎng)絡(luò)連接狀態(tài)。這里,所述網(wǎng)絡(luò)通信接口通常指套接字(SOCKET)。
步驟304判斷是否終止服務(wù),如果是,則執(zhí)行步驟315;否則執(zhí)行步驟305。
步驟305判斷是否有客戶端連接,如果是,則執(zhí)行步驟306;否則執(zhí)行步驟307。
步驟306與客戶端建立連接,并向接收區(qū)的控制信息區(qū)存入一個(gè)客戶端信息。這里,客戶端信息中,命令字指示的通信狀態(tài)為客戶端已建立連接,因?yàn)闆](méi)有服務(wù)請(qǐng)求到達(dá)所以數(shù)據(jù)存放地址信息被置為無(wú)效值。
由于,步驟301獲取到了接收區(qū)大小、接收區(qū)中控制信息區(qū)能容納的最大客戶端信息數(shù)量、發(fā)送區(qū)的大小、發(fā)送區(qū)的控制信息區(qū)能容納的最大客戶端信息數(shù)量等共享內(nèi)存屬性信息,而控制信息區(qū)內(nèi)每一客戶端信息占用的字節(jié)數(shù)相同。因此,根據(jù)共享內(nèi)存的首指針和該共享內(nèi)存屬性信息可計(jì)算得到發(fā)送區(qū)/接收區(qū)的控制信息區(qū)的客戶端信息隊(duì)列的首指針和尾指針,從而能利用該隊(duì)列首指針準(zhǔn)確定位并讀取各個(gè)控制信息區(qū)的首個(gè)客戶端信息,并能使用該隊(duì)列尾指針向各個(gè)控制信息區(qū)存入客戶端信息。
其中,每一控制信息區(qū)存儲(chǔ)的客戶端信息均對(duì)應(yīng)一個(gè)邏輯上的客戶端信息隊(duì)列,該隊(duì)列為一種先進(jìn)先出的數(shù)據(jù)結(jié)構(gòu),發(fā)送區(qū)/接收區(qū)的控制信息區(qū)分別通過(guò)該隊(duì)列的首指針和尾指針進(jìn)行計(jì)算來(lái)存取客戶端信息。這里,客戶端信息隊(duì)列的首指針和尾指針?lè)从车氖强蛻舳诵畔⒌倪壿嫶鎯?chǔ)位置,客戶端信息隊(duì)列的首指針用于讀取該客戶端信息隊(duì)列中首個(gè)客戶端信息,所述尾指針用于在該客戶端信息隊(duì)列的最后存儲(chǔ)客戶端信息。該客戶端信息隊(duì)列的首指針和尾指針的初始值可為零,然后,該首指針每讀取一個(gè)客戶端信息,該首指針即加一,則其所指的客戶端信息為該客戶端信息隊(duì)列中的下一客戶端信息;該尾指針每存入一個(gè)客戶端信息,該尾指針也加一,則其所指的客戶端信息為當(dāng)前客戶端信息隊(duì)列中的最后一個(gè)客戶端信息。關(guān)于客戶端信息隊(duì)列、及其首指針和尾指針的具體實(shí)現(xiàn)細(xì)節(jié),屬公知技術(shù),因此本文不再進(jìn)一步詳述。
此外,發(fā)送區(qū)/接收區(qū)的數(shù)據(jù)區(qū)也分別具有指針用于讀取自身存儲(chǔ)的服務(wù)響應(yīng)或服務(wù)請(qǐng)求。當(dāng)數(shù)據(jù)通信進(jìn)程或邏輯處理進(jìn)程啟動(dòng)時(shí),數(shù)據(jù)通信模塊或邏輯處理模塊要首先獲得發(fā)送區(qū)/接收區(qū)的控制信息區(qū)的首指針、客戶端信息的隊(duì)列首指針和尾指針、以及發(fā)送區(qū)/接收區(qū)的數(shù)據(jù)區(qū)的首指針,以準(zhǔn)確定位各個(gè)控制信息區(qū)的首個(gè)客戶端信息和各個(gè)數(shù)據(jù)區(qū)的首地址。
步驟307判斷是否有客戶端斷開(kāi)連接,如果是,則執(zhí)行步驟308;否則執(zhí)行步驟309。
步驟308向接收區(qū)的控制信息區(qū)存入一個(gè)客戶端信息,其中,命令字指示的通信狀態(tài)為該客戶端已斷開(kāi)連接,因?yàn)闆](méi)有服務(wù)請(qǐng)求到達(dá)所以數(shù)據(jù)存放地址信息也被置為無(wú)效值。
步驟309判斷是否接收到客戶端的服務(wù)請(qǐng)求,如果是,則執(zhí)行步驟310;否則執(zhí)行步驟311。
步驟310向接收區(qū)的控制信息區(qū)存入一個(gè)客戶端信息,并在接收區(qū)的數(shù)據(jù)區(qū)存放當(dāng)前到來(lái)的服務(wù)請(qǐng)求,其中,命令字指示的通信狀態(tài)為接收到客戶端的服務(wù)請(qǐng)求,數(shù)據(jù)存放地址信息指示當(dāng)前服務(wù)請(qǐng)求的存放地址。
步驟311判斷是否客戶端的服務(wù)響應(yīng)發(fā)送完畢,如果是,則執(zhí)行步驟312;否則執(zhí)行步驟313。
步驟312向接收區(qū)的控制信息區(qū)存入一個(gè)客戶端信息,其中,命令字指示的通信狀態(tài)為客戶端的服務(wù)響應(yīng)發(fā)送完畢,因?yàn)闆](méi)有服務(wù)請(qǐng)求到達(dá)所以數(shù)據(jù)存放地址信息被置為無(wú)效值。
這里,如果多個(gè)客戶端的服務(wù)響應(yīng)發(fā)送結(jié)束、或有多個(gè)客戶端發(fā)來(lái)服務(wù)請(qǐng)求,則針對(duì)每一客戶端都要存入一個(gè)客戶端信息。
步驟313判斷發(fā)送區(qū)的控制信息區(qū)是否為空,如果是,則返回步驟304;否則執(zhí)行步驟314。
步驟314獲取當(dāng)前發(fā)送區(qū)控制信息區(qū)的客戶端信息隊(duì)列的首指針,該隊(duì)列首指針通過(guò)依次指向隊(duì)列中的下一客戶端信息來(lái)依次讀取發(fā)送區(qū)的控制信息區(qū)中各個(gè)客戶端信息當(dāng)發(fā)送區(qū)控制信息區(qū)的客戶端信息中,命令字指示的協(xié)議處理狀態(tài)為有服務(wù)響應(yīng)返回給客戶端時(shí),根據(jù)該客戶端信息中的數(shù)據(jù)存放地址信息確定服務(wù)響應(yīng)在發(fā)送區(qū)的數(shù)據(jù)區(qū)中的存儲(chǔ)地址,并按此地址讀取服務(wù)響應(yīng),再按客戶端標(biāo)識(shí)將該服務(wù)響應(yīng)返回給對(duì)應(yīng)的客戶端。當(dāng)發(fā)送區(qū)控制信息區(qū)的客戶端信息中命令字指示的協(xié)議處理狀態(tài)為服務(wù)請(qǐng)求有誤時(shí),如該客戶端信息中的數(shù)據(jù)存放地址信息為無(wú)效值,則說(shuō)明當(dāng)前沒(méi)有服務(wù)響應(yīng)返回,數(shù)據(jù)通信進(jìn)程直接按客戶端標(biāo)識(shí)斷開(kāi)與該客戶端之間的連接并回收連接資源;如該客戶端信息中的數(shù)據(jù)存放地址信息為有效值,則說(shuō)明當(dāng)前有服務(wù)響應(yīng)返回,此時(shí)根據(jù)該客戶端信息中的數(shù)據(jù)存放地址信息確定服務(wù)響應(yīng)在發(fā)送區(qū)的數(shù)據(jù)區(qū)中的存儲(chǔ)地址,并按此地址讀取服務(wù)響應(yīng),再按客戶端標(biāo)識(shí)將該服務(wù)響應(yīng)返回給對(duì)應(yīng)的客戶端,該服務(wù)響應(yīng)通常指示客戶端服務(wù)請(qǐng)求有誤等,當(dāng)服務(wù)響應(yīng)發(fā)送完畢后再斷開(kāi)與該客戶端之間的連接并回收連接資源。當(dāng)對(duì)發(fā)送區(qū)的控制信息區(qū)內(nèi)的各個(gè)客戶端信息處理完成后,返回步驟304。
步驟315釋放當(dāng)前數(shù)據(jù)通信模塊對(duì)應(yīng)的共享內(nèi)存。所述創(chuàng)建、或打開(kāi)、或釋放共享內(nèi)存的方法屬公知技術(shù),通常通過(guò)創(chuàng)建、或打開(kāi)、或釋放該共享內(nèi)存對(duì)應(yīng)的文件映射對(duì)象來(lái)實(shí)現(xiàn),本文對(duì)此不作進(jìn)一步詳述。
圖4為本發(fā)明方法一較佳實(shí)施例中邏輯處理模塊側(cè)的處理流程示意圖。如圖4所示,邏輯處理模塊開(kāi)始工作時(shí),生成邏輯處理進(jìn)程,該邏輯處理進(jìn)程的具體處理包括步驟401讀取配置文件,獲得當(dāng)前共享內(nèi)存的狀態(tài)信息,包括共享內(nèi)存大小、接收區(qū)大小、接收區(qū)中控制信息區(qū)能容納的最大客戶端信息數(shù)量、發(fā)送區(qū)的大小、發(fā)送區(qū)的控制信息區(qū)能容納的最大客戶端信息數(shù)量等。
步驟402判斷是否已創(chuàng)建了當(dāng)前邏輯處理模塊的共享內(nèi)存,如果是,則獲取該共享內(nèi)存的起始指針,即獲取共享內(nèi)存的起始地址;否則創(chuàng)建當(dāng)前邏輯處理模塊的共享內(nèi)存并獲取該共享內(nèi)存的起始地址,并將共享內(nèi)存中的全部?jī)?nèi)容清零。
步驟403判斷是否終止服務(wù),如果是,則執(zhí)行步驟413;否則執(zhí)行步驟404。
步驟404判斷接收區(qū)的控制信息區(qū)是否為空,如果是,則返回步驟403;否則執(zhí)行步驟405。
步驟405判斷接收區(qū)控制信息區(qū)首個(gè)客戶端信息的命令字是否指示客戶端已建立連接,如果是,則執(zhí)行步驟406;否則執(zhí)行步驟407。
步驟406為新客戶端分配用于記錄該客戶端連接狀態(tài)的資源,并進(jìn)行初始化操作,執(zhí)行步驟412。
這里,當(dāng)數(shù)據(jù)通信模塊與某一客戶端建立連接后,邏輯處理模塊需要分配資源來(lái)記錄該客戶端的連接狀態(tài);而當(dāng)該客戶端與數(shù)據(jù)通信模塊斷開(kāi)連接時(shí),邏輯處理模塊還要釋放該用于記錄該客戶端連接狀態(tài)的資源。
步驟407判斷接收區(qū)控制信息區(qū)首個(gè)客戶端信息的命令字是否指示客戶端已斷開(kāi)連接,如果是,則執(zhí)行步驟408;否則執(zhí)行步驟409。
步驟408釋放為該客戶端分配的用于記錄該客戶端連接狀態(tài)的資源,執(zhí)行步驟412。
步驟409判斷接收區(qū)控制信息區(qū)首個(gè)客戶端信息的命令字是否指示接收到客戶端的服務(wù)請(qǐng)求,如果是,則執(zhí)行步驟410;否則執(zhí)行步驟411。
步驟410根據(jù)該客戶端信息中的數(shù)據(jù)存放地址信息確定該客戶端發(fā)來(lái)的服務(wù)請(qǐng)求在接收區(qū)的數(shù)據(jù)區(qū)的存儲(chǔ)地址,并按此地址讀取服務(wù)請(qǐng)求并進(jìn)行分析和處理。
其中,如果該服務(wù)請(qǐng)求有誤,則在發(fā)送區(qū)的控制信息區(qū)存入該客戶端信息,其中的命令字指示服務(wù)請(qǐng)求有誤,邏輯處理進(jìn)程釋放用于記錄該客戶端連接狀態(tài)的資源,并根據(jù)實(shí)際應(yīng)用的需要決定是否構(gòu)造指示服務(wù)請(qǐng)求有誤的服務(wù)響應(yīng)并存放至發(fā)送區(qū)的數(shù)據(jù)區(qū)中;如果該服務(wù)請(qǐng)求正確,則根據(jù)該服務(wù)請(qǐng)求的要求進(jìn)行協(xié)議處理,構(gòu)造指示處理結(jié)果的服務(wù)響應(yīng)并存放至發(fā)送區(qū)的數(shù)據(jù)區(qū),在發(fā)送區(qū)的控制信息區(qū)存入該客戶端信息,其中的命令字指示有服務(wù)響應(yīng)返回給客戶端。執(zhí)行步驟412。這里,當(dāng)在發(fā)送區(qū)的數(shù)據(jù)區(qū)內(nèi)存放服務(wù)響應(yīng)時(shí),該客戶端信息中的數(shù)據(jù)存放地址信息必然為有效值,而沒(méi)有在發(fā)送區(qū)的數(shù)據(jù)區(qū)內(nèi)存放服務(wù)響應(yīng)時(shí),該客戶端信息中的數(shù)據(jù)存放地址信息必然為無(wú)效值。
步驟411判斷接收區(qū)控制信息區(qū)首個(gè)客戶端信息的命令字是否指示客戶端的服務(wù)響應(yīng)已發(fā)送完畢,如果是,則執(zhí)行步驟412;否則說(shuō)明該客戶端信息有誤,進(jìn)行出錯(cuò)處理,再執(zhí)行步驟412。
其中,步驟410中,當(dāng)邏輯處理進(jìn)程對(duì)服務(wù)請(qǐng)求處理后,需要通過(guò)服務(wù)響應(yīng)返回較大數(shù)據(jù)量給客戶端時(shí),所要返回的數(shù)據(jù)可能超出發(fā)送區(qū)的數(shù)據(jù)區(qū)預(yù)設(shè)的每一客戶端每次發(fā)送的最大數(shù)據(jù)長(zhǎng)度。此時(shí),可首先構(gòu)造一個(gè)服務(wù)響應(yīng)將所要返回的部分?jǐn)?shù)據(jù)包含在該服務(wù)響應(yīng)中并存入發(fā)送區(qū)的數(shù)據(jù)區(qū),邏輯處理進(jìn)程將暫時(shí)保存剩余數(shù)據(jù),然后當(dāng)該服務(wù)響應(yīng)發(fā)送完畢后再構(gòu)造另一服務(wù)響應(yīng)來(lái)攜帶剩余的數(shù)據(jù)。采用此種處理機(jī)制后,步驟411中,當(dāng)判斷客戶端的服務(wù)響應(yīng)發(fā)送完畢時(shí),進(jìn)一步包括步驟412’判斷是否還有暫時(shí)保存的要返回給該客戶端的剩余數(shù)據(jù),如果有,則構(gòu)造新的服務(wù)響應(yīng),將剩余的數(shù)據(jù)包含在該新的服務(wù)響應(yīng)中,在發(fā)送區(qū)的控制信息區(qū)內(nèi)存入該客戶端信息,其中的命令字指示有服務(wù)響應(yīng)返回給客戶端;否則直接執(zhí)行步驟412。
步驟412將接收區(qū)控制信息區(qū)中的下一客戶端信息置為首個(gè)客戶端信息,返回步驟403。
步驟413釋放當(dāng)前邏輯處理模塊對(duì)應(yīng)的共享內(nèi)存。
以上實(shí)施例中,發(fā)送區(qū)或接收區(qū)的控制信息區(qū)和數(shù)據(jù)區(qū)的數(shù)據(jù)格式需要預(yù)先設(shè)定,從而數(shù)據(jù)通信進(jìn)程和邏輯處理進(jìn)程可按預(yù)定的數(shù)據(jù)格式來(lái)讀取控制信息區(qū)和數(shù)據(jù)區(qū)的信息。比如可設(shè)定控制信息區(qū)中,頭4個(gè)字節(jié)為控制信息區(qū)的客戶端信息隊(duì)列的首指針,接下來(lái)的4個(gè)字節(jié)為控制信息區(qū)的客戶端信息隊(duì)列的尾指針,從第9個(gè)字節(jié)開(kāi)始,每13個(gè)字節(jié)填充一個(gè)客戶端信息。在一個(gè)客戶端信息的13個(gè)字節(jié)中,第一個(gè)字節(jié)為命令字;第二到第五個(gè)字節(jié)為客戶端標(biāo)識(shí);第六個(gè)字節(jié)到第十三個(gè)字節(jié)為數(shù)據(jù)存放地址信息,該數(shù)據(jù)存放地址信息中,頭四個(gè)字節(jié)為服務(wù)請(qǐng)求或服務(wù)響應(yīng)存放在數(shù)據(jù)區(qū)的首地址相對(duì)于數(shù)據(jù)區(qū)首地址的偏移量,即首地址偏移量,后四個(gè)字節(jié)為所存放的服務(wù)請(qǐng)求或服務(wù)響應(yīng)的數(shù)據(jù)長(zhǎng)度。其中,由于根據(jù)所獲取的共享內(nèi)存屬性信息可計(jì)算得到發(fā)送區(qū)/接收區(qū)的數(shù)據(jù)區(qū)的首地址,因此根據(jù)所述首地址偏移量和數(shù)據(jù)區(qū)首地址可得知服務(wù)請(qǐng)求或服務(wù)響應(yīng)存放的首地址,該首地址結(jié)合數(shù)據(jù)長(zhǎng)度就可確定服務(wù)請(qǐng)求或服務(wù)響應(yīng)存放的尾地址,進(jìn)而可根據(jù)首地址和尾地址成功提取到服務(wù)請(qǐng)求或服務(wù)響應(yīng)。這里,本發(fā)明并不限定發(fā)送區(qū)或接收區(qū)的控制信息區(qū)的數(shù)據(jù)格式具體設(shè)置為何種形式。
另外,所述命令字可指示客戶端已經(jīng)建立連接、或客戶端已斷開(kāi)連接、或接收到客戶端的服務(wù)請(qǐng)求、或有服務(wù)響應(yīng)要發(fā)送給客戶端、或服務(wù)請(qǐng)求有誤、或客戶端的服務(wù)響應(yīng)已發(fā)送完畢這六種情況,因此,可采用不同的數(shù)字來(lái)分別代表這六種情況,比如數(shù)字1代表客戶端已經(jīng)建立連接,數(shù)字2代表客戶端已斷開(kāi)連接,數(shù)字3代表接收到客戶端的服務(wù)請(qǐng)求,數(shù)字4服務(wù)請(qǐng)求有誤,數(shù)字5代表有服務(wù)響應(yīng)要發(fā)送給客戶端,數(shù)字6代表客戶端的服務(wù)響應(yīng)已發(fā)送完畢。這里,本發(fā)明并不限定具體采用何種數(shù)字來(lái)代表所述六種情況。
步驟412所述將接收區(qū)控制信息區(qū)中的下一客戶端信息置為首個(gè)客戶端信息,即使接收區(qū)控制信息區(qū)的客戶端信息隊(duì)列的首指針指向下一客戶端信息。
基于上述發(fā)送區(qū)或接收區(qū)的控制信息區(qū)和數(shù)據(jù)區(qū)的數(shù)據(jù)格式,發(fā)送區(qū)的控制信息區(qū)首指針、發(fā)送區(qū)的數(shù)據(jù)區(qū)首指針、接收區(qū)的控制信息區(qū)首指針、接收區(qū)的數(shù)據(jù)區(qū)首指針之間的關(guān)系如下所示接收區(qū)的控制信息區(qū)首指針=共享內(nèi)存的首指針;接收區(qū)的數(shù)據(jù)區(qū)首指針=接收區(qū)的控制信息區(qū)首指針+每一客戶端信息占用的字節(jié)數(shù)×接收區(qū)能容納的最大客戶端信息數(shù)量+接收區(qū)的控制信息區(qū)的客戶端信息隊(duì)列首指針和尾指針占用的字節(jié)數(shù);發(fā)送區(qū)的控制信息區(qū)首指針=共享內(nèi)存的首指針+接收區(qū)大小;發(fā)送區(qū)的數(shù)據(jù)區(qū)首指針=發(fā)送區(qū)的控制信息區(qū)首指針+每一客戶端信息占用的字節(jié)數(shù)×發(fā)送區(qū)能容納的最大客戶端信息數(shù)量+發(fā)送區(qū)的控制信息區(qū)的客戶端信息隊(duì)列首指針和尾指針占用的字節(jié)數(shù)。
綜上所述,應(yīng)用本發(fā)明方法能夠?qū)?shù)據(jù)通信模塊和邏輯處理模塊獨(dú)立開(kāi)來(lái),并能保證通信的準(zhǔn)確性。由于,數(shù)據(jù)通信模塊和邏輯處理模塊并不直接耦合,而通過(guò)共享內(nèi)存來(lái)統(tǒng)一協(xié)調(diào)通信過(guò)程,因此,數(shù)據(jù)通信模塊和邏輯處理模塊中的任一方的修改都不會(huì)引發(fā)另一方的改變。而且,由于數(shù)據(jù)通信模塊的獨(dú)立,集成在同一服務(wù)器的多個(gè)服務(wù)器軟件可采用相同的數(shù)據(jù)通信模塊,并且同一套服務(wù)器軟件的數(shù)據(jù)通信模塊和邏輯處理模塊可以分別進(jìn)行編譯,從而易于在同一服務(wù)器實(shí)現(xiàn)多套服務(wù)器軟件,并且大大簡(jiǎn)化了服務(wù)擴(kuò)展、軟件升級(jí)的開(kāi)發(fā)進(jìn)程。
權(quán)利要求
1.一種服務(wù)器的實(shí)現(xiàn)方法,其特征在于,在服務(wù)器中設(shè)置存儲(chǔ)單元、以及用于實(shí)現(xiàn)數(shù)據(jù)通信功能的數(shù)據(jù)通信模塊和用于實(shí)現(xiàn)邏輯處理功能的邏輯處理模塊,并在所述存儲(chǔ)單元中為該數(shù)據(jù)通信模塊和邏輯處理模塊分配共享存儲(chǔ)空間;該方法還包括數(shù)據(jù)通信模塊與各個(gè)客戶端進(jìn)行通信,將各個(gè)客戶端的通信數(shù)據(jù)存儲(chǔ)至所述共享存儲(chǔ)空間;邏輯處理模塊從所述共享存儲(chǔ)空間讀取各個(gè)客戶端的通信數(shù)據(jù),對(duì)通信數(shù)據(jù)進(jìn)行邏輯處理。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述通信數(shù)據(jù)包括通信狀態(tài)和服務(wù)請(qǐng)求;所述數(shù)據(jù)通信模塊與各個(gè)客戶端建立連接并監(jiān)控各個(gè)客戶端的連接狀態(tài),接收來(lái)自客戶端的服務(wù)請(qǐng)求并存儲(chǔ)至所述共享存儲(chǔ)空間,確定各個(gè)客戶端的通信狀態(tài)并存儲(chǔ)到所述共享存儲(chǔ)空間;所述邏輯處理模塊讀取所述共享存儲(chǔ)空間中各個(gè)客戶端的通信狀態(tài)并根據(jù)該通信狀態(tài),分配或釋放用于記錄客戶端連接狀態(tài)的資源、或者從所述共享存儲(chǔ)空間讀取各個(gè)客戶端的服務(wù)請(qǐng)求并對(duì)該服務(wù)請(qǐng)求進(jìn)行協(xié)議處理。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,該方法進(jìn)一步包括所述邏輯處理模塊進(jìn)行協(xié)議處理后,確定當(dāng)前協(xié)議處理狀態(tài)并存儲(chǔ)至所述共享存儲(chǔ)空間,構(gòu)造服務(wù)響應(yīng)并存儲(chǔ)至所述共享存儲(chǔ)空間;所述數(shù)據(jù)通信模塊從所述共享存儲(chǔ)空間讀取協(xié)議處理狀態(tài)并根據(jù)該協(xié)議處理狀態(tài),從該共享存儲(chǔ)空間讀取服務(wù)響應(yīng)并發(fā)送給對(duì)應(yīng)的客戶端、和/或釋放自身與對(duì)應(yīng)客戶端之間的連接。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述共享存儲(chǔ)空間劃分為發(fā)送區(qū)和接收區(qū);所述數(shù)據(jù)通信模塊在所述接收區(qū)存儲(chǔ)各個(gè)客戶端的通信狀態(tài)和服務(wù)請(qǐng)求,從所述發(fā)送區(qū)讀取協(xié)議處理狀態(tài)和服務(wù)響應(yīng);所述邏輯處理模塊在所述發(fā)送區(qū)存儲(chǔ)所述協(xié)議處理狀態(tài)和服務(wù)響應(yīng),從所述接收區(qū)讀取所述通信狀態(tài)和服務(wù)請(qǐng)求。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述發(fā)送區(qū)進(jìn)一步劃分為用于存儲(chǔ)客戶端信息的控制信息區(qū)和用于存儲(chǔ)服務(wù)響應(yīng)的數(shù)據(jù)區(qū);所述接收區(qū)進(jìn)一步劃分為用于存儲(chǔ)客戶端信息的控制信息區(qū)和用于存儲(chǔ)服務(wù)請(qǐng)求的數(shù)據(jù)區(qū);在發(fā)送區(qū)的控制信息區(qū)中,每一客戶端信息用于指示協(xié)議處理狀態(tài);在接收區(qū)的控制信息區(qū)中,每一客戶端信息用于指示通信狀態(tài)。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述數(shù)據(jù)通信模塊的處理包括A1.創(chuàng)建或打開(kāi)共享存儲(chǔ)空間,開(kāi)始實(shí)時(shí)監(jiān)控客戶端的連接狀態(tài);A2.判斷是否終止服務(wù),如果是,則釋放自身創(chuàng)建或打開(kāi)的共享存儲(chǔ)空間,結(jié)束當(dāng)前處理;否則執(zhí)行步驟A3;A3.判斷是否有客戶端建立連接,如果有,則向自身創(chuàng)建或打開(kāi)的共享存儲(chǔ)空間中接收區(qū)的控制信息區(qū)存入客戶端信息,該客戶端信息指示的通信狀態(tài)為客戶端已建立連接,再執(zhí)行步驟A4;否則直接執(zhí)行步驟A4;A4.判斷是否有客戶端斷開(kāi)連接,如果有,則向所述接收區(qū)的控制信息區(qū)存入客戶端信息,該客戶端信息指示的通信狀態(tài)為客戶端已斷開(kāi)連接,再執(zhí)行步驟A5;否則直接執(zhí)行步驟A5;A5.判斷是否接收到客戶端的服務(wù)請(qǐng)求,如果是,則向所述接收區(qū)的控制信息區(qū)存入客戶端信息,該客戶端信息指示的通信狀態(tài)為接收到客戶端服務(wù)請(qǐng)求,再執(zhí)行步驟A6;否則直接執(zhí)行步驟A6;A6.判斷客戶端的服務(wù)響應(yīng)是否發(fā)送完畢,如果是,則向所述接收區(qū)的控制信息區(qū)存入客戶端信息,該客戶端信息指示的通信狀態(tài)為客戶端服務(wù)服務(wù)響應(yīng)已發(fā)送完畢,再執(zhí)行步驟A7;否則直接執(zhí)行步驟A7;A7.判斷自身創(chuàng)建或打開(kāi)的共享存儲(chǔ)空間中發(fā)送區(qū)的控制信息區(qū)是否為空,如果是,則返回步驟A2;否則依次讀取該發(fā)送區(qū)的控制信息區(qū)內(nèi)各個(gè)客戶端信息,按各個(gè)客戶端信息指示的協(xié)議處理狀態(tài)確定是否從該發(fā)送區(qū)的數(shù)據(jù)區(qū)讀取服務(wù)響應(yīng),并將所讀取的各個(gè)客戶端的服務(wù)響應(yīng)發(fā)給各個(gè)客戶端,再返回步驟A2;所述邏輯處理模塊的處理包括B1.創(chuàng)建或打開(kāi)共享存儲(chǔ)空間;B2.判斷是否終止服務(wù),如果是,則釋放自身創(chuàng)建或打開(kāi)的共享存儲(chǔ)空間,結(jié)束當(dāng)前處理;否則執(zhí)行步驟B3;B3.判斷自身創(chuàng)建或打開(kāi)的共享存儲(chǔ)空間中接收區(qū)的控制信息區(qū)是否為空,如果是,則返回步驟B2;否則執(zhí)行步驟B4;B4.判斷所述接收區(qū)的控制信息區(qū)的首個(gè)客戶端信息指示的通信狀態(tài)是否為客戶端已建立連接,如果是,則為該客戶端分配用于記錄客戶端連接狀態(tài)的資源,執(zhí)行步驟B8;否則執(zhí)行B5;B5.判斷所述接收區(qū)的控制信息區(qū)的首個(gè)客戶端信息指示的通信狀態(tài)是否為客戶端已斷開(kāi)連接,如果是,則釋放為該客戶端分配的用于記錄客戶端連接狀態(tài)的資源,執(zhí)行步驟B8;否則執(zhí)行B6;B6.判斷所述接收區(qū)的控制信息區(qū)的首個(gè)客戶端信息指示的通信狀態(tài)是否為接收到客戶端服務(wù)請(qǐng)求,如果是,則從該接收區(qū)的數(shù)據(jù)區(qū)讀取該客戶端的服務(wù)請(qǐng)求進(jìn)行協(xié)議處理并確定該服務(wù)請(qǐng)求的協(xié)議處理狀態(tài),在自身創(chuàng)建或打開(kāi)的共享存儲(chǔ)空間中發(fā)送區(qū)的控制信息區(qū)內(nèi)存入指示該服務(wù)請(qǐng)求協(xié)議處理狀態(tài)的客戶端信息,構(gòu)造服務(wù)響應(yīng)并存放在該發(fā)送區(qū)的數(shù)據(jù)區(qū),再執(zhí)行步驟B8;否則執(zhí)行B7;B7.判斷所述接收區(qū)的控制信息區(qū)的首個(gè)客戶端信息指示的通信狀態(tài)是否為客戶端的服務(wù)響應(yīng)已發(fā)送完畢,如果是,則執(zhí)行步驟B8;否則進(jìn)行出錯(cuò)處理,再執(zhí)行B8;B8.將所述接收區(qū)的控制信息區(qū)中的下一客戶端信息置為首個(gè)客戶端信息,返回步驟B2。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述協(xié)議處理狀態(tài)為服務(wù)請(qǐng)求有誤或有服務(wù)響應(yīng)返回給客戶端;步驟B6中,當(dāng)協(xié)議處理狀態(tài)為有服務(wù)響應(yīng)返回給客戶端時(shí),構(gòu)造服務(wù)響應(yīng);當(dāng)協(xié)議處理狀態(tài)為服務(wù)請(qǐng)求有誤時(shí),構(gòu)造指示服務(wù)請(qǐng)求有誤的服務(wù)響應(yīng)或不構(gòu)造任何服務(wù)響應(yīng),并釋放為該客戶端分配的用于記錄客戶端連接狀態(tài)的資源;步驟A7中,當(dāng)協(xié)議處理狀態(tài)為有服務(wù)響應(yīng)返回給客戶端時(shí),讀取服務(wù)響應(yīng)并發(fā)送給所述客戶端;當(dāng)協(xié)議處理狀態(tài)為服務(wù)請(qǐng)求有誤時(shí),判斷發(fā)送區(qū)的數(shù)據(jù)區(qū)存有所述客戶端的服務(wù)響應(yīng),如果是,則讀取服務(wù)響應(yīng)并發(fā)送給該客戶端,同時(shí)釋放與該客戶端的連接;否則直接釋放與該客戶端的連接。
8.根據(jù)權(quán)利要求6或7所述的方法,其特征在于,步驟B6中,當(dāng)構(gòu)造服務(wù)響應(yīng)時(shí),如果邏輯處理模塊要返回的數(shù)據(jù)超出預(yù)設(shè)的最大數(shù)據(jù)長(zhǎng)度,則將部分要返回的數(shù)據(jù)包含在服務(wù)響應(yīng)中,并將要返回的剩余數(shù)據(jù)暫時(shí)保存;步驟B7中,當(dāng)判斷客戶端的服務(wù)響應(yīng)發(fā)送完畢時(shí),在執(zhí)行步驟B8之前進(jìn)一步包括判斷是否有暫時(shí)保存的要返回給該客戶端的剩余數(shù)據(jù),如果是,則構(gòu)造包含該剩余數(shù)據(jù)的服務(wù)響應(yīng)并存放在發(fā)送區(qū)的數(shù)據(jù)區(qū),在發(fā)送區(qū)的控制信息區(qū)存入該客戶端的客戶端信息;否則執(zhí)行步驟B8。
9.根據(jù)權(quán)利要求5或6所述的方法,其特征在于,所述客戶端信息包含客戶端標(biāo)識(shí)、用于指示協(xié)議處理狀態(tài)或通信狀態(tài)的命令字。
10.根據(jù)權(quán)利要求9所述的方法,其特征在于,所述客戶端信息進(jìn)一步包含數(shù)據(jù)存放地址信息,該數(shù)據(jù)存放地址用于指示該客戶端服務(wù)請(qǐng)求或服務(wù)響應(yīng)在數(shù)據(jù)區(qū)的存儲(chǔ)地址;所述讀取服務(wù)請(qǐng)求或服務(wù)響應(yīng)的方法為根據(jù)客戶端信息中數(shù)據(jù)存放地址信息確定服務(wù)請(qǐng)求或服務(wù)響應(yīng)的存儲(chǔ)地址,并按此存儲(chǔ)地址從數(shù)據(jù)區(qū)讀取服務(wù)請(qǐng)求或服務(wù)響應(yīng)。
11.根據(jù)權(quán)利要求10所述的方法,其特征在于,所述邏輯處理模塊或數(shù)據(jù)通信模塊創(chuàng)建或打開(kāi)共享存儲(chǔ)空間時(shí),獲取該共享存儲(chǔ)空間中發(fā)送區(qū)的數(shù)據(jù)區(qū)的首指針和接收區(qū)的數(shù)據(jù)區(qū)的首指針;所述數(shù)據(jù)存放地址信息由客戶端信息存放的首指針相對(duì)于該數(shù)據(jù)區(qū)首指針的偏移量、以及該客戶端信息的數(shù)據(jù)長(zhǎng)度構(gòu)成。
12.根據(jù)權(quán)利要求11所述的方法,其特征在于,所述獲取發(fā)送區(qū)的數(shù)據(jù)區(qū)的首地址和接收區(qū)的數(shù)據(jù)區(qū)的首指針為所述邏輯處理模塊或數(shù)據(jù)通信模塊啟動(dòng)時(shí),獲取自身創(chuàng)建或打開(kāi)的共享存儲(chǔ)空間的首指針、發(fā)送區(qū)大小、接收區(qū)大小、接收區(qū)的控制信息區(qū)能容納的最大客戶端信息數(shù)量、發(fā)送區(qū)的控制信息區(qū)能容納的最大客戶端信息數(shù)量,并根據(jù)所獲取的信息計(jì)算得到發(fā)送區(qū)的數(shù)據(jù)區(qū)的首指針和接收區(qū)的數(shù)據(jù)區(qū)的首指針。
13.根據(jù)權(quán)利要求5或6所述的方法,其特征在于,所述發(fā)送區(qū)和接收區(qū)的控制信息區(qū)邏輯上對(duì)應(yīng)各自的客戶端信息隊(duì)列;所述邏輯處理模塊或數(shù)據(jù)通信模塊創(chuàng)建或打開(kāi)共享存儲(chǔ)空間時(shí),獲取發(fā)送區(qū)或接收區(qū)的控制信息區(qū)的客戶端信息隊(duì)列的首指針和尾指針;所述控制信息區(qū)進(jìn)一步記錄自身對(duì)應(yīng)客戶端信息隊(duì)列的首指針和尾指針;所述首指針用于讀取該客戶端信息隊(duì)列中首個(gè)客戶端信息,所述尾指針用于在該客戶端信息隊(duì)列的最后存儲(chǔ)客戶端信息。
14.根據(jù)權(quán)利要求13所述的方法,其特征在于,所述獲取客戶端信息隊(duì)列的首指針和尾指針為所述邏輯處理模塊或數(shù)據(jù)通信模塊啟動(dòng)時(shí),獲取共享存儲(chǔ)空間的首指針、發(fā)送區(qū)大小、接收區(qū)大小、接收區(qū)的控制信息區(qū)能容納的最大客戶端信息數(shù)量、發(fā)送區(qū)的控制信息區(qū)能容納的最大客戶端信息數(shù)量。
15.根據(jù)權(quán)利要求1至6任一項(xiàng)所述的方法,其特征在于,所述存儲(chǔ)單元為內(nèi)存,所述共享存儲(chǔ)空間為共享內(nèi)存。
16.一種服務(wù)器系統(tǒng),該系統(tǒng)設(shè)置于服務(wù)器中,其特征在于,該系統(tǒng)包括數(shù)據(jù)通信模塊,用于接收來(lái)自各客戶端的通信數(shù)據(jù)并輸出至所述存儲(chǔ)單元;邏輯處理模塊,用于從所述存儲(chǔ)單元讀取各客戶端的通信數(shù)據(jù)并進(jìn)行邏輯處理;存儲(chǔ)單元,用于接收來(lái)自所述數(shù)據(jù)通信模塊的通信數(shù)據(jù)并存儲(chǔ),輸出所述通信數(shù)據(jù)給所述邏輯處理模塊。
17.根據(jù)權(quán)利要求16所述的系統(tǒng),其特征在于,所述邏輯處理模塊進(jìn)一步用于構(gòu)造邏輯處理結(jié)果并輸出給所述存儲(chǔ)單元;所述數(shù)據(jù)通信模塊進(jìn)一步從所述存儲(chǔ)單元讀取所述邏輯處理結(jié)果并輸出給客戶端。
18.根據(jù)權(quán)利要求16或17所述的系統(tǒng),其特征在于,所述存儲(chǔ)單元為內(nèi)存。
全文摘要
本發(fā)明公開(kāi)了一種服務(wù)器的實(shí)現(xiàn)方法,在服務(wù)器中設(shè)置存儲(chǔ)單元、以及用于實(shí)現(xiàn)數(shù)據(jù)通信功能的數(shù)據(jù)通信模塊和用于實(shí)現(xiàn)邏輯處理功能的邏輯處理模塊,并在所述存儲(chǔ)單元中為該數(shù)據(jù)通信模塊和邏輯處理模塊分配共享存儲(chǔ)空間;該方法還包括數(shù)據(jù)通信模塊與各個(gè)客戶端進(jìn)行通信,將各個(gè)客戶端的通信數(shù)據(jù)存儲(chǔ)至所述共享存儲(chǔ)空間;邏輯處理模塊讀取所述共享存儲(chǔ)空間中各個(gè)客戶端的通信數(shù)據(jù),對(duì)通信數(shù)據(jù)進(jìn)行邏輯處理。本發(fā)明還提供了一種服務(wù)器系統(tǒng),應(yīng)用本發(fā)明能簡(jiǎn)化服務(wù)器軟件的開(kāi)發(fā)進(jìn)程。
文檔編號(hào)G06F9/50GK1928825SQ20051010270
公開(kāi)日2007年3月14日 申請(qǐng)日期2005年9月9日 優(yōu)先權(quán)日2005年9月9日
發(fā)明者楊濱 申請(qǐng)人:騰訊科技(深圳)有限公司