專利名稱:處理消息的方法和系統(tǒng)以及消息發(fā)送端和消息接收端的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信領(lǐng)域,特別涉及一種處理消息的方法和系統(tǒng)以及消息發(fā)送端和消息接收端。
背景技術(shù):
在通信系統(tǒng)中,消息發(fā)送端將發(fā)送的數(shù)據(jù)內(nèi)容以消息的形式發(fā)送出去,消息接收端將收到的消息進行解析得到數(shù)據(jù)內(nèi)容,這一過程為消息的處理過程。
消息的處理方法大致可以分為兩種基于文本的消息處理和基于二進制的消息處理。對應的分別有基于文本的傳輸,比如有可擴展標記語言(XML,eXtensible Markup Language)格式的傳輸;基于二進制傳輸,比如通用對象請求代理機構(gòu)(CORBA,Common Object Request Broker Architecture)、組件對象模型(COM,Component Object Model)、企業(yè)級Java對象(EJB,Enterprise Java Beans)等。不管是基于文本還是二進制的處理消息的方法,都需要在消息接收端進行消息的解析,而消息的解析工具更是數(shù)量繁多,比如,XML的解析工具有文檔對象模型(DOM,Document Object Model)、XML簡單訪問接口(SAX,Simple API for XML)、Java文檔對象模型(JDOM,Java Document Object Model)等等。但是現(xiàn)有的方式都有各自的缺點,下面對處理消息過程中XML解析和二進制解析的缺點分別進行描述XML處理方式XML本身是一種復雜的語言,采用XML的格式十分復雜,因此具有大量的解析工具,所以XML的解析比較復雜;另外,在采用XML解析時,往往要產(chǎn)生大量的DOM對象,使得消息處理的過程性能低下。
二進制處理方式基于二進制的方式,往往消息的處理過程取決于操作系統(tǒng)本身,較為復雜;基于二進制的解析都是局限于單一的操作系統(tǒng)平臺或單一的編程語言,對于異構(gòu)系統(tǒng)、多種編程語言無法很好的支持,例如,使用C語言編程的二進制格式,也必須采用相同的編程語言才能夠解析;同樣地,在一種操作系統(tǒng)下編程的二進制格式,也必須在相同的操作系統(tǒng)下才能夠解析。所以,二進制的處理方式不能跨平臺或跨編程語言。
在分布式應用系統(tǒng)當中,實時的數(shù)據(jù)通信和訪問是協(xié)同工作的核心,那么對消息的處理就顯得十分重要。但是現(xiàn)有的消息的處理方法并不能簡單、且跨平臺跨編程語言的完成消息的處理。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明實施例的第一個目的在于提供一種處理消息的方法,以便于能夠簡單、且跨平臺跨編程語言的完成消息的處理。
本發(fā)明實施例的第二個目的在于提供一種處理消息的系統(tǒng),以便于能夠簡單、且跨平臺跨編程語言的完成消息的處理。
本發(fā)明實施例的第三個目的在于提供一種消息發(fā)送端,以便于能夠簡單、且跨平臺跨編程語言的完成消息的處理。
本發(fā)明實施例的第四個目的在于提供一種消息接收端,以便于能夠簡單、且跨平臺跨編程語言的完成消息的處理。
為了實現(xiàn)上述第一個目的,本發(fā)明實施例提供了一種處理消息的方法,將消息進行封裝得到消息對象,使用標識Token的形式對封裝后得到的消息對象進行描述,根據(jù)描述信息對具體消息對象進行編碼發(fā)送;和/或根據(jù)描述信息將接收到的編碼后的消息解析為具體消息對象。
為了實現(xiàn)上述第二個目的,本發(fā)明實施例提供了一種處理消息的系統(tǒng),該系統(tǒng)包括描述信息生成模塊、消息發(fā)送端、以及消息接收端;描述信息生成模塊,將消息進行封裝,使用Token的形式到的消息對象進行描述,生成描述信息通知給消息發(fā)送端和消息接收端;
消息發(fā)送端,根據(jù)該描述信息對具體消息對象進行編碼后,將編碼后的消息發(fā)送給消息接收端;消息接收端,根據(jù)描述信息將接收到的編碼后的消息解析為具體消息對象。
為了實現(xiàn)上述第三個目的,本發(fā)明實施例提供了一種消息發(fā)送端,該消息發(fā)送端包括編碼單元和收發(fā)單元;所述收發(fā)單元,將收到的描述信息發(fā)送給編碼單元;接收編碼單元發(fā)送的編碼后的消息,并發(fā)送出去;所述編碼單元,根據(jù)編碼單元發(fā)送的描述信息對具體消息對象進行編碼,并將編碼后的消息發(fā)送給收發(fā)單元。
為了實現(xiàn)上述第四個目的,本發(fā)明實施例提供了一種消息接收端,該消息接收端包括收發(fā)單元和解析單元;所述收發(fā)單元,接收描述信息和編碼后的消息,并發(fā)送給解析單元;所述解析單元,根據(jù)接收到的描述信息將接收到的編碼后的消息解析為具體消息對象。
由以上技術(shù)方案可以看出,本發(fā)明實施例采用Token的形式對消息對象進行描述和解析,描述信息格式簡單,也不需要復雜的解析工具,使得消息的處理變得簡單容易,并且基于Token的處理過程并不同于二進制模式,適合于不同操作系統(tǒng)和不同的編程語言環(huán)境下的消息處理,所以實現(xiàn)了消息處理的跨平臺和跨語言。
圖1為本發(fā)明實施例提供的處理消息的方法示意圖;圖2為本發(fā)明實施例提供的解析過程流程圖;圖3.1為本發(fā)明實施例提供的一種處理消息的系統(tǒng)結(jié)構(gòu)示意圖;圖3.2為本發(fā)明實施例提供的描述信息生成模塊設置在消息發(fā)送端中的系統(tǒng)結(jié)構(gòu)示意圖;圖3.3為本發(fā)明實施例提供的描述信息生成模塊設置在消息接收端中的系統(tǒng)結(jié)構(gòu)示意圖。
圖4為本發(fā)明實施例提供的消息發(fā)送端的組成結(jié)構(gòu)圖;圖5為本發(fā)明實施例提供的消息接收端的組成結(jié)構(gòu)圖。
具體實施例方式
為了使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面結(jié)合具體實施例進行詳細說明。
本發(fā)明實施例所提供的方法主要是將消息進行封裝得到消息對象,使用Token對封裝后得到的消息對象進行描述;根據(jù)該描述信息對具體消息對象進行編碼后發(fā)送;和/或根據(jù)描述信息將接收到的編碼后的消息解析為具體消息對象。
其中,所述根據(jù)該描述信息對具體消息對象進行編碼后發(fā)送由消息發(fā)送端執(zhí)行,所述根據(jù)描述信息將接收到的編碼后的消息解析為具體消息對象由消息接收端執(zhí)行;消息發(fā)送端和消息接收端可以在同構(gòu)系統(tǒng)上,例如,兩臺電腦之間消息的傳輸;也可以在異構(gòu)系統(tǒng)上,如,手機將消息發(fā)送給服務器,使用不同操作系統(tǒng)的兩臺電腦之間消息的傳輸,或者使用不同網(wǎng)絡協(xié)議的設備之間消息的傳輸?shù)取?br>
所述描述信息可以是消息發(fā)送端和消息接收端預先約定的;也可以是消息發(fā)送端在發(fā)送具體消息對象編碼后的消息之前,發(fā)送給消息接收端的;也可以是在消息發(fā)送端對消息對象進行編碼之前,消息接收端發(fā)送給消息發(fā)送端的,然后消息發(fā)送端根據(jù)該描述信息對消息對象進行編碼。
消息發(fā)送端和消息接收端之間對編碼后的消息可以是通過網(wǎng)絡進行傳輸?shù)摹?br>
下面對該方法進行詳細的描述,如圖1所示,圖1為本發(fā)明實施例提供的處理消息的方法示意圖。該方法主要包括以下步驟步驟101將消息進行封裝,得到消息對象。
為了編程和維護的方便,消息往往在程序里要進行封裝,將該消息封裝為一個類,例如,在面向?qū)ο笳Z言中的類(Class);或?qū)⒃撓⒎庋b為結(jié)構(gòu)體,例如,在面向過程語言中的結(jié)構(gòu)體(Struct)。在此,將封裝后的類或結(jié)構(gòu)體統(tǒng)稱為消息對象。
下面是以Java語言為例的一個消息對象SomeMessageObject,該消息對象中包含屬性id和namepublic class SomeMessageObject{private String id;private String name;//setters and getters}步驟102對該消息對象基于Token進行描述,得到描述信息(TokenInfo)。
本發(fā)明實施例要完成消息對象的傳遞和訪問,那么就需要對消息對象進行恰當?shù)拿枋觯员阍谙l(fā)送端和消息接收端達成一個雙方都能互操作的協(xié)議。在本發(fā)明實施例中采用Token來描述消息對象以便于達成消息發(fā)送端和消息接收端的協(xié)議。
Token是指消息的標識。本步驟中所述基于Token進行描述是將消息對象中的每一個屬性、以及每一個屬性中可能包含的分支屬性都可以用Token的形式進行描述,描述后得到的信息在此稱為TokenInfo。該消息對象的描述信息TokenInfo用來做為步驟103中進行編碼的依據(jù)。
對消息對象進行描述形成TokenInfo包括以下幾方面1)描述消息對象中數(shù)據(jù)的類型,例如字符串(String)、整數(shù)(Integer)、數(shù)組(Array)等;以及它們的順序。
2)描述消息對象中數(shù)據(jù)類型所對應的長度。由于平臺上的差異性,有些數(shù)據(jù)類型,例如Integer,可能長度不一致,所以要對消息對象中數(shù)據(jù)長度進行描述;如果為空,表示為String類型。該數(shù)據(jù)類型所對應的長度的描述需要和1)中描述的數(shù)據(jù)類型一一對應。
3)描述消息類別。網(wǎng)絡中傳輸?shù)南⒍喾N多樣,那么就需要用一個類別或者一個標識(ID)來區(qū)分不同的消息,以免發(fā)生傳輸或者解析的錯誤。
4)描述消息對象名,也就是對上面例子中的.class進行描述。該對象就是下面步驟中所述TokenMessage解析后獲得的消息對象。
5)描述消息對象中對象的屬性。對該屬性進行描述時,需要和1)中描述的數(shù)據(jù)類型一一對應。
上述對消息對象進行描述的5個方面的描述順序可以發(fā)生變化,也可以除了這5個方面的Token以外還有其它擴展的Token。
下面還針對上面有id和name屬性的消息為例,對上述5個方面進行說明1)該消息對象中數(shù)據(jù)類型的Token可以描述為splitCodes:{“int”,“string”};2)該消息對象中數(shù)據(jù)類型所對應的長度的Token可以描述為splitTargetLength:{4,,};此處,4與上述int類型相對應,空與上述string類型相對應。
3)消息類別可以描述為msgType:{“MsgType_1000001”};4)消息對象名可以描述為className{“SomeMessageObject.class”};如果該描述消息的被通知方采用的編程語言是Java,則該消息對象名可以為“SomeMessageObject.class”,如果該描述消息的被通知方采用的編程語言是C語言,則該消息對象名可以為“SomeMessageObject”。例如如果該消息對象的被通知方為消息接收端,消息接收端采用Java為編程語言,那么該消息對象名為SomeMessageObject.class。
5)消息對象中對象的屬性可以描述為objAttributeNames:{“id”,“name”}此處,id與int類型相對應,name與string相對應。
下面舉一個完整的TokenInfo示例,以方便對上述TokenInfo的理解和說明Define Token TokenInfo{/**分隔符,可支持多種語言數(shù)據(jù)類型*/splitCodes:{“int”,“int”,“\\0”,“string”,“\\0”,“l(fā)ong”,“int”,“date_yyyy-mm-dd”,“\\0”,“string”,“\\0”,“int”,“byte”,“array:{“int”,“string”}”,“int”};/**每個分隔符中間的數(shù)據(jù)長度*/splitTargetLength:{4,4,0,,0,16,4,8,0,,0,4,2,2,4,,4};/**消息類別*/msgType:{“MSG_TYPE”};/**消息對象對應的對象類名*/className{“SomeMessageObject.class”};/**消息對象里數(shù)據(jù)對應的對象的屬性,與數(shù)據(jù)類型和數(shù)據(jù)長度的順序一致*/objAttributeNames:{“Attribute1”,“Attribute2”,“Attribute3”,“Attribute4”,“Attribute5”,“Attribute6”,......,“AttributeN”};/**其它擴展Token*/}步驟101和102中所述的封裝和描述過程可以是消息發(fā)送端完成的,也可以是消息接收端完成的,或者也可以是其它裝置完成的;但是所得到的TokenInfo必須通知給消息發(fā)送端和消息接收端。
在對消息對象進行描述時,要發(fā)送給消息發(fā)送端的TokenInfo要采用消息發(fā)送端的編程語言進行描述;要發(fā)送給消息接收端的TokenInfo要采用消息接收端的編程語言進行描述;這樣就使得消息發(fā)送端可以根據(jù)該TokenInfo對具體消息對象進行編碼,消息接收端根據(jù)該TokenInfo對編碼后的消息進行解析。
步驟103消息發(fā)送端根據(jù)該TokenInfo對具體消息對象進行編碼,得到編碼后的消息(TokenMessage)。
步驟102中使用Token對消息對象進行描述就構(gòu)成了TokenInfo,在本步驟中,消息發(fā)送端依據(jù)該TokenInfo將具體消息對象的每一個屬性編碼為一定長度的字符段。每一個字符段對應一個具體消息對象的屬性。例如一個id為1001,name為張三的消息對象,該消息對象就為一個具體消息對象,編碼后的消息為xxx1001yyy張三zzz。其中,該TokenMessage包含五個字符段,其中,1001對應著消息對象中的id屬性,張三對應著消息對象中的name屬性;xxx、yyy和zzz可以是分隔符,也可以是各屬性的標識,在具體編碼時并不局限于xxx、yyy、以及zzz的形式,可以采用別的可以用來對屬性進行分隔或標識的形式,例如~~~1001~~~張三~~~等形式。
通過使用Token對消息對象進行描述,使得消息編碼方式完整、準確和密集,可以很大程度上提高解析的準確性,降低網(wǎng)絡帶寬,提高網(wǎng)絡傳輸效率。
步驟104消息發(fā)送端將該TokenMessage發(fā)送出去。
步驟105消息接收端接收該TokenMessage。
步驟106消息接收端根據(jù)描述信息將該TokenMessage進行解析得到具體消息對象。
消息接收端接收到一個TokenMessage后,只要有其對應的TokenInfo,就可以對其進行解析。具體解析的過程如圖2所示,該解析過程可以包括以下步驟
步驟201解析TokenMessage中的關(guān)鍵字符段,構(gòu)造出一個消息對象。
本步驟中所述關(guān)鍵字符段是指TokenMessage中的消息頭部分,可以是消息類別、消息對象中的對象等。在上述的例子中,關(guān)鍵字符段可以是MsgType_1000001、SomeMessageObject中對應的部分。消息接收端可以根據(jù)TokenInfo和編碼后消息的標識將所述關(guān)鍵字符段進行解析,構(gòu)造出一個消息對象。
步驟202根據(jù)TokenInfo對剩余的字符段依次進行遍歷,轉(zhuǎn)換為當前系統(tǒng)內(nèi)部的數(shù)據(jù)。
TokenMessage中每一個字符段都有相應的Token與之對應,根據(jù)TokenInfo的描述,將相應的字符段轉(zhuǎn)換為當前系統(tǒng)內(nèi)部的數(shù)據(jù)。
步驟203將遍歷過程中獲得的數(shù)據(jù)與構(gòu)造的消息對象相匹配,獲得最終的具體消息對象。
例如,一個是張三,數(shù)據(jù)類型為string的數(shù)據(jù)并且在AbjAttributeNames中的屬性為name時,肯定和消息對象中的name屬性相匹配。
從以上步驟可以看出,對編碼后的消息進行解析的過程就是一個對TokenMessage和TokenInfo做同步遍歷的過程。因為在本發(fā)明實施例中,TokenInfo是對消息對象準確描述的信息,所以,只需一次遍歷就可以產(chǎn)生一個具體消息對象,并且不取決于系統(tǒng)本身和解析工具,使得處理消息的過程變得更加簡單。
下面,對本發(fā)明實施例所提供的系統(tǒng)進行詳細描述。如圖3.1所示,該系統(tǒng)主要包括描述信息生成模塊300、消息發(fā)送端310、以及消息接收端320。
描述信息生成模塊300,將消息進行封裝,使用Token對封裝后得到的消息對象進行描述,生成TokenInfo發(fā)送給消息發(fā)送端310和消息接收端320。
為了編程和維護的方便,描述信息生成模塊300將消息封裝為一個類,例如,在面向?qū)ο笳Z言中的Class;或?qū)⒃撓⒎庋b為結(jié)構(gòu)體,例如,在面向過程語言中的Struct。在此,將封裝后的類或結(jié)構(gòu)體統(tǒng)稱為消息對象。
所述描述信息生成模塊300將封裝后得到的消息對象中每一個屬性、以及屬性的屬性都用Token的形式進行描述,描述后得到的信息為TokenInfo,該TokenInfo為消息發(fā)送端310對具體消息對象進行編碼的依據(jù),也是接受方320對編碼后的消息進行解碼的依據(jù)。描述信息生成模塊300可以對消息對象中數(shù)據(jù)的類型、消息對象中數(shù)據(jù)類型的長度、消息類別、消息對象名、消息對象中對象的屬性等進行描述。
在對消息對象進行描述時,要發(fā)送給消息發(fā)送端的TokenInfo要采用消息發(fā)送端的編程語言進行描述;要發(fā)送給消息接收端的TokenInfo要采用消息接收端的編程語言進行描述;這樣就使得消息發(fā)送端可以根據(jù)該TokenInfo對具體消息對象進行編碼,消息接收端根據(jù)該TokenInfo對編碼后的消息進行解析,實現(xiàn)消息處理的跨語言。
消息發(fā)送端310,根據(jù)該TokenInfo對具體消息對象進行編碼后,將編碼后生成的TokenMessage發(fā)送給消息接收端320。
所述消息發(fā)送端310可以是計算機、手機、工作站、服務器、處理系統(tǒng)、應用系統(tǒng)等。
所述消息發(fā)送端310,依據(jù)TokenInfo將消息對象的每一個屬性編碼為一定長度的字符段。每一個字符段對應一個消息對象的屬性。
消息接收端320,根據(jù)TokenInfo將接收到的TokenMessage解析為具體消息對象。
所述消息接收端320可以是計算機、手機、工作站、服務器、處理系統(tǒng)、應用系統(tǒng)等。
所述消息接收端320首先解析TokenMessage中的關(guān)鍵字符段,構(gòu)造出一個消息對象,然后根據(jù)TokenInfo對剩余字符段依次進行遍歷,轉(zhuǎn)換為當前系統(tǒng)內(nèi)部的數(shù)據(jù),并將遍歷過程中獲得的數(shù)據(jù)與構(gòu)造的消息對象相匹配,獲得最終的具體消息對象。
其中,所述描述信息生成模塊300可以是獨立的裝置,生成TokenInfo后,將TokenInfo在消息發(fā)送端進行編碼之前發(fā)送給消息發(fā)送端,在消息接收端進行解碼之前發(fā)送給消息接收端。其中,TokenInfo可以通過復制或者網(wǎng)絡傳輸發(fā)送給消息發(fā)送端或者消息接收端。
所述描述信息生成模塊300也可以設置在消息發(fā)送端310中,如圖3.2所示,消息發(fā)送端310根據(jù)自身描述信息生成模塊300生成的TokenInfo對具體消息對象進行編碼得到TokenMessage,并將其發(fā)送給消息接收端320;描述信息生成模塊300將TokenInfo發(fā)送給消息接收端320,消息接收端320根據(jù)該TokenInfo對編碼后得到的TokenMessage進行解析。
所述描述信息生成模塊300也可以設置在消息接收端320中,如圖3.3所示,消息接收端320中的描述信息生成模塊300將生成的TokenInfo發(fā)送給消息發(fā)送端310,消息發(fā)送端310根據(jù)該TokenInfo對具體消息對象進行編碼得到TokenMessage,將其發(fā)送給消息接收端320,消息接收端320根據(jù)TokenInfo將接收到的TokenMessage進行解析。
下面對消息接收端和消息發(fā)送端的結(jié)構(gòu)進行詳細描述。消息發(fā)送端的結(jié)構(gòu)如圖4所示。該消息發(fā)送端包括編碼單元401和收發(fā)單元402;所述收發(fā)單元402,將接收到的描述信息發(fā)送給編碼單元401;接收編碼單元發(fā)送的編碼后的消息,并發(fā)送出去;所述編碼單元401,根據(jù)收發(fā)單元發(fā)送的描述信息對具體消息對象進行編碼,并將編碼后的消息發(fā)送給收發(fā)單元402。
更進一步地,該消息發(fā)送端進一步包括描述信息生成單元403,用于將消息進行封裝,使用Token的形式對封裝后得到的消息對象進行描述,然后發(fā)送給收發(fā)單元402和/或消息接收端。
消息接收端地結(jié)構(gòu)如圖5所示,該消息接收端包括收發(fā)單元501和解析單元502;所述收發(fā)單元501,接收描述信息和編碼后的消息,并發(fā)送給解析單元502;所述解析單元502,根據(jù)接收到的描述信息將接收到的編碼后的消息解析為具體消息對象。
更進一步地,該消息接收端進一步包括描述信息生成單元503,用于將消息進行封裝,使用Token的形式對封裝后得到的消息對象進行描述,然后發(fā)送給收發(fā)單元501;所述收發(fā)單元501還用于,將所述描述信息發(fā)送給消息發(fā)送端。
由以上描述可以看出,本發(fā)明實施例使用Token對消息對象進行描述得到TokenInfo,消息發(fā)送端根據(jù)該TokenInfo對具體消息對象進行編碼,消息接收端根據(jù)該TokenInfo進行解析得具體消息對象。使用Token的形式對消息對象進行描述的格式簡單,不需要復雜的解析工具,且消息接收端只需要一次遍歷就可以產(chǎn)生一個具體消息對象,使得消息的處理變得簡單容易;并且,基于Token的處理過程并不同于二進制模式,適合于不同操作系統(tǒng)和不同的編程語言環(huán)境下的消息處理,所以實現(xiàn)了消息處理的跨平臺和跨語言。
更進一步地,通過使用Token對消息對象進行描述,并根據(jù)該描述信息對具體消息對象進行編碼,使得編碼方式完整、準確和密集,提高了解析的準確性,降低網(wǎng)絡帶寬,提高網(wǎng)絡傳輸效率。
以上所述僅為本發(fā)明的較佳實施例,并不用以限制本發(fā)明,凡在本發(fā)明精神和原則范圍之內(nèi)所做的任何修改、等同替換和改進等,都應包含在本發(fā)明的保護范圍之內(nèi)。
權(quán)利要求
1.一種處理消息的方法,其特征在于,該方法包括將消息進行封裝得到消息對象,使用標識Token的形式對封裝后得到的所述消息對象進行描述;根據(jù)描述信息對具體消息對象進行編碼后發(fā)送,和/或根據(jù)描述信息將接收到的編碼后的消息解析為具體消息對象。
2.根據(jù)權(quán)利要求1所述的處理消息的方法,其特征在于,所述將消息進行封裝為將消息封裝為一個類,所述消息對象為封裝后的類;或者所述將消息進行封裝為將消息封裝為一個結(jié)構(gòu)體,所述消息對象為封裝后的結(jié)構(gòu)體。
3.根據(jù)權(quán)利要求1所述的處理消息的方法,其特征在于,使用Token的形式對封裝后得到的所述消息對象進行描述包括以Token的形式描述消息對象中數(shù)據(jù)的類型、消息對象中數(shù)據(jù)類型所對應的長度、消息類別、消息對象名、以及消息對象中對象的屬性。
4.根據(jù)權(quán)利要求1、2或3所述的處理消息的方法,其特征在于,所述使用Token的形式對封裝后得到的消息對象進行描述是由消息發(fā)送端執(zhí)行的、或由消息接收端執(zhí)行的、或由獨立的設備完成的。
5.根據(jù)權(quán)利要求3所述的處理消息的方法,其特征在于,所述編碼為根據(jù)所述描述信息將每一個具體消息對象的屬性編碼為字符段,每一個字符段對應一個具體消息對象的屬性。
6.根據(jù)權(quán)利要求5所述的處理消息的方法,其特征在于,所述解析包括解析編碼后消息中的關(guān)鍵字符段,構(gòu)造出一個消息對象;根據(jù)描述信息對剩余的字符段依次進行遍歷,轉(zhuǎn)換為消息接收端系統(tǒng)內(nèi)部的數(shù)據(jù);將遍歷過程中獲得的數(shù)據(jù)與構(gòu)造的消息對象相匹配,獲得最終的具體消息對象。
7.根據(jù)權(quán)利要求6所述的處理消息的方法,其特征在于,所述關(guān)鍵字符段為編碼后的消息中消息類別和消息對象名所對應的字符段。
8.一種處理消息的系統(tǒng),其特征在于,該系統(tǒng)包括描述信息生成模塊、消息發(fā)送端、以及消息接收端;描述信息生成模塊,將消息進行封裝,使用Token的形式對封裝后得到的消息對象進行描述,生成描述信息通知給消息發(fā)送端和消息接收端;消息發(fā)送端,根據(jù)該描述信息對具體消息對象進行編碼后,將編碼后的消息發(fā)送給消息接收端;消息接收端,根據(jù)描述信息將接收到的編碼后的消息解析為具體消息對象。
9.根據(jù)權(quán)利要求8所述的處理消息的系統(tǒng),其特征在于,描述信息生成模塊為獨立的設備、或者設置在消息發(fā)送端中、或者設置在消息接收端中。
10.一種消息發(fā)送端,其特征在于,該消息發(fā)送端包括編碼單元和收發(fā)單元;所述收發(fā)單元,將接收到的描述信息發(fā)送給編碼單元;接收編碼單元發(fā)送的編碼后的消息,并發(fā)送出去;所述編碼單元,根據(jù)收發(fā)單元發(fā)送的描述信息對具體消息對象進行編碼,并將編碼后的消息發(fā)送給收發(fā)單元。
11.根據(jù)權(quán)利要求10所述的消息發(fā)送端,其特征在于,該消息發(fā)送端進一步包括描述信息生成單元,用于將消息進行封裝,使用Token的形式對封裝后得到的消息對象進行描述,然后發(fā)送給收發(fā)單元和/或消息接收端。
12.一種消息接收端,其特征在于,該消息接收端包括收發(fā)單元和解析單元;所述收發(fā)單元,接收描述信息和編碼后的消息,并發(fā)送給解析單元;所述解析單元,根據(jù)接收到的描述信息將接收到的編碼后的消息解析為具體消息對象。
13.根據(jù)權(quán)利要求12所述的消息接收端,其特征在于,所述消息接收端進一步包括描述信息生成單元,用于將消息進行封裝,使用Token的形式對封裝后得到的消息對象進行描述,然后發(fā)送給收發(fā)單元;所述收發(fā)單元還用于,將所述描述信息發(fā)送給消息發(fā)送端。
全文摘要
本發(fā)明提供了一種處理消息的方法和系統(tǒng),將消息進行封裝,使用標識(Token)對封裝后得到的消息對象進行描述,根據(jù)該描述信息對具體消息對象進行編碼后,發(fā)送出去;和/或根據(jù)描述信息將接收到的編碼后的消息解析為具體消息對象。使用Token的形式對消息對象進行描述的格式簡單,不需要復雜的解析工具,且消息接收端只需要一次遍歷就可以產(chǎn)生一個具體消息對象,使得消息的處理變得簡單,且基于Token的處理過程實現(xiàn)了消息處理的跨平臺和跨語言。
文檔編號H04L29/06GK101026438SQ20071000353
公開日2007年8月29日 申請日期2007年2月6日 優(yōu)先權(quán)日2007年2月6日
發(fā)明者葛曉磊 申請人:華為技術(shù)有限公司