本發(fā)明涉及物聯(lián)網(wǎng)通訊技術(shù)領(lǐng)域,尤其涉及一種業(yè)務(wù)系統(tǒng)的協(xié)議解析方法及裝置。
背景技術(shù):
隨著信息通信技術(shù)的不斷發(fā)展,通信網(wǎng)絡(luò)作為信息通信技術(shù)的重要基礎(chǔ),已經(jīng)從人到人的通信發(fā)展到人與物、物與物之間的通信,并逐漸趨向于從縱向的局部物與物相連過渡到橫向的跨應(yīng)用、跨地域的物聯(lián)網(wǎng)。物聯(lián)網(wǎng)在1999年被提出,其定義為將所有物品通過射頻識別(RFID)、紅外傳感、全球定位系統(tǒng)、激光掃描燈信息傳感設(shè)備與互聯(lián)網(wǎng)連接起來,進(jìn)行信息交互和通信,實現(xiàn)智能化識別、定位、跟蹤、監(jiān)控和管理。
目前的物聯(lián)網(wǎng)通信處于初步的發(fā)展階段,物聯(lián)網(wǎng)通訊設(shè)計中都是根據(jù)一種已經(jīng)設(shè)計好的通訊協(xié)議,簡單的在業(yè)務(wù)系統(tǒng)的邏輯中,通過硬編碼的方式進(jìn)行協(xié)議的解析。
現(xiàn)有技術(shù)中所有的邏輯都在一個處理器中,耦合度高,隨著業(yè)務(wù)的擴(kuò)展,程序的復(fù)雜度越來越高。并且,使用條件判斷語句解析報文再進(jìn)行分發(fā)處理時,在通訊協(xié)議上每新增一種業(yè)務(wù),都需要對判斷語句進(jìn)行修改,隨著業(yè)務(wù)的擴(kuò)展,判斷語句會日益復(fù)雜,并且每一次更新,都可能對以往所有的邏輯產(chǎn)生影響。所以,現(xiàn)有的物聯(lián)網(wǎng)通訊技術(shù)中存在著擴(kuò)展性低的問題。
技術(shù)實現(xiàn)要素:
本發(fā)明實施例提出了一種業(yè)務(wù)系統(tǒng)的協(xié)議解析方法,可以解決物聯(lián)網(wǎng)通訊技術(shù)中存在的擴(kuò)展性低的技術(shù)問題。
一種業(yè)務(wù)系統(tǒng)的協(xié)議解析方法,包括:
在接收到通訊報文時,查找與所述接收到的通訊報文匹配的協(xié)議匹配對象;
通過所述協(xié)議匹配對象中預(yù)定義的函數(shù)返回與所述通訊報文對應(yīng)的業(yè)務(wù)標(biāo)識和業(yè)務(wù)類型;
根據(jù)所述通訊報文生成數(shù)據(jù)對象;
根據(jù)所述業(yè)務(wù)標(biāo)識和所述業(yè)務(wù)類型查找對應(yīng)的業(yè)務(wù)模塊調(diào)用接口,將所述數(shù)據(jù)對象傳遞至所述業(yè)務(wù)模塊調(diào)用接口進(jìn)行處理。
可選的,在所述查找與所述接收到的通訊報文匹配的協(xié)議匹配對象之前,還包括:
加載新增的協(xié)議匹配對象,獲取所述新增的協(xié)議匹配對象的標(biāo)識;
獲取輸入的與所述協(xié)議匹配對象對應(yīng)的關(guān)鍵字,將所述新增的協(xié)議匹配對象的標(biāo)識以及與所述新增的協(xié)議匹配對象對應(yīng)的關(guān)鍵字存儲在XML文件中。
可選的,所述查找與所述接收到的通訊報文匹配的協(xié)議匹配對象包括:
獲取所述接收到的通訊報文中的關(guān)鍵字;
在所述XML文件中查詢與所述關(guān)鍵字匹配的協(xié)議匹配對象的標(biāo)識,根據(jù)所述標(biāo)識獲取對應(yīng)的協(xié)議匹配對象。
可選的,所述方法還包括:
加載新增的業(yè)務(wù)模塊,獲取所述新增的業(yè)務(wù)模塊的業(yè)務(wù)模塊調(diào)用接口;
獲取輸入的與所述新增的業(yè)務(wù)模塊對應(yīng)的業(yè)務(wù)標(biāo)識和業(yè)務(wù)類型,將所述新增的業(yè)務(wù)模塊調(diào)用接口以及與所述新增的業(yè)務(wù)模塊對應(yīng)的業(yè)務(wù)標(biāo)識和業(yè)務(wù)類型存儲在所述XML文件中。
可選的,所述根據(jù)所述業(yè)務(wù)標(biāo)識和所述業(yè)務(wù)類型查找對應(yīng)的業(yè)務(wù)模塊調(diào)用接口包括:
在所述XML文件中查詢到與所述業(yè)務(wù)標(biāo)識和所述業(yè)務(wù)類型匹配的業(yè)務(wù)模塊調(diào)用接口時,調(diào)用查找到的業(yè)務(wù)模塊調(diào)用接口。
此外,還提出了一種業(yè)務(wù)系統(tǒng)的協(xié)議解析裝置。
一種業(yè)務(wù)系統(tǒng)的協(xié)議解析裝置,包括:
協(xié)議匹配對象查找單元,用于在接收到通訊報文時,查找與所述接收到的通訊報文匹配的協(xié)議匹配對象;
通訊報文解析單元,用于通過所述協(xié)議匹配對象中預(yù)定義的函數(shù)返回與所述通訊報文對應(yīng)的業(yè)務(wù)標(biāo)識和業(yè)務(wù)類型;
數(shù)據(jù)對象生成單元,用于根據(jù)所述通訊報文生成數(shù)據(jù)對象;
業(yè)務(wù)模塊調(diào)用單元,用于根據(jù)所述業(yè)務(wù)標(biāo)識和所述業(yè)務(wù)類型查找對應(yīng)的業(yè)務(wù)模塊調(diào)用接口,將所述數(shù)據(jù)對象傳遞至所述業(yè)務(wù)模塊調(diào)用接口進(jìn)行處理。
可選的,所述裝置還包括協(xié)議匹配對象添加單元,用于:
加載新增的協(xié)議匹配對象,獲取所述新增的協(xié)議匹配對象的標(biāo)識;
獲取輸入的與所述協(xié)議匹配對象對應(yīng)的關(guān)鍵字,將所述新增的協(xié)議匹配對象的標(biāo)識以及與所述新增的協(xié)議匹配對象對應(yīng)的關(guān)鍵字存儲在XML文件中。
可選的,所述協(xié)議匹配對象查找單元還用于:
獲取所述接收到的通訊報文中的關(guān)鍵字;
在所述XML文件中查詢與所述關(guān)鍵字匹配的協(xié)議匹配對象的標(biāo)識,根據(jù)所述標(biāo)識獲取對應(yīng)的協(xié)議匹配對象。
可選的,所述裝置還包括業(yè)務(wù)模塊添加單元:
加載新增的業(yè)務(wù)模塊,獲取所述新增的業(yè)務(wù)模塊的業(yè)務(wù)模塊調(diào)用接口;
獲取輸入的與所述新增的業(yè)務(wù)模塊對應(yīng)的業(yè)務(wù)標(biāo)識和業(yè)務(wù)類型,將所述新增的業(yè)務(wù)模塊調(diào)用接口以及與所述新增的業(yè)務(wù)模塊對應(yīng)的業(yè)務(wù)標(biāo)識和業(yè)務(wù)類型存儲在所述XML文件中。
可選的,所述業(yè)務(wù)模塊調(diào)用單元還用于:
在所述XML文件中查詢到與所述業(yè)務(wù)標(biāo)識和所述業(yè)務(wù)類型匹配的業(yè)務(wù)模塊調(diào)用接口時,調(diào)用查找到的業(yè)務(wù)模塊調(diào)用接口。
本發(fā)明實施例中通過查找與接收到的通訊報文匹配的協(xié)議匹配對象,根據(jù)協(xié)議匹配對象中預(yù)定義的函數(shù)返回與通訊報文對應(yīng)的業(yè)務(wù)標(biāo)識和業(yè)務(wù)類型,并根據(jù)通訊報文生成數(shù)據(jù)對象,將數(shù)據(jù)對象傳遞至與業(yè)務(wù)標(biāo)識和業(yè)務(wù)類型對應(yīng)的業(yè)務(wù)模塊調(diào)用接口進(jìn)行處理,采用XML文件格式保存協(xié)議匹配對象和業(yè)務(wù)模塊調(diào)用接口,使得在對處理程序進(jìn)行修改時,只需要改動XML文件中對應(yīng)的模塊;同時,在增加或者刪除業(yè)務(wù)模塊時,只需要添加或者刪除相應(yīng)的XML文件,而不必對整個業(yè)務(wù)處理程序進(jìn)行改動,從而降低業(yè)務(wù)模塊之間的耦合度,提高程序的可擴(kuò)展性。
附圖說明
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
其中:
圖1為一個實施例中一種業(yè)務(wù)系統(tǒng)的協(xié)議解析方法的流程圖;
圖2為另一個實施例中一種業(yè)務(wù)系統(tǒng)的協(xié)議解析方法的流程圖;
圖3為一個實施例中一種業(yè)務(wù)系統(tǒng)的協(xié)議解析裝置的示意圖;
圖4為一個實施例中一種業(yè)務(wù)系統(tǒng)的協(xié)議解析裝置的示意圖;
圖5為一個實施例中一種業(yè)務(wù)系統(tǒng)的協(xié)議解析裝置的結(jié)構(gòu)圖;
圖6為一個實施例中運(yùn)行上述業(yè)務(wù)系統(tǒng)的協(xié)議解析方法的計算機(jī)系統(tǒng)的硬件架構(gòu)圖。
具體實施方式
下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。
在一個實施例中,提出了一種業(yè)務(wù)系統(tǒng)的協(xié)議解析方法。該方法的實現(xiàn)可依賴于計算機(jī)程序,該計算機(jī)程序可以是通訊協(xié)議解析的管理程序。該計算機(jī)程序可運(yùn)行于基于馮諾依曼體系的計算機(jī)系統(tǒng)之上。
參照圖1,圖1是本發(fā)明實施例中一種業(yè)務(wù)系統(tǒng)的協(xié)議解析方法的流程圖,該業(yè)務(wù)系統(tǒng)的協(xié)議解析方法的執(zhí)行包括以下步驟:
步驟S102:在接收到通訊報文時,查找與所述接收到的通訊報文匹配的協(xié)議匹配對象。
步驟S104:通過所述協(xié)議匹配對象中預(yù)定義的函數(shù)返回與所述通訊報文對應(yīng)的業(yè)務(wù)標(biāo)識和業(yè)務(wù)類型。
步驟S106:根據(jù)所述通訊報文生成數(shù)據(jù)對象。
通訊報文是網(wǎng)絡(luò)傳輸?shù)膯挝?,傳輸過程中會不斷的封裝成分組、包、幀來進(jìn)行傳輸,封裝的方式就是添加一些信息段,那些就是報文頭以一定格式組織起來的數(shù)據(jù)。比如里面有報文類型、報文版本、報文長度、報文實體等等信息。在本實施例中,與通訊報文匹配的協(xié)議匹配對象指對通訊協(xié)議進(jìn)行處理的單元,其中包含3個內(nèi)容:業(yè)務(wù)標(biāo)識、匹配規(guī)則和消息轉(zhuǎn)發(fā)方式。
其中,業(yè)務(wù)標(biāo)識是通訊報文中攜帶的業(yè)務(wù)處理信息對應(yīng)的業(yè)務(wù)處理對象,以社交軟件“刪除好友這一操作過程”為例,業(yè)務(wù)標(biāo)識為刪除好友,可能的值為:ms.person.friend.delete;匹配規(guī)則指從通訊報文中識別這一操作類型,以數(shù)據(jù)基于http傳輸為例,假設(shè)解析的通訊報文的url為“http://ip:port/iport/cdata?cliendId=3434UYU77&option=5&cmd=3&oporation=delete&id=eUYIIDUUSY”,匹配規(guī)則為識別url中的參數(shù),從而確定具體業(yè)務(wù),例如規(guī)則可能為:option為5,operation為delete且含有id的url,就認(rèn)為是刪除好友的操作。消息轉(zhuǎn)發(fā)方式指的是確定了報文的業(yè)務(wù)特征后的處理方式。如可以將業(yè)務(wù)標(biāo)識和其它信息(如人員id,姓名等),發(fā)往特定隊列的消息隊列,給專門處理好友的業(yè)務(wù)模塊接收(也可能有其它方式,如通過websocket、thrift等推送消息)。
在本實施例中,可預(yù)先創(chuàng)建XML文件對協(xié)議匹配對象的標(biāo)識進(jìn)行保存,XML是可擴(kuò)展標(biāo)記語言(Extensible Markup Language)的縮寫,其中的標(biāo)記(markup)是關(guān)鍵部分,可以創(chuàng)建內(nèi)容,然后使用限定標(biāo)記去標(biāo)記它,從而使每個單詞、短語或塊成為可識別、可分類的信息。XML文件存在于業(yè)務(wù)模塊,保存的是協(xié)議匹配對象中描述的業(yè)務(wù)標(biāo)識,協(xié)議版本、調(diào)用類、調(diào)用函數(shù)、優(yōu)先值。
在一個實施例中,可以通過獲取接收到的通訊報文中的關(guān)鍵字,在XML文件中查詢與關(guān)鍵字匹配的協(xié)議匹配對象的標(biāo)識,根據(jù)查找到的標(biāo)識獲取對應(yīng)的已加載到內(nèi)存中的協(xié)議匹配對象。系統(tǒng)可在啟動時加載預(yù)先定義的多個類型的協(xié)議匹配對象的類,并生成相應(yīng)的協(xié)議匹配對象,存儲在內(nèi)存中,生成的協(xié)議匹配對象即具有相應(yīng)的標(biāo)識。系統(tǒng)也可在啟動后動態(tài)地加載多個類型的協(xié)議匹配對象的類。例如,在通訊報文中查詢到關(guān)鍵字“device”,根據(jù)該關(guān)鍵字在XML文件中查找到對應(yīng)的協(xié)議匹配對象的標(biāo)識如“device 1-4”,其中包含了關(guān)鍵字“device”,再根據(jù)該協(xié)議匹配標(biāo)識獲取對應(yīng)的已加載到內(nèi)存中的協(xié)議匹配對象。
這里的關(guān)鍵字匹配可以包含多種情況,可以是在關(guān)鍵字與協(xié)議匹配對象的標(biāo)識完全相同時判定為匹配;也可以設(shè)定一定的百分比閾值,超過設(shè)定的閾值時判定為匹配,如關(guān)鍵字與協(xié)議匹配對象的標(biāo)識的字符串的相似度為80%,設(shè)定的閾值為70%,此時即認(rèn)為匹配成功。根據(jù)關(guān)鍵字匹配查找對應(yīng)的協(xié)議匹配對象,可以快速地檢測到相應(yīng)的協(xié)議匹配對象,提高處理效率。
步驟S108:根據(jù)所述業(yè)務(wù)標(biāo)識和所述業(yè)務(wù)類型查找對應(yīng)的業(yè)務(wù)模塊調(diào)用接口,將所述數(shù)據(jù)對象傳遞至所述業(yè)務(wù)模塊調(diào)用接口進(jìn)行處理。
在本實施例中,對通訊報文的業(yè)務(wù)處理需要通過調(diào)用對應(yīng)的業(yè)務(wù)模塊接口,并將數(shù)據(jù)對象傳遞到業(yè)務(wù)模塊調(diào)用接口進(jìn)行處理。例如,通訊報文中指示需要將設(shè)備1中的數(shù)據(jù)刪除,其中的關(guān)鍵字為“device”,對應(yīng)的協(xié)議匹配對象獲取其中的業(yè)務(wù)標(biāo)識為“device”,業(yè)務(wù)類型為“delete”,數(shù)據(jù)對象為“data”。此時,根據(jù)業(yè)務(wù)標(biāo)識和業(yè)務(wù)類型查找到對應(yīng)的業(yè)務(wù)模塊調(diào)用接口,假設(shè)為調(diào)用函數(shù)“DELETE”,將數(shù)據(jù)對象“data”傳遞至函數(shù)“DELETE”進(jìn)行處理。
參照圖2,圖2為本發(fā)明另一個實施例中一種業(yè)務(wù)系統(tǒng)的協(xié)議解析方法的流程圖,包括以下步驟:
步驟S202:加載新增的協(xié)議匹配對象,獲取所述新增的協(xié)議匹配對象的標(biāo)識,獲取輸入的與所述協(xié)議匹配對象對應(yīng)的關(guān)鍵字,將所述新增的協(xié)議匹配對象的標(biāo)識以及與所述新增的協(xié)議匹配對象對應(yīng)的關(guān)鍵字存儲在XML文件中。
在本實施例中,可預(yù)先創(chuàng)建XML文件對協(xié)議匹配對象的標(biāo)識進(jìn)行保存,XML是可擴(kuò)展標(biāo)記語言(Extensible Markup Language)的縮寫,其中的標(biāo)記(markup)是關(guān)鍵部分,可以創(chuàng)建內(nèi)容,然后使用限定標(biāo)記去標(biāo)記它,從而使每個單詞、短語或塊成為可識別、可分類的信息。XML文件存在于業(yè)務(wù)模塊,保存的是協(xié)議匹配對象中描述的業(yè)務(wù)標(biāo)識,協(xié)議版本、調(diào)用類、調(diào)用函數(shù)、優(yōu)先值。
在一個實施例中,增加新的協(xié)議匹配對象時,獲取新增的協(xié)議匹配對象的標(biāo)識,獲取輸入的與協(xié)議匹配對象對應(yīng)的關(guān)鍵字,將新增的協(xié)議匹配對象的標(biāo)識以及與新增的協(xié)議匹配對象對應(yīng)的關(guān)鍵字存儲在XML文件中。之后通過獲取接收到的通訊報文中的關(guān)鍵字,在XML文件中查詢已加載到內(nèi)存中的與關(guān)鍵字匹配的協(xié)議匹配對象的標(biāo)識,根據(jù)查找到的標(biāo)識獲取對應(yīng)的協(xié)議匹配對象。系統(tǒng)可在啟動時加載預(yù)先定義的多個類型的協(xié)議匹配對象的類,并生成相應(yīng)的協(xié)議匹配對象,存儲在內(nèi)存中,生成的協(xié)議匹配對象即具有相應(yīng)的標(biāo)識。系統(tǒng)也可在啟動后動態(tài)地加載多個類型的協(xié)議匹配對象的類。
步驟S204:在接收到通訊報文時,查找與所述接收到的通訊報文匹配的協(xié)議匹配對象。
步驟S206:通過所述協(xié)議匹配對象中預(yù)定義的函數(shù)返回與所述通訊報文對應(yīng)的業(yè)務(wù)標(biāo)識和業(yè)務(wù)類型。
步驟S208:根據(jù)所述通訊報文生成數(shù)據(jù)對象。
通訊報文是網(wǎng)絡(luò)傳輸?shù)膯挝唬瑐鬏斶^程中會不斷的封裝成分組、包、幀來進(jìn)行傳輸,封裝的方式就是添加一些信息段,那些就是報文頭以一定格式組織起來的數(shù)據(jù)。比如里面有報文類型、報文版本、報文長度、報文實體等等信息。在本實施例中,與通訊報文匹配的協(xié)議匹配對象指對通訊協(xié)議進(jìn)行處理的單元,其中包含3個內(nèi)容:業(yè)務(wù)標(biāo)識、匹配規(guī)則和消息轉(zhuǎn)發(fā)方式。其中,以社交軟件“刪除好友這一操作過程”為例,業(yè)務(wù)標(biāo)識為刪除好友,可能的值為:ms.person.friend.delete;匹配規(guī)則指從通訊報文中識別這一操作類型,以數(shù)據(jù)基于http傳輸為例,假設(shè)解析的通訊報文的url為“http://ip:port/iport/cdata?cliendId=3434UYU77&option=5&cmd=3&oporation=delete&id=eUYIIDUUSY”,匹配規(guī)則為識別url中的參數(shù),從而確定具體業(yè)務(wù),例如規(guī)則可能為:option為5,operation為delete且含有id的url,就認(rèn)為是刪除好友的操作。消息轉(zhuǎn)發(fā)方式指的是確定了報文的業(yè)務(wù)特征后的處理方式。如可以將業(yè)務(wù)標(biāo)識和其它信息(如人員id,姓名等),發(fā)往特定隊列的消息隊列,給專門處理好友的業(yè)務(wù)模塊接收(也可能有其它方式,如通過websocket、thrift等推送消息)。
在一個實施例中,可以通過獲取接收到的通訊報文中的關(guān)鍵字,在XML文件中查詢與關(guān)鍵字匹配的協(xié)議匹配對象的標(biāo)識,根據(jù)查找到的標(biāo)識獲取對應(yīng)的已加載到內(nèi)存中的協(xié)議匹配對象。系統(tǒng)可在啟動時加載預(yù)先定義的多個類型的協(xié)議匹配對象的類,并生成相應(yīng)的協(xié)議匹配對象,存儲在內(nèi)存中,生成的協(xié)議匹配對象即具有相應(yīng)的標(biāo)識。系統(tǒng)也可在啟動后動態(tài)地加載多個類型的協(xié)議匹配對象的類。
例如,在通訊報文中查詢到關(guān)鍵字“device”,根據(jù)該關(guān)鍵字在XML文件中查找到對應(yīng)的協(xié)議匹配對象的標(biāo)識如“device 1-4”,其中包含了關(guān)鍵字“device”,再根據(jù)該協(xié)議匹配標(biāo)識獲取對應(yīng)的已加載到內(nèi)存中的協(xié)議匹配對象。這里的關(guān)鍵字匹配可以包含多種情況,可以是在關(guān)鍵字與協(xié)議匹配對象的標(biāo)識完全相同時判定為匹配;也可以設(shè)定一定的百分比閾值,超過設(shè)定的閾值時判定為匹配,如關(guān)鍵字與協(xié)議匹配對象的標(biāo)識的字符串的相似度為80%,設(shè)定的閾值為70%,此時即認(rèn)為匹配成功。根據(jù)關(guān)鍵字匹配查找對應(yīng)的協(xié)議匹配對象,可以快速地檢測到相應(yīng)的協(xié)議匹配對象,提高處理效率。
步驟S210:加載新增的業(yè)務(wù)模塊,獲取所述新增的業(yè)務(wù)模塊的業(yè)務(wù)模塊調(diào)用接口,獲取輸入的與所述新增的業(yè)務(wù)模塊對應(yīng)的業(yè)務(wù)標(biāo)識和業(yè)務(wù)類型,將所述新增的業(yè)務(wù)模塊調(diào)用接口以及與所述新增的業(yè)務(wù)模塊對應(yīng)的業(yè)務(wù)標(biāo)識和業(yè)務(wù)類型存儲在所述XML中。
在本實施例中,增加新的業(yè)務(wù)模塊時,獲取所述新增的業(yè)務(wù)模塊的業(yè)務(wù)模塊調(diào)用接口,獲取輸入的與新增的業(yè)務(wù)模塊對應(yīng)的業(yè)務(wù)標(biāo)識和業(yè)務(wù)類型,將新增的業(yè)務(wù)模塊調(diào)用接口以及與新增的業(yè)務(wù)模塊對應(yīng)的業(yè)務(wù)標(biāo)識和業(yè)務(wù)類型存儲在所述XML中。在調(diào)用業(yè)務(wù)模塊接口時,在XML文件中查詢到已加載到內(nèi)存中的與業(yè)務(wù)標(biāo)識和業(yè)務(wù)類型匹配的業(yè)務(wù)模塊調(diào)用接口時,調(diào)用查找到的業(yè)務(wù)模塊調(diào)用接口,這里的業(yè)務(wù)模塊調(diào)用接口可以是函數(shù)或者鏈接等多種類型。
例如,仍以上述業(yè)務(wù)標(biāo)識“device”為例,需要添加輸出數(shù)據(jù)的業(yè)務(wù)模塊,假設(shè)為“print”函數(shù),只需要在預(yù)先XML文件中寫入對應(yīng)的業(yè)務(wù)標(biāo)識“device”和業(yè)務(wù)類型“print”,在接收到通訊報文時,從XML文件中查詢到業(yè)務(wù)標(biāo)識“device”和業(yè)務(wù)類型“print”對應(yīng)的業(yè)務(wù)模塊調(diào)用接口,將需要處理的數(shù)據(jù)對象“data”發(fā)送至業(yè)務(wù)模塊“print”函數(shù)即可。新增加或者刪除協(xié)議匹配對象和業(yè)務(wù)模塊時,都只需要在XML文件中進(jìn)行添加或者刪除相應(yīng)的指令,而不需要對整個處理程序進(jìn)行大幅度的改動,從而降低業(yè)務(wù)模塊之間的耦合度,提高程序的可擴(kuò)展性。
步驟S212:根據(jù)所述業(yè)務(wù)標(biāo)識和所述業(yè)務(wù)類型查找對應(yīng)的業(yè)務(wù)模塊調(diào)用接口,將所述數(shù)據(jù)對象傳遞至所述業(yè)務(wù)模塊調(diào)用接口進(jìn)行處理。
在本實施例中,對通訊報文的業(yè)務(wù)處理需要通過調(diào)用對應(yīng)已加載到內(nèi)存中的業(yè)務(wù)模塊接口,并將數(shù)據(jù)對象傳遞到業(yè)務(wù)模塊調(diào)用接口進(jìn)行處理。例如,通訊報文中指示需要將設(shè)備1中的數(shù)據(jù)刪除,其中的關(guān)鍵字為“device”,對應(yīng)的協(xié)議匹配對象獲取其中的業(yè)務(wù)標(biāo)識為“device”,業(yè)務(wù)類型為“delete”,數(shù)據(jù)對象為“data”。此時,根據(jù)業(yè)務(wù)標(biāo)識和業(yè)務(wù)類型查找到對應(yīng)的業(yè)務(wù)模塊調(diào)用接口,假設(shè)為調(diào)用函數(shù)“DELETE”,將數(shù)據(jù)對象“data”傳遞至函數(shù)“DELETE”進(jìn)行處理。
在本實施例中,仍以上述刪除好友為例,例如業(yè)務(wù)標(biāo)識為ms.person.friend.delete,協(xié)議版本為v1.0.0,調(diào)用類為好友類,調(diào)用函數(shù)為刪除,優(yōu)先值為10,此時接收消息隊列發(fā)送的消息即為觸發(fā)好友類的刪除操作。如果協(xié)議發(fā)生了升級(通訊時會上報協(xié)議版本),如新版本的app刪除好友的同時抹掉與好友有關(guān)的痕跡,舊版本功能不變,此時只需要在XML增加另一個配置,如:業(yè)務(wù)標(biāo)識為ms.person.friend.delete,協(xié)議版本為v1.1.0,調(diào)用類為好友類,調(diào)用函數(shù)為刪除增強(qiáng)版,優(yōu)先值為10,即可完成功能的擴(kuò)展。
如果有定制需求,如該社交軟件需要定制版本給某大型公司內(nèi)部使用,該公司要求只能刪除不屬于公司員工的好友,傳統(tǒng)的做法是,復(fù)制一份代碼,修改刪除好友功能,弊端是如果定制版發(fā)現(xiàn)增加好友的功能有問題,原來標(biāo)準(zhǔn)版本的代碼也需要修改。標(biāo)準(zhǔn)版本增加的新功能,定制版本無法自動增加。這樣做的項目越多,代碼就越混亂,維護(hù)成本高。而在本發(fā)明實施例中,只需要增加一個功能包,功能包里也有一個XML,加上定制的刪除好友內(nèi)容,如:業(yè)務(wù)標(biāo)識為ms.person.friend.delete,協(xié)議版本為v1.1.0,調(diào)用類為功能包好友類,調(diào)用函數(shù)為功能包刪除,優(yōu)先值為9,同時在功能包中加上功能包好友類和功能包刪除函數(shù)。故只需要加入這個功能包,刪除好友的操作執(zhí)行的就是附加功能包中的操作,而不是原來主功能包中的操作,從而實現(xiàn)功能包形式的擴(kuò)展性。
在一個實施例中,如附圖3所示,為一個實施例中一種業(yè)務(wù)系統(tǒng)的協(xié)議解析裝置的示意圖,其中,服務(wù)器啟動時初始化協(xié)議匹配掃描器,加載所有的協(xié)議匹配對象,在接收到通訊報文時,根據(jù)通訊報文中說明的協(xié)議標(biāo)識,生成相應(yīng)的請求調(diào)度器。請求調(diào)度器將通訊報文傳輸給協(xié)議轉(zhuǎn)換器,協(xié)議轉(zhuǎn)換器將通訊報文發(fā)送給協(xié)議匹配命中器。協(xié)議匹配命中器調(diào)用協(xié)議匹配掃描器,掃描所有的協(xié)議匹配器,并返回命中的業(yè)務(wù)標(biāo)識和業(yè)務(wù)類型。協(xié)議轉(zhuǎn)換匹配器根據(jù)業(yè)務(wù)標(biāo)識找到對應(yīng)的協(xié)議轉(zhuǎn)換器,轉(zhuǎn)換通訊報文成為數(shù)據(jù)對象返回給請求調(diào)度器。請求調(diào)度器根據(jù)業(yè)務(wù)標(biāo)識、業(yè)務(wù)類型及數(shù)據(jù)對象啟動主處理器,完成通訊報文的解析。根據(jù)以上步驟,通訊協(xié)議的增減只需要增減相應(yīng)的協(xié)議匹配對象,所有的邏輯、流程都無需做任何的改動,實現(xiàn)高可擴(kuò)展性。
在一個實施例中,如附圖4所示,為一個實施例中一種業(yè)務(wù)系統(tǒng)的協(xié)議解析裝置的示意圖,其中,請求調(diào)度器根據(jù)業(yè)務(wù)標(biāo)識、業(yè)務(wù)類型及數(shù)據(jù)對象啟動主處理器之后,主處理器在列表中查詢業(yè)務(wù)標(biāo)識對應(yīng)的處理類型,調(diào)用處理調(diào)度器。處理調(diào)度器會掃描所有標(biāo)注的處理類和處理方法,找到標(biāo)記相應(yīng)處理類型的方法,將業(yè)務(wù)標(biāo)識、數(shù)據(jù)對象用處理類型定義的方式傳遞給業(yè)務(wù)模塊調(diào)用接口。業(yè)務(wù)模塊調(diào)用接口根據(jù)業(yè)務(wù)標(biāo)識和業(yè)務(wù)類型自動選擇相應(yīng)的業(yè)務(wù)處理模塊,進(jìn)行具體業(yè)務(wù)的處理。
此外,在一個實施例中,還提出了一種業(yè)務(wù)系統(tǒng)的協(xié)議解析裝置,如圖5所示,上述業(yè)務(wù)系統(tǒng)的協(xié)議解析裝置包括協(xié)議匹配對象查找單元102,通訊報文解析單元104,數(shù)據(jù)對象生成單元106,業(yè)務(wù)模塊調(diào)用單元108,協(xié)議匹配對象添加單元110,業(yè)務(wù)模塊添加單元112,其中:
協(xié)議匹配對象查找單元102,用于在接收到通訊報文時,查找與所述接收到的通訊報文匹配的協(xié)議匹配對象;
通訊報文解析單元104,用于通過所述協(xié)議匹配對象中預(yù)定義的函數(shù)返回與所述通訊報文對應(yīng)的業(yè)務(wù)標(biāo)識和業(yè)務(wù)類型;
數(shù)據(jù)對象生成單元106,用于根據(jù)所述通訊報文生成數(shù)據(jù)對象;
業(yè)務(wù)模塊調(diào)用單元108,用于根據(jù)所述業(yè)務(wù)標(biāo)識和所述業(yè)務(wù)類型查找對應(yīng)的業(yè)務(wù)模塊調(diào)用接口,將所述數(shù)據(jù)對象傳遞至所述業(yè)務(wù)模塊調(diào)用接口進(jìn)行處理。
可選的,所述裝置還包括協(xié)議匹配對象添加單元110,用于:
加載新增的協(xié)議匹配對象,獲取所述新增的協(xié)議匹配對象的標(biāo)識;
獲取輸入的與所述協(xié)議匹配對象對應(yīng)的關(guān)鍵字,將所述新增的協(xié)議匹配對象的標(biāo)識以及與所述新增的協(xié)議匹配對象對應(yīng)的關(guān)鍵字存儲在XML文件中。
可選的,所述協(xié)議匹配對象查找單元102還用于:
獲取所述接收到的通訊報文中的關(guān)鍵字;
在所述XML文件中查詢與所述關(guān)鍵字匹配的協(xié)議匹配對象的標(biāo)識,根據(jù)所述標(biāo)識獲取對應(yīng)的協(xié)議匹配對象。
可選的,所述裝置還包括業(yè)務(wù)模塊添加單元112:
加載新增的業(yè)務(wù)模塊,獲取所述新增的業(yè)務(wù)模塊的業(yè)務(wù)模塊調(diào)用接口;
獲取輸入的與所述新增的業(yè)務(wù)模塊對應(yīng)的業(yè)務(wù)標(biāo)識和業(yè)務(wù)類型,將所述新增的業(yè)務(wù)模塊調(diào)用接口以及與所述新增的業(yè)務(wù)模塊對應(yīng)的業(yè)務(wù)標(biāo)識和業(yè)務(wù)類型存儲在所述XML文件中。
可選的,所述業(yè)務(wù)模塊調(diào)用單元108還用于:
在所述XML文件中查詢到與所述業(yè)務(wù)標(biāo)識和所述業(yè)務(wù)類型匹配的業(yè)務(wù)模塊調(diào)用接口時,調(diào)用查找到的業(yè)務(wù)模塊調(diào)用接口。
本發(fā)明實施例中通過查找與接收到的通訊報文匹配的協(xié)議匹配對象,根據(jù)協(xié)議匹配對象中預(yù)定義的函數(shù)返回與通訊報文對應(yīng)的業(yè)務(wù)標(biāo)識和業(yè)務(wù)類型,并根據(jù)通訊報文生成數(shù)據(jù)對象,將數(shù)據(jù)對象傳遞至與業(yè)務(wù)標(biāo)識和業(yè)務(wù)類型對應(yīng)的業(yè)務(wù)模塊調(diào)用接口進(jìn)行處理,采用XML文件格式保存協(xié)議匹配對象和業(yè)務(wù)模塊調(diào)用接口,使得在對處理程序進(jìn)行修改時,只需要改動XML文件中對應(yīng)的模塊;同時,在增加或者刪除業(yè)務(wù)模塊時,只需要添加或者刪除相應(yīng)的XML文件,而不必對整個業(yè)務(wù)處理程序進(jìn)行改動,從而降低業(yè)務(wù)模塊之間的耦合度,提高程序的可擴(kuò)展性。
在一個實施例中,如圖6所示,圖6展示了一種運(yùn)行上述業(yè)務(wù)系統(tǒng)的協(xié)議解析方法的基于馮諾依曼體系的計算機(jī)系統(tǒng)的終端10。該計算機(jī)系統(tǒng)可以是智能手機(jī)、平板電腦、掌上電腦、筆記本電腦或個人電腦等終端設(shè)備。具體的,可包括通過系統(tǒng)總線連接的外部輸入接口1001、處理器1002、存儲器1003和輸出接口1004。其中,外部輸入接口1001可選的可至少包括網(wǎng)絡(luò)接口10012。存儲器1003可包括外存儲器10032(例如硬盤、光盤或軟盤等)和內(nèi)存儲器10034。輸出接口1004可至少包括顯示屏10042等設(shè)備。且所述處理器1002還用于執(zhí)行上述業(yè)務(wù)系統(tǒng)的協(xié)議解析方法,包括:
在接收到通訊報文時,查找與所述接收到的通訊報文匹配的協(xié)議匹配對象;
通過所述協(xié)議匹配對象中預(yù)定義的函數(shù)返回與所述通訊報文對應(yīng)的業(yè)務(wù)標(biāo)識和業(yè)務(wù)類型;
根據(jù)所述通訊報文生成數(shù)據(jù)對象;
根據(jù)所述業(yè)務(wù)標(biāo)識和所述業(yè)務(wù)類型查找對應(yīng)的業(yè)務(wù)模塊調(diào)用接口,將所述數(shù)據(jù)對象傳遞至所述業(yè)務(wù)模塊調(diào)用接口進(jìn)行處理。
可選的,在所述查找與所述接收到的通訊報文匹配的協(xié)議匹配對象之前,還包括:
加載新增的協(xié)議匹配對象,獲取所述新增的協(xié)議匹配對象的標(biāo)識;
獲取輸入的與所述協(xié)議匹配對象對應(yīng)的關(guān)鍵字,將所述新增的協(xié)議匹配對象的標(biāo)識以及與所述新增的協(xié)議匹配對象對應(yīng)的關(guān)鍵字存儲在XML文件中。
可選的,所述查找與所述接收到的通訊報文匹配的協(xié)議匹配對象包括:
獲取所述接收到的通訊報文中的關(guān)鍵字;
在所述XML文件中查詢與所述關(guān)鍵字匹配的協(xié)議匹配對象的標(biāo)識,根據(jù)所述標(biāo)識獲取對應(yīng)的協(xié)議匹配對象。
可選的,所述方法還包括:
加載新增的業(yè)務(wù)模塊,獲取所述新增的業(yè)務(wù)模塊的業(yè)務(wù)模塊調(diào)用接口;
獲取輸入的與所述新增的業(yè)務(wù)模塊對應(yīng)的業(yè)務(wù)標(biāo)識和業(yè)務(wù)類型,將所述新增的業(yè)務(wù)模塊調(diào)用接口以及與所述新增的業(yè)務(wù)模塊對應(yīng)的業(yè)務(wù)標(biāo)識和業(yè)務(wù)類型存儲在所述XML文件中。
可選的,所述根據(jù)所述業(yè)務(wù)標(biāo)識和所述業(yè)務(wù)類型查找對應(yīng)的業(yè)務(wù)模塊調(diào)用接口包括:
在所述XML文件中查詢到與所述業(yè)務(wù)標(biāo)識和所述業(yè)務(wù)類型匹配的業(yè)務(wù)模塊調(diào)用接口時,調(diào)用查找到的業(yè)務(wù)模塊調(diào)用接口。
在本實施例中,本方法的運(yùn)行基于計算機(jī)程序,該計算機(jī)程序的程序文件存儲于前述基于馮諾依曼體系的計算機(jī)系統(tǒng)10的外存儲器10032中,在運(yùn)行時被加載到內(nèi)存儲器10034中,然后被編譯為機(jī)器碼之后傳遞至處理器1002中執(zhí)行,從而使得基于馮諾依曼體系的計算機(jī)系統(tǒng)10中形成邏輯上的協(xié)議匹配對象查找單元102,通訊報文解析單元104,數(shù)據(jù)對象生成單元106,業(yè)務(wù)模塊調(diào)用單元108,協(xié)議匹配對象添加單元110,業(yè)務(wù)模塊添加單元112。且在業(yè)務(wù)系統(tǒng)的協(xié)議解析方法執(zhí)行過程中,輸入的參數(shù)均通過外部輸入接口1001接收,并傳遞至存儲器1003中緩存,然后輸入到處理器1002中進(jìn)行處理,處理的結(jié)果數(shù)據(jù)或緩存于存儲器1003中進(jìn)行后續(xù)地處理,或被傳遞至輸出接口1004進(jìn)行輸出。
以上所揭露的僅為本發(fā)明較佳實施例而已,當(dāng)然不能以此來限定本發(fā)明之權(quán)利范圍,因此依本發(fā)明權(quán)利要求所作的等同變化,仍屬本發(fā)明所涵蓋的范圍。