專利名稱::一種實現(xiàn)多協(xié)議接入的方法及接口平臺的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及接口平臺
技術(shù)領(lǐng)域:
,尤其涉及一種實現(xiàn)多協(xié)議接入的方法及接口平臺。
背景技術(shù):
:隨著電信行業(yè)的快速發(fā)展,所需要的軟件規(guī)模越來越大,各模塊間的接口協(xié)議越來越多,結(jié)構(gòu)越來越復雜。開發(fā)人員要在處理業(yè)務的同時,還要處理所需要的協(xié)議,而對協(xié)議理解的不全面,或理解有出入,往往使開發(fā)出來的程序與另一方的對接出現(xiàn)問題。另外,不同的項目,往往用到相同的協(xié)議,而目前的情況是,需要每個項目都對協(xié)議加以實現(xiàn),這樣,既造成了資源、人力的浪費,且質(zhì)量也不高。通用接口平臺就是將各種協(xié)議集中起來,加以實現(xiàn),面向開發(fā)人員,是開發(fā)人員實現(xiàn)具體業(yè)務的一個平臺。通用接口平臺為開發(fā)人員提供統(tǒng)一的接口,即將協(xié)議轉(zhuǎn)換為業(yè)務所理解的消息結(jié)構(gòu)。中國專利CN03157824及國外專利US2008021963均提出對多協(xié)議的支持,但都是僅限于幾種固定協(xié)議的支持,而且這些協(xié)議結(jié)構(gòu)都是很相近的,且面向的是產(chǎn)品。針對以上現(xiàn)有技術(shù)中存在的不足,有必要提供一種實現(xiàn)多協(xié)議接入的解決方案,能夠支持多種協(xié)議,并能夠使業(yè)務服務器無需處理各種協(xié)議即可完成相應的業(yè)務功育b。
發(fā)明內(nèi)容本發(fā)明要解決的技術(shù)問題是提供一種實現(xiàn)多協(xié)議接入的方法及接口平臺,提供各種協(xié)議的簡單、易于實現(xiàn)的接口。為了解決上述問題,本發(fā)明提供了一種實現(xiàn)多協(xié)議接入的接口平臺,包括控制模塊、協(xié)議模塊,資源庫,每種協(xié)議對應至少一個協(xié)議模塊,其中所述控制模塊用于,接收到傳輸控制協(xié)議/網(wǎng)際協(xié)議(TCP/IP)傳輸?shù)膮f(xié)議消息后,根據(jù)所述協(xié)議消息的協(xié)議類型轉(zhuǎn)發(fā)給相應的協(xié)議模塊;所述協(xié)議模塊用于,將所述協(xié)議消息轉(zhuǎn)換成內(nèi)部消息發(fā)送給業(yè)務模塊,并將業(yè)務模塊回復的內(nèi)部消息轉(zhuǎn)換成相應的協(xié)議消息,發(fā)送到TCP/IP;所述資源庫用于,保存相關(guān)的協(xié)議信息。進一步地,所述控制模塊還用于,負責鏈路的建立和斷開,并將建立的鏈路依序分配給多個協(xié)議模塊負責。進一步地,所述業(yè)務模塊用于,向所述協(xié)議模塊發(fā)送注冊消息,該注冊消息中包含命令碼值,及該命令碼值所對應的內(nèi)部結(jié)構(gòu)表示和外部碼流表示;所述協(xié)議模塊用于,將所述注冊消息中的內(nèi)容保存在業(yè)務注冊表中,在接收到所述協(xié)議消息后,如果在所述業(yè)務注冊表中查詢到所述命令碼值,則將所述協(xié)議消息轉(zhuǎn)換成所述命令碼值所對應的內(nèi)部結(jié)構(gòu)表示的所述內(nèi)部消息;在接收到所述業(yè)務模塊發(fā)送的內(nèi)部消息后,根據(jù)所述命令碼值將其轉(zhuǎn)換成對應的外部碼流表示的協(xié)議消息,發(fā)送到TCP/IP。進一步地,所述協(xié)議模塊用于,在接收到所述協(xié)議消息后,如果未能在所述業(yè)務注冊表中查詢到相應內(nèi)容,則丟棄所述協(xié)議消息。進一步地,所述協(xié)議模塊用于,將所述協(xié)議消息轉(zhuǎn)換成所述內(nèi)部消息后,在所述內(nèi)部消息體中攜帶協(xié)議類型及所述命令碼值的信息。此外,本發(fā)明還提供了一種實現(xiàn)多協(xié)議接入的方法,應用于支持多協(xié)議接入的接口平臺,包括接口平臺接收到TCP/IP傳輸?shù)膮f(xié)議消息后,將所述協(xié)議消息轉(zhuǎn)換成內(nèi)部消息發(fā)送給業(yè)務模塊;所述業(yè)務才莫塊根據(jù)所述內(nèi)部消息完成業(yè)務處理流程后,回復內(nèi)部消息給接口平臺;所述接口平臺接收到所迷內(nèi)部消息后,轉(zhuǎn)換成相應的協(xié)議消息發(fā)送到TCP/IP。進一步地,所述接口平臺通過多個協(xié)議線程實現(xiàn)多協(xié)議接入,其中,實現(xiàn)對每一種協(xié)議的支持具體包括在所述接口平臺中配置支持該協(xié)議的信息;在所述接口平臺中保存支持該協(xié)議的一個或多個協(xié)議線程的信息;以及,在所述接口平臺中保存各協(xié)議線程所負責的鏈路的信息。進一步地,所述方法還包4舌所述業(yè)務模塊向所述接口平臺發(fā)送注冊消息,該注冊消息中包含命令碼值,及該命令碼值所對應的內(nèi)部結(jié)構(gòu)表示和外部碼流表示;所述接口平臺接收到所述注冊消息后,將所述注冊消息中的內(nèi)容保存在業(yè)務注冊表中,在接收到所述協(xié)議消息后,如果在所述業(yè)務注冊表中查詢到所述命令碼值,則將所述協(xié)議消息轉(zhuǎn)換成所述命令碼值所對應的內(nèi)部結(jié)構(gòu)表示的所述內(nèi)部消息;在接收到所述業(yè)務模塊發(fā)送的內(nèi)部消息后,根據(jù)所述命令碼值將其轉(zhuǎn)換成對應的外部碼流表示的協(xié)議消息,發(fā)送到TCP/IP。進一步地,所述接口平臺在接收到所述協(xié)議消息后,如果未能在所述業(yè)務注冊表中查詢到相應內(nèi)容,則丟棄所述協(xié)議消息。進一步地,所述接口平臺^奪所述協(xié)議消息轉(zhuǎn)換成所述內(nèi)部消息后,在所述內(nèi)部消息體中攜帶協(xié)議類型及所述命令碼值的信息。本發(fā)明具有如下有益效果為開發(fā)人員提供統(tǒng)一的接口,使開發(fā)人員從繁瑣的協(xié)議中解脫出來,專注于業(yè)務模塊的開發(fā),提高開發(fā)效率,降低開發(fā)成本,增加程序的健壯性。圖1為本發(fā)明實施例的通用接口平臺的組成示意圖2為基于本發(fā)明通用4姿口平臺的分布結(jié)構(gòu)圖3為本發(fā)明實施例的實現(xiàn)多協(xié)議接入的流程示意圖;圖4為平臺的協(xié)議模塊消息轉(zhuǎn)換處理的示意圖;圖5為平臺內(nèi)數(shù)據(jù)流格式的示意圖。具體實施例方式如圖l所示,本發(fā)明實施例的實現(xiàn)多協(xié)議接入的接口平臺(下文中也簡稱作平臺)主要包括控制模塊、協(xié)議模塊和資源庫。其中,各模塊實現(xiàn)的主要功能如下控制模塊用于,負責鏈路的控制,包括鏈路的建立和斷開、多條^0各在多協(xié)議線程中的分配;以及,將TCP/IP(TransferControlProtocol/InternetProtocol,傳輸控制協(xié)議/網(wǎng)際協(xié)議)傳輸?shù)膮f(xié)議消息轉(zhuǎn)發(fā)給協(xié)議模塊;協(xié)議模塊用于,完成鏈路的初始化,綁定消息的發(fā)送和接收、心跳消息的發(fā)送和接收等;以及,消息的轉(zhuǎn)換功能,包括將各種協(xié)議消息轉(zhuǎn)換成采用業(yè)務模塊所需要的內(nèi)部結(jié)構(gòu)體表示的內(nèi)部消息,并將轉(zhuǎn)換好的內(nèi)部消息發(fā)送給業(yè)務模塊,反之,將業(yè)務發(fā)過來的內(nèi)部消息轉(zhuǎn)換成相應的協(xié)議消息,再發(fā)送給TCP/IP,通過鏈路傳輸?shù)綄Χ?。資源庫則主要用于保存一些公共信息,如平臺相關(guān)的一些協(xié)議信息、線程運行信息(如函數(shù)和數(shù)據(jù)結(jié)構(gòu)等)、鏈路信息等。其中,控制模塊、各協(xié)議模塊和各業(yè)務模塊均與資源庫相連,各^f莫塊在運行時需要資源庫中保存的函數(shù)和數(shù)據(jù)。通過以上實施方案的通用接口平臺,使業(yè)務模塊無需再處理各種協(xié):議,可直接使用內(nèi)部結(jié)構(gòu)體進行數(shù)據(jù)的收發(fā)。進一步地,業(yè)務模塊通過向平臺注冊消息(包括命令標識和消息結(jié)構(gòu)),使平臺了解業(yè)務模塊所需要的信息;協(xié)議模塊根據(jù)業(yè)務模塊的注冊情況,將協(xié)議消息轉(zhuǎn)換成業(yè)務模塊所要求的格式的內(nèi)部結(jié)構(gòu)表示的內(nèi)部消息(本文中也稱作內(nèi)部結(jié)構(gòu)體),并將轉(zhuǎn)換后的內(nèi)部結(jié)構(gòu)體轉(zhuǎn)發(fā)給業(yè)務模塊;對于沒有注冊的消息,平臺會直接丟棄。7圖2示出了本發(fā)明一個應用實例的通用接口平臺的分布結(jié)構(gòu)示意圖,該通用接口平臺可同時支持多種協(xié)議,如smpp,diameter,及擴展的協(xié)議等。如圖2所示,該通用接口平臺是建立在多協(xié)議、多線程、多鏈路基礎(chǔ)上的,每種協(xié)議由至少一個協(xié)議線程(也簡稱作線程)支持,而每個線程又負責多條鏈路。從物理結(jié)構(gòu)來看,平臺的資源庫相當于一個動態(tài)鏈接庫,其中包括了整個進程入口函數(shù)和輔助線程的入口函數(shù)。對于每一種協(xié)議而言,都有一個動態(tài)庫與其對應,這樣,平臺增加對某種協(xié)議的支持時就很方便,只需編寫一種支持該協(xié)議的動態(tài)庫。擴展的各種協(xié)議都可以在該平臺架構(gòu)上實現(xiàn)。另夕卜,每種業(yè)務也只有一個動態(tài)庫與其對應,平臺可以啟動同一種協(xié)議的多個業(yè)務線程。以下對接口平臺實現(xiàn)對某種協(xié)議的支持的具體操作過程加以說明。本發(fā)明應用示例中,協(xié)議線程與業(yè)務線程的通信結(jié)構(gòu)如下表所示<table>tableseeoriginaldocumentpage8</column></row><table>其中,各字段說明如下①鏈路信息索引值當協(xié)議模塊發(fā)送內(nèi)部消息到業(yè)務模塊時,此字段為源socket(套接字)的索引值,即代表消息是從哪個鏈路發(fā)過來的;當業(yè)務模塊發(fā)送內(nèi)部消息給協(xié)議模塊時,此字段為目的socket的索引值,即代表消息將要發(fā)送到哪個鏈路;②協(xié)議類型此字段在協(xié)議模塊發(fā)送內(nèi)部消息到業(yè)務模塊時起作用;③命令碼值此字段用于使業(yè)務模塊知道本條消息的作用,即進行何種業(yè)務處理;④擴展命令碼值在某些協(xié)議中,一個命令碼值不足以區(qū)分消息的作用,或請求與應答的命令碼值相同,故可以加入此字段,以達到區(qū)分相同協(xié)議,不同消息的作用;⑤序列號此字段用于將請求與應答對應起來,在請求消息和應答消息中,此字段必須相同;其中,①-⑤為消息頭。⑥為平臺內(nèi)部的控制消息,在此消息頭后面為消息體,由外部碼流轉(zhuǎn)換而來,其長度不固定。具體的操作步驟如下步驟一、以固定的接口編寫入口函數(shù);例如voidmainProc(UINT8far*lpMsg,UINT8far*lpNULLO,UINT8far*lpNULLl);步驟二、當平臺初始化完畢后,會向各模塊(控制模塊、協(xié)議模塊和業(yè)務模塊)發(fā)送初始化完畢的消息,協(xié)議模塊可以在這個消息里面完成自己的初始化;步驟三、控制模塊會在鏈路建立后,向負責此鏈路的協(xié)議線程發(fā)送鏈路建立成功的消息;業(yè)務線程也會向協(xié)議線程發(fā)送注冊消息。當這兩個消息都到達后,如果協(xié)議需要,協(xié)議線程可以根據(jù)注冊信息,向剛建立的這條鏈路發(fā)送綁定消息;步驟四、根據(jù)協(xié)議需要,設置定時器,定期向鏈路發(fā)送心跳消息,或在接收到心跳請求時返回心跳應答;步驟五、編寫將外部碼流轉(zhuǎn)換成內(nèi)部消息代碼,將外部碼流轉(zhuǎn)換成業(yè)務才莫塊所需要的結(jié)構(gòu),并附在消息頭(①-⑤)后面,填寫消息頭中①-⑤的數(shù)據(jù),發(fā)送給業(yè)務模塊;步驟六、編寫內(nèi)部消息轉(zhuǎn)換成外部碼流的代碼,將消息體⑥轉(zhuǎn)換成外部碼流后,將外部碼流發(fā)送到鏈路信息索引值①中所對應的鏈路。圖3示出了本發(fā)明實施例的支持多協(xié)議接入的程序流程,平臺主程序啟動后,從配置文件中讀取協(xié)議、線程及鏈路信息,并根據(jù)這些信息從資源庫中讀取相關(guān)協(xié)議的入口函數(shù)并創(chuàng)建線程,初始化數(shù)據(jù)。其具體流程如下步驟301、302:進程啟動后,各業(yè)務線程(各協(xié)議模塊的功能由支持該協(xié)議的至少一個線程實現(xiàn))主動為其管理的每條鏈路建鏈,例如,smpp協(xié)議模塊發(fā)送connect消息到TCP/IP;步驟303、308:業(yè)務線程啟動后,向協(xié)議線程注冊,注冊內(nèi)容包括命令碼值(cmd),及與此碼值所對應的內(nèi)部結(jié)構(gòu)表示(instruct)和外部碼流表示;其中,結(jié)合圖4和圖5,協(xié)議線程與業(yè)務線程間使用內(nèi)部結(jié)構(gòu)表示,TCP/IP與協(xié)議線程間使用外部碼流表示;業(yè)務模塊與smpp協(xié)議模塊之間采用內(nèi)部結(jié)構(gòu)體1,與diameter協(xié)議模塊之間采用內(nèi)部結(jié)構(gòu)體2;smpp協(xié)議模塊與TCP/IP之間采用smpp消息流,diameter協(xié)議模塊與TCP/IP之間采用diameter消息流。步驟304、309:初始化協(xié)議線程運行所需要的數(shù)據(jù),例如smpp協(xié)議綁定所需要的用戶名,密碼及心跳時間等信息;步驟305、310:業(yè)務線程通知協(xié)議線程初始化完畢(Inkfinish);步驟306、311上述步驟完成后,協(xié)議線程會在以下兩個條件一、物理鏈路已經(jīng)建立;二、業(yè)務線程已經(jīng)完成初始化,都滿足的情況下,向鏈路發(fā)送綁定消息,進行用戶身份校驗;步驟307、312:TCP/IP返回綁定應答消息(bindrsp);至此,業(yè)務層的連接已經(jīng)建立,并開始心跳計時。步驟313-316:在步驟307或步驟312開始計時后,到達步驟304中所初始化的心跳時間后,協(xié)議線程向TCP/IP發(fā)送與各種協(xié)議所對應的心跳消自步驟317:當協(xié)議線程收到TCP/IP發(fā)來的消息后,首先對消息進行解碼,并根據(jù)命令碼值(如smpp協(xié)議的COMMANDJD)判斷是不是心跳消息或其它鏈路維護消息,若是,則協(xié)議線程直接按現(xiàn)有流程進行相應處理;否貝寸,協(xié)議線程將查詢業(yè)務注冊表(步驟303中),如果查到TCP發(fā)來的外部消息中包含的命令碼值,則根據(jù)該命令碼值對應的內(nèi)部結(jié)構(gòu)表示和外部碼流表示,將消息體轉(zhuǎn)換成業(yè)務所需要的內(nèi)部結(jié)構(gòu)體消息,并執(zhí)行下一步;步驟318:協(xié)議線程在內(nèi)部消息體前加上消息頭,包括協(xié)議類型、命令碼值、源socket—id等信息,輪詢發(fā)送給業(yè)務線程;步驟319:業(yè)務線程對消息處理完后,根據(jù)路由信息,填寫目的socket—id,并發(fā)送到指定的協(xié)議線程;步驟320:協(xié)議線程收到業(yè)務線程的消息后,再根據(jù)命令碼值將其轉(zhuǎn)換成對應的外部碼流表示的協(xié)議消息,發(fā)送給TCP/IP。上述實施方案是對本發(fā)明的具體應用進行舉例,應當理解的是,對本發(fā)明技術(shù)所在領(lǐng)域的普通技術(shù)人員來說,在實際應用中還可以根據(jù)本發(fā)明的技術(shù)方案及其構(gòu)思進行相應的等同改變或替換,而所有這些改變或替換,都應屬于本發(fā)明所附權(quán)利要求的保護范圍。ii權(quán)利要求1、一種實現(xiàn)多協(xié)議接入的接口平臺,其特征在于,包括控制模塊、協(xié)議模塊,資源庫,每種協(xié)議對應至少一個協(xié)議模塊,其中所述控制模塊用于,接收到傳輸控制協(xié)議/網(wǎng)際協(xié)議(TCP/IP)傳輸?shù)膮f(xié)議消息后,根據(jù)所述協(xié)議消息的協(xié)議類型轉(zhuǎn)發(fā)給相應的協(xié)議模塊;所述協(xié)議模塊用于,將所述協(xié)議消息轉(zhuǎn)換成內(nèi)部消息發(fā)送給業(yè)務模塊,并將業(yè)務模塊回復的內(nèi)部消息轉(zhuǎn)換成相應的協(xié)議消息,發(fā)送到TCP/IP;所述資源庫用于,保存相關(guān)的協(xié)議信息。2、如權(quán)利要求l所述的平臺,其特征在于,所述控制模塊還用于,負責鏈路的建立和斷開,并將建立的鏈路依序分配給多個協(xié)議模塊負責。3、如權(quán)利要求l所述的平臺,其特征在于,所述業(yè)務模塊用于,向所述協(xié)議模塊發(fā)送注冊消息,該注冊消息中包含命令碼值,及該命令碼值所對應的內(nèi)部結(jié)構(gòu)表示和外部碼流表示;所述協(xié)議模塊用于,將所述注冊消息中的內(nèi)容保存在業(yè)務注冊表中,在接收到所述協(xié)議消息后,如果在所述業(yè)務注冊表中查詢到所述命令碼值,則將所述協(xié)議消息轉(zhuǎn)換成所述命令碼值所對應的內(nèi)部結(jié)構(gòu)表示的所述內(nèi)部消息;在接收到所述業(yè)務模塊發(fā)送的內(nèi)部消息后,根據(jù)所述命令碼值將其轉(zhuǎn)換成對應的外部碼流表示的協(xié)議消息,發(fā)送到TCP/IP。4、如權(quán)利要求3所述的平臺,其特征在于,所述協(xié)議模塊用于,在接收到所述協(xié)議消息后,如果未能在所述業(yè)務注冊表中查詢到相應內(nèi)容,則丟棄所述協(xié)議消息。5、如權(quán)利要求3或4所述的平臺,其特征在于,所述協(xié)議模塊用于,將所述協(xié)議消息轉(zhuǎn)換成所述內(nèi)部消息后,在所述內(nèi)部消息體中攜帶協(xié)議類型及所述命令碼值的信息。6、一種實現(xiàn)多協(xié)議接入的方法,應用于支持多協(xié)議接入的接口平臺,其特征在于,包括接口平臺接收到TCP/IP傳輸?shù)膮f(xié)議消息后,將所述協(xié)議消息轉(zhuǎn)換成內(nèi)部消息發(fā)送給業(yè)務模塊;所述業(yè)務模塊根據(jù)所述內(nèi)部消息完成業(yè)務處理流程后,回復內(nèi)部消息給4妾口平臺;所述接口平臺接收到所述內(nèi)部消息后,轉(zhuǎn)換成相應的協(xié)議消息發(fā)送到TCP/IP。7、如權(quán)利要求6所述的方法,其特征在于,所述接口平臺通過多個協(xié)議線程實現(xiàn)多協(xié)議接入,其中,實現(xiàn)對每一種協(xié)議的支持具體包括在所述接口平臺中配置支持該協(xié)議的信息;在所述接口平臺中保存支持該協(xié)議的一個或多個協(xié)議線程的信息;以及,在所述接口平臺中保存各協(xié)議線程所負責的鏈路的信息。8、如權(quán)利要求6或7所述的方法,其特征在于,所述方法還包括所述業(yè)務模塊向所述接口平臺發(fā)送注冊消息,該注冊消息中包含命令碼值,及該命令碼值所對應的內(nèi)部結(jié)構(gòu)表示和外部碼流表示;所述接口平臺接收到所述注冊消息后,將所述注冊消息中的內(nèi)容保存在業(yè)務注冊表中,在接收到所述協(xié)議消息后,如果在所述業(yè)務注冊表中查詢到所述命令碼值,則將所述協(xié)議消息轉(zhuǎn)換成所述命令碼值所對應的內(nèi)部結(jié)構(gòu)表示的所述內(nèi)部消息;在接收到所述業(yè)務模塊發(fā)送的內(nèi)部消息后,根據(jù)所述命令碼值將其轉(zhuǎn)換成對應的外部碼流表示的協(xié)議消息,發(fā)送到TCP/IP。9、如權(quán)利要求8所述的方法,其特征在于,所述接口平臺在接收到所述協(xié)議消息后,如果未能在所述業(yè)務注冊表中查詢到相應內(nèi)容,則丟棄所述協(xié)議消息。10、如權(quán)利要求8所述的方法,其特征在于,所述接口平臺將所述協(xié)議消息轉(zhuǎn)換成所述內(nèi)部消息后,在所述內(nèi)部消息體中攜帶協(xié)議類型及所述命令碼值的信息。全文摘要本發(fā)明公開了一種實現(xiàn)多協(xié)議接入的方法及接口平臺,該接口平臺包括控制模塊、協(xié)議模塊,資源庫,每種協(xié)議對應至少一個協(xié)議模塊,其中控制模塊用于,接收到傳輸TCP/IP傳輸?shù)膮f(xié)議消息后,根據(jù)協(xié)議消息的協(xié)議類型轉(zhuǎn)發(fā)給相應的協(xié)議模塊;協(xié)議模塊用于,將協(xié)議消息轉(zhuǎn)換成內(nèi)部消息發(fā)送給業(yè)務模塊,并將業(yè)務模塊回復的內(nèi)部消息轉(zhuǎn)換成相應的協(xié)議消息,發(fā)送到TCP/IP;資源庫用于,保存相關(guān)的協(xié)議信息。本發(fā)明提供的方法及接口平臺為開發(fā)人員提供統(tǒng)一的接口,可實現(xiàn)各種協(xié)議的接入,使開發(fā)人員從繁瑣的協(xié)議中解脫出來,專注于業(yè)務模塊的開發(fā),提高開發(fā)效率,降低開發(fā)成本,增加程序的健壯性。文檔編號H04L29/06GK101656737SQ200910172128公開日2010年2月24日申請日期2009年9月10日優(yōu)先權(quán)日2009年9月10日發(fā)明者馮亞軍,尹宏偉申請人:中興通訊股份有限公司