專利名稱:一種通訊套接方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及電通信技術(shù),尤其涉及一種通訊套接方法和系統(tǒng)。
背景技術(shù):
在軟件設(shè)計中,各個模塊如何通信是個非常重要的問題,通信方法的優(yōu)劣直接決定了軟件的復(fù)用性和可擴展性。
模塊化的設(shè)計思想出現(xiàn)使各個模塊之間的獨立性為軟件的復(fù)用提供了有力的支持,然而隨著軟件開發(fā)的不斷深入,在軟件框架設(shè)計的穩(wěn)定性與軟件功能的擴展之間則產(chǎn)生了矛盾,插件plug-in技術(shù)則是一項在不改變原有框架設(shè)計的基礎(chǔ)上,可以靈活擴展軟件功能的技術(shù)方案。它的出發(fā)點主要是為了使軟件能夠靈活地進行擴展功能,而不需要對主程序(框架程序)進行重新編譯和發(fā)布。
它的原理基本上是軟件的功能由框架設(shè)計/套接單元和插件/業(yè)務(wù)模塊來決定,在框架設(shè)計和插件之間具有一個特定的接口,它們兩者須通過這個接口來傳遞數(shù)據(jù)或控制信息,以實現(xiàn)軟件功能,因此,只要符合該接口的程序(或其他功能實體),就稱為該框架設(shè)計的插件。簡單地講,插件原理就是通過統(tǒng)一的接口來調(diào)用不同的模塊,以實現(xiàn)不同功能的調(diào)用,用來擴充主程序的功能,但一般而言,框架設(shè)計/套接單元通常是跟具體的應(yīng)用邏輯相關(guān)的,換句話說,隨著功能的擴展,框架設(shè)計/套接單元的穩(wěn)定性與功能擴展之間的矛盾會逐漸增大,影響框架設(shè)計/套接單元的穩(wěn)定性。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種穩(wěn)定性強的通訊套接方法和系統(tǒng),以解決現(xiàn)有技術(shù)中由于框架設(shè)計/套接單元與具體的應(yīng)用邏輯相關(guān),框架設(shè)計/套接單元的穩(wěn)定性與功能擴展之間產(chǎn)生矛盾的問題。
本發(fā)明所采用的通訊套接方法采用如下步驟A、套接單元接收用戶界面模塊的請求消息;B、套接單元將所述請求消息加入一個消息隊列,該消息隊列中的消息設(shè)有相應(yīng)的消息類型標記,所述的消息類型標記至少分為執(zhí)行類和結(jié)果類,所述的請求消息為執(zhí)行類消息;C、由消息隊列取出一個消息,根據(jù)該消息的消息類型標記進行如下判別處理C1、若消息類型為執(zhí)行類,將所述消息解析處理后產(chǎn)生相應(yīng)的結(jié)果消息,將所述的結(jié)果消息作為結(jié)果類消息加入所述的消息隊列;C2、若消息類型為結(jié)果類,則將所述結(jié)果消息返回相應(yīng)的用戶界面模塊。
所述的步驟C1包括如下步驟C11、套接單元依次調(diào)用各個業(yè)務(wù)模塊對該消息解析,業(yè)務(wù)模塊將解析出來的消息與該業(yè)務(wù)模塊的處理功能進行匹配性判斷,進行如下操作C111、若兩者相匹配,繼續(xù)如下步驟C12;C112、若兩者不相匹配,直接返回;C12、該業(yè)務(wù)模塊對該消息進行執(zhí)行處理,產(chǎn)生相應(yīng)的結(jié)果消息;C13、將結(jié)果消息加入所述的消息隊列,對該結(jié)果消息加注結(jié)果類的消息類型標記。
所述的套接單元對業(yè)務(wù)模塊可采用同步調(diào)用或異步調(diào)用。
所述的步驟B中,所述的消息隊列可以根據(jù)實際需要進行擴展。
所述的步驟C中,若消息類型既不是執(zhí)行類,又不是結(jié)果類時,套接單元將所取出的消息發(fā)送至所有的用戶界面模塊。
所述的消息為是可擴展標志語言(eXtensible Markup Language)XML消息。
這種通訊套接系統(tǒng),包括多個用戶界面模塊,其特征在于還包括套接單元和多個業(yè)務(wù)模塊,所述的套接單元中至少包含一個消息隊列,以及用于消息隊列處理的消息處理線程模塊,其中,所述的套接單元與各個用戶界面模塊通過信息交互,接收用戶界面模塊發(fā)送的請求消息,或向用戶界面模塊傳遞結(jié)果消息;所述的套接單元實現(xiàn)對各個業(yè)務(wù)模塊的依次調(diào)用,向業(yè)務(wù)模塊傳遞執(zhí)行類消息,各個業(yè)務(wù)模塊完成對執(zhí)行類消息的解析、及相應(yīng)的執(zhí)行,套接單元接收業(yè)務(wù)模塊所返回的結(jié)果消息;所述的消息隊列用于保存套接單元所接收到的請求消息和結(jié)果消息,消息隊列中的消息設(shè)有相應(yīng)的消息類型標記,所述的消息類型標記至少分為執(zhí)行類和結(jié)果類,所述的請求消息保存為執(zhí)行類消息,結(jié)果消息保存為結(jié)果類消息;所述的消息處理線程模塊用于從消息隊列中取出消息,并對所取消息根據(jù)消息類型標記進行相應(yīng)處理。
所述的套接單元包括一個消息隊列、消息處理線程模塊、套接字服務(wù)器和調(diào)用接口模塊,其中,所述的套接字服務(wù)器監(jiān)聽各個用戶界面模塊的請求消息,建立套接字連接,或向相關(guān)的用戶界面模塊傳遞結(jié)果消息;所述的消息處理線程模塊將執(zhí)行類消息傳遞至調(diào)用接口模塊,將結(jié)果類消息傳遞至套接字服務(wù)器;所述的調(diào)用接口模塊根據(jù)收到的執(zhí)行類消息完成對業(yè)務(wù)模塊的調(diào)用,接收業(yè)務(wù)模塊所返回的結(jié)果消息并將其傳遞至消息隊列。
本發(fā)明的有益效果為在本發(fā)明中,本發(fā)明通過將請求消息和結(jié)果加入套接單元中的一個消息隊列,并加設(shè)相應(yīng)的消息類型標記(執(zhí)行類和結(jié)果類),采用消息處理線程模塊從消息隊列中取出消息并根據(jù)其消息類型標記進行相應(yīng)處理,即向業(yè)務(wù)模塊傳遞執(zhí)行類消息/請求消息或向用戶界面模塊傳遞結(jié)果消息,使得本發(fā)明中的套接單元本質(zhì)上成為一個消息的中轉(zhuǎn)站,它只負責(zé)根據(jù)消息標記做出相應(yīng)的處理,并將執(zhí)行結(jié)果轉(zhuǎn)發(fā),并不參與實現(xiàn)具體的業(yè)務(wù)邏輯,換句話說,本發(fā)明中的套接單元為消息提供了一種統(tǒng)一的格式化處理(消息類型標記)以及數(shù)據(jù)傳輸?shù)墓艿?,與具體的業(yè)務(wù)邏輯無關(guān),本發(fā)明使套接單元保持良好的獨立性,一旦某個業(yè)務(wù)模塊出現(xiàn)問題,并不會影響套接單元的消息處理,其他業(yè)務(wù)模塊仍能正常工作,如果在應(yīng)用中需要增加新的業(yè)務(wù)模塊,只需插入相應(yīng)的用戶界面模塊以及與對應(yīng)的業(yè)務(wù)模塊,新增用戶界面模塊采用同樣的方法發(fā)送消息,即可實現(xiàn)功能上的擴展,這種擴展不會影響到其他業(yè)務(wù)模塊,其他業(yè)務(wù)模塊不需做出任何修改,使本發(fā)明穩(wěn)定性強。
具體地說,本發(fā)明具有如下優(yōu)點1)接口的穩(wěn)定性所有后臺業(yè)務(wù)模塊執(zhí)行消息的接口(調(diào)用接口模塊)一致,在增加新的功能模塊時,后臺業(yè)務(wù)模塊只需繼承該接口即可,新增用戶界面模塊仍通過套接字服務(wù)器與套接單元通信,發(fā)送消息的接口也是統(tǒng)一的,從以上可以看出,本發(fā)明的架構(gòu)及有關(guān)接口的穩(wěn)定性強。
2)本發(fā)明的可擴展性是建立在接口的穩(wěn)定性基礎(chǔ)上的,接口穩(wěn)定統(tǒng)一后,由于套接單元只負責(zé)轉(zhuǎn)發(fā)消息,對具體的業(yè)務(wù)邏輯怎么實現(xiàn)無需了解,所以在增加新的功能時,只需要實現(xiàn)具體的用戶界面模塊以及對應(yīng)的業(yè)務(wù)模塊與套接單元插接即可,因此,本發(fā)明可擴展性高。
圖1為本發(fā)明基本結(jié)構(gòu)示意圖;圖2為本發(fā)明基本控制流程示意圖;圖3為本發(fā)明具體結(jié)構(gòu)示意圖;圖4為本發(fā)明具體控制流程示意圖。
具體實施例方式
下面根據(jù)附圖和實施例對本發(fā)明作進一步詳細說明根據(jù)圖1和圖3,本發(fā)明包括多個用戶界面模塊1、套接單元2和多個業(yè)務(wù)模塊3,套接單元2中包括一個消息隊列21,以及用于消息隊列21處理的消息處理線程模塊22,套接字服務(wù)器23和調(diào)用接口模塊24,其中,如圖1所示,套接單元2與各個用戶界面模塊1通過信息交互,接收用戶界面模塊1發(fā)送的請求消息,或向用戶界面模塊1傳遞結(jié)果消息。
如圖1所示,套接單元2實現(xiàn)對各個業(yè)務(wù)模塊3的依次調(diào)用,向業(yè)務(wù)模塊3傳遞執(zhí)行類消息,各個業(yè)務(wù)模塊3完成對執(zhí)行類消息的解析、及相應(yīng)的執(zhí)行,套接單元2接收業(yè)務(wù)模塊3所返回的結(jié)果消息。
如圖1所示,消息隊列21用于保存套接單元2所接收到的請求消息和結(jié)果消息,消息隊列21中的消息設(shè)有相應(yīng)的消息類型標記,所述的消息類型標記至少分為執(zhí)行類和結(jié)果類,請求消息保存為執(zhí)行類消息,結(jié)果消息保存為結(jié)果類消息,消息處理線程模塊22用于從消息隊列21中取出消息,并對所取消息根據(jù)消息類型標記進行相應(yīng)處理。
具體地,如圖1和圖3所示,多個用戶界面模塊1包括用戶界面模塊10、11、…、1X,多個業(yè)務(wù)模塊3包括業(yè)務(wù)模塊30、31、…、3Y,其中X、Y為大于1的整數(shù)。套接字服務(wù)器23監(jiān)聽各個用戶界面模塊10、11、…、1X的請求消息,建立套接字連接,或向相關(guān)的用戶界面模塊10、11、…、1X傳遞結(jié)果消息;消息處理線程模塊22將執(zhí)行類消息傳遞至調(diào)用接口模塊24,將結(jié)果類消息傳遞至套接字服務(wù)器23;調(diào)用接口模塊24根據(jù)收到的執(zhí)行類消息完成對業(yè)務(wù)模塊30、31、…、3Y的調(diào)用,接收業(yè)務(wù)模塊30、31、…、3Y所返回的結(jié)果消息并將其傳遞至消息隊列21,在本發(fā)明中的消息采用XML消息。
如圖1和圖2所示,本發(fā)明的基本控制流程如下1)用戶界面模塊1發(fā)送請求消息.
2)套接單元2接收請求消息;3)套接單元2將收到的請求消息加入一個消息隊列21,該消息隊列21中的消息設(shè)有相應(yīng)的消息類型標記,所述的消息類型標記分為執(zhí)行類和結(jié)果類,請求消息為執(zhí)行類消息,結(jié)果消息為結(jié)果類消息。
4)套接單元2中的消息處理線程模塊22由消息隊列21取出一個消息。
5)消息處理線程模塊22根據(jù)該消息的消息類型標記進行如下判別處理
51)若消息類型為執(zhí)行類,將所述消息解析處理后產(chǎn)生相應(yīng)的結(jié)果消息,將產(chǎn)生的結(jié)果消息作為結(jié)果類消息加入消息隊列21。
52)若消息類型為結(jié)果類,則將該結(jié)果消息返回相應(yīng)的用戶界面模塊1。
如圖3和圖4所示,下面就本發(fā)明的具體控制流程說明如下1.如圖3所示,現(xiàn)設(shè)用戶界面模塊10發(fā)送請求消息。
2.套接單元2中的套接字服務(wù)器23接收該請求消息,并將其發(fā)送至消息隊列21。
3.被接收到的消息加入消息隊列21,該消息隊列21中的消息設(shè)有相應(yīng)的消息類型標記,消息類型標記分為執(zhí)行類和結(jié)果類,請求消息為執(zhí)行類消息,結(jié)果消息為結(jié)果類消息。該消息隊列21可以根據(jù)實際需要進行擴展,例如在內(nèi)部設(shè)定不同優(yōu)先級的消息,優(yōu)先級較高的消息放在隊列前面,消息處理線程模塊22不用做任何改動。
4.消息處理線程模塊22由消息隊列21取出一個消息。
5.消息處理線程模塊22根據(jù)該消息的消息類型標記進行如下判別處理51.若該消息類型為執(zhí)行類,繼續(xù)如下步驟6。
52.否則,判斷該消息類型是否為結(jié)果類,進行如下操作521.若為結(jié)果類,消息處理線程模塊22則將該結(jié)果消息通過套接字服務(wù)器23返回相應(yīng)的用戶界面1M,在這里,M為處于
區(qū)間的整數(shù),該用戶界面模塊1M接收到xml消息后,先解析,然后根據(jù)消息名字和消息參數(shù)知道執(zhí)行結(jié)果,然后進行界面層的呈現(xiàn)操作。
522.否則,消息處理線程模塊22將所取出的消息通過套接字服務(wù)器23發(fā)送至所有的用戶界面模塊10、11、…、1X,
6.消息處理線程模塊22將該執(zhí)行類消息(即請求消息)傳送至調(diào)用接口模塊24,調(diào)用接口模塊24依次調(diào)用各個業(yè)務(wù)模塊30、31、…或3Y對該消息解析,對于xml執(zhí)行類消息,則依次調(diào)用各個業(yè)務(wù)模塊30、31、…或3Y的xml消息執(zhí)行接口,每個業(yè)務(wù)模塊30、31、…或3Y都繼承一個執(zhí)行xml消息的接口。
這樣,業(yè)務(wù)模塊30、31、…或3Y分別將解析出來的消息與自身的處理功能進行匹配性判斷,進行如下操作61、若兩者相匹配,如圖3所示,例如,業(yè)務(wù)模塊3Y與該執(zhí)行類消息(即請求消息)相匹配,繼續(xù)如下步驟7。
對于這種匹配性判斷,例如,可以通過解析出來的消息名字與各業(yè)務(wù)模塊30、31、…或3Y所處理的消息名字相比較,如果一致則表示相匹配,當然,也可以采用其它方法進行匹配性判斷,這對于本領(lǐng)域技術(shù)人員來說可以不需要付出創(chuàng)造性勞動即可予以多種方法的實施,此處不再贅述。
62、若兩者不相匹配,直接返回步驟6,在這里,步驟6、步驟61和步驟62共同完成一個局部的循環(huán)操作,相當于使步驟6中的執(zhí)行類消息(即請求消息)遍歷所有的業(yè)務(wù)模塊30、31、…和3Y。
7.業(yè)務(wù)模塊3Y對該消息進行執(zhí)行處理,如圖3所示,業(yè)務(wù)模塊3Y產(chǎn)生相應(yīng)的結(jié)果消息,并將其發(fā)送至調(diào)用接口模塊24。
8.通過調(diào)用接口模塊24將結(jié)果消息加入消息隊列21,在實際應(yīng)用中,調(diào)用接口模塊24可以對業(yè)務(wù)模塊30、31、…或3Y采用同步調(diào)用或異步調(diào)用,對于同步調(diào)用,當調(diào)用執(zhí)行xml消息接口ExecuteXml(string& strXml),返回值表明是同步調(diào)用時,strXml既是輸入?yún)?shù)也是輸出參數(shù),這就是執(zhí)行后的結(jié)果,可直接把輸出的strXml放入xml消息隊列21;對于異步調(diào)用,當執(zhí)行ExecuteXml時,如果要執(zhí)行的時間較長或者不可能一次性返回結(jié)果,那么就要采用調(diào)用接口模塊24的異步返回接口OnHandleEvent(string&strXml),strXml即為返回的xml消息執(zhí)行結(jié)果,在該接口實現(xiàn)中,把strXml放入消息隊列21。在消息隊列21中對該結(jié)果消息加注結(jié)果類的消息類型標記,返回如步驟3所示。
本發(fā)明通過上述操作,可以實現(xiàn)幾個用戶界面模塊10、11、…、1X之間的互相通信,或者幾個后臺業(yè)務(wù)模塊30、31、…、3Y之間的互相通信,甚至不同的用戶界面模塊10、11、…或1X與后臺業(yè)務(wù)模塊30、31、…或3Y之間的交叉通信,那么只需要在相應(yīng)的模塊中加入對應(yīng)的消息,套接單元2不用作任何改動。
在前述實施例中,只設(shè)置有一個消息隊列,在實際應(yīng)用中,可以根據(jù)需要分成兩個消息隊列,每個消息隊列由一個線程處理,例如,根據(jù)交叉通信的消息和執(zhí)行結(jié)果進行區(qū)分,也可以根據(jù)用戶界面模塊之間的通信和后臺業(yè)務(wù)模塊之間的通信進行區(qū)分,分別放置于兩個消息隊列中。另外消息隊列還可以擴展為帶有優(yōu)先級的消息隊列,根據(jù)優(yōu)先級的不同,消息在隊列中的位置也不同,這樣執(zhí)行起來,優(yōu)先級高的消息可以先得到執(zhí)行,等等,結(jié)合前述實施例所述,這對于本領(lǐng)域技術(shù)人員來說,可以不需要付出創(chuàng)造性勞動即可實施,此處不再贅述。
權(quán)利要求
1.一種通訊套接方法,其特征在于它采用如下步驟A、套接單元接收用戶界面模塊的請求消息;B、套接單元將所述請求消息加入一個消息隊列,該消息隊列中的消息設(shè)有相應(yīng)的消息類型標記,所述的消息類型標記至少分為執(zhí)行類和結(jié)果類,所述的請求消息為執(zhí)行類消息;C、由消息隊列取出一個消息,根據(jù)該消息的消息類型標記進行如下判別處理C1、若消息類型為執(zhí)行類,將所述消息解析處理后產(chǎn)生相應(yīng)的結(jié)果消息,將所述的結(jié)果消息作為結(jié)果類消息加入所述的消息隊列;C2、若消息類型為結(jié)果類,則將所述結(jié)果消息返回相應(yīng)的用戶界面模塊。
2.根據(jù)權(quán)利要求1所述的通訊套接方法,其特征在于所述的步驟C1包括如下步驟C11、套接單元依次調(diào)用各個業(yè)務(wù)模塊對該消息解析,業(yè)務(wù)模塊將解析出來的消息與該業(yè)務(wù)模塊的處理功能進行匹配性判斷,進行如下操作C111、若兩者相匹配,繼續(xù)如下步驟C12;C112、若兩者不相匹配,直接返回;C12、該業(yè)務(wù)模塊對該消息進行執(zhí)行處理,產(chǎn)生相應(yīng)的結(jié)果消息;C13、將結(jié)果消息加入所述的消息隊列,對該結(jié)果消息加注結(jié)果類的消息類型標記。
3.根據(jù)權(quán)利要求2所述的通訊套接方法,其特征在于所述的套接單元對業(yè)務(wù)模塊可采用同步調(diào)用或異步調(diào)用。
4.根據(jù)權(quán)利要求1所述的通訊套接方法,其特征在于所述的步驟B中,所述的消息隊列可以根據(jù)實際需要進行擴展。
5.根據(jù)權(quán)利要求1-4中任意一項所述的通訊套接方法,其特征在于所述的步驟C中,若消息類型既不是執(zhí)行類,又不是結(jié)果類時,套接單元將所取出的消息發(fā)送至所有的用戶界面模塊。
6.根據(jù)權(quán)利要求1-4中任意一項所述的通訊套接方法,其特征在于所述的消息為xml消息。
7.一種通訊套接系統(tǒng),包括多個用戶界面模塊,其特征在于還包括套接單元和多個業(yè)務(wù)模塊,所述的套接單元中至少包含一個消息隊列,以及用于消息隊列處理的消息處理線程模塊,其中,所述的套接單元與各個用戶界面模塊通過信息交互,接收用戶界面模塊發(fā)送的請求消息,或向用戶界面模塊傳遞結(jié)果消息;所述的套接單元實現(xiàn)對各個業(yè)務(wù)模塊的依次調(diào)用,向業(yè)務(wù)模塊傳遞執(zhí)行類消息,各個業(yè)務(wù)模塊完成對執(zhí)行類消息的解析、及相應(yīng)的執(zhí)行,套接單元接收業(yè)務(wù)模塊所返回的結(jié)果消息;所述的消息隊列用于保存套接單元所接收到的請求消息和結(jié)果消息,消息隊列中的消息設(shè)有相應(yīng)的消息類型標記,所述的消息類型標記至少分為執(zhí)行類和結(jié)果類,所述的請求消息保存為執(zhí)行類消息,結(jié)果消息保存為結(jié)果類消息;所述的消息處理線程模塊用于從消息隊列中取出消息,并對所取消息根據(jù)消息類型標記進行相應(yīng)處理。
8.根據(jù)權(quán)利要求1所述的通訊套接系統(tǒng),其特征在于所述的套接單元包括一個消息隊列、消息處理線程模塊、套接字服務(wù)器和調(diào)用接口模塊,其中,所述的套接字服務(wù)器監(jiān)聽各個用戶界面模塊的請求消息,建立套接字連接,或向相關(guān)的用戶界面模塊傳遞結(jié)果消息;所述的消息處理線程模塊將執(zhí)行類消息傳遞至調(diào)用接口模塊,將結(jié)果類消息傳遞至套接字服務(wù)器;所述的調(diào)用接口模塊根據(jù)收到的執(zhí)行類消息完成對業(yè)務(wù)模塊的調(diào)用,接收業(yè)務(wù)模塊所返回的結(jié)果消息并將其傳遞至消息隊列。
全文摘要
一種涉及電通信技術(shù)的通訊套接方法和系統(tǒng),其方法為A.套接單元接收用戶界面模塊的請求消息,B.套接單元將請求消息加入消息隊列,其中的消息設(shè)有相應(yīng)的消息類型標記,分為執(zhí)行類和結(jié)果類C.由消息隊列取出一個消息,根據(jù)該消息的消息類型標記進行如下判別處理C1.若為執(zhí)行類,將消息解析處理后產(chǎn)生相應(yīng)的結(jié)果消息,將結(jié)果消息作為結(jié)果類消息加入消息隊列;C2.若為結(jié)果類,則將結(jié)果消息返回相應(yīng)的用戶界面模塊,該系統(tǒng)包括多個用戶界面模塊,其特征在于還包括套接單元和多個業(yè)務(wù)模塊,所述的套接單元中至少包含一個消息隊列,以及用于消息隊列處理的消息處理線程模塊,本發(fā)明穩(wěn)定性強。
文檔編號H04L12/58GK101060500SQ20061006112
公開日2007年10月24日 申請日期2006年6月8日 優(yōu)先權(quán)日2006年6月8日
發(fā)明者楊勝 申請人:華為技術(shù)有限公司