田源 潘晨光 丁杰
摘 要: 即時(shí)通訊系統(tǒng)已經(jīng)廣泛應(yīng)用在人們的生活中,隨著用戶數(shù)量的增長(zhǎng),計(jì)算機(jī)設(shè)備在網(wǎng)絡(luò)中傳輸?shù)臄?shù)據(jù)量越來(lái)越大。由于網(wǎng)絡(luò)中的數(shù)據(jù)傳輸是非結(jié)構(gòu)化的,因此需要數(shù)據(jù)的序列化與逆序列化方法來(lái)實(shí)現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)到可讀數(shù)據(jù)的轉(zhuǎn)換?;诩磿r(shí)通訊系統(tǒng)對(duì)于數(shù)據(jù)的實(shí)時(shí)性需求,提出了使用Protocol Buffers作為系統(tǒng)的序列化與逆序列化的手段,并且將Protocol Buffers與目前幾種比較主流的數(shù)據(jù)序列化方法進(jìn)行了對(duì)比。
關(guān)鍵詞: Protocol Buffers; 即時(shí)通訊; 數(shù)據(jù)序列化; 消息
中圖分類(lèi)號(hào): TN911?34 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 1004?373X(2014)05?0032?03
0 引 言
隨著移動(dòng)互聯(lián)網(wǎng)的不斷發(fā)展,即時(shí)通訊工具已經(jīng)成為人們生活中不可或缺的一部分。幾乎大部分的用戶都在不同的社交網(wǎng)絡(luò)中注冊(cè)賬號(hào),因此即時(shí)通訊軟件就是連接社交網(wǎng)絡(luò)中每個(gè)個(gè)體的重要紐帶。這里的通訊軟件特指基于Internet研發(fā)的,用于日常通訊的軟件。通訊方式包括語(yǔ)音、圖像、文本等。即時(shí)通訊軟件由于使用費(fèi)用低廉、覆蓋范圍廣、用戶體驗(yàn)良好等優(yōu)點(diǎn),迅速在全世界流行。目前,人們對(duì)于即時(shí)通訊軟件的依賴(lài)已經(jīng)遠(yuǎn)遠(yuǎn)超過(guò)了對(duì)于傳統(tǒng)的語(yǔ)音通話服務(wù),固定電話的使用率更是逐年下降。由此可見(jiàn),基于互聯(lián)網(wǎng)的即時(shí)通訊將是未來(lái)發(fā)展的趨勢(shì),并且擁有巨大的潛力。
現(xiàn)有的即時(shí)通訊軟件中,以文本的方式為主流。也有部分軟件使用延時(shí)語(yǔ)音聊天的方式,即先進(jìn)行短時(shí)間的錄音,然后再將錄音文件發(fā)送至目標(biāo)用戶。無(wú)論是文本還是多媒體數(shù)據(jù),在網(wǎng)絡(luò)組包的過(guò)程中,除了需要包含實(shí)際的用戶內(nèi)容信息,還需要包含一些用于系統(tǒng)處理的輔助信息,因此它們都屬于都是結(jié)構(gòu)化的數(shù)據(jù)。而網(wǎng)絡(luò)傳輸過(guò)程中,數(shù)據(jù)都是以流的方式進(jìn)行處理。因此需要對(duì)結(jié)構(gòu)化數(shù)據(jù)進(jìn)行序列化與逆序列化的操作。由于即時(shí)通訊軟件對(duì)于實(shí)時(shí)性的需求較大,因此選擇一種高效的序列化手段就顯得尤為重要。本文所屬課題在研發(fā)過(guò)程中,經(jīng)過(guò)比較幾種序列化手段,選擇Google的Protocol Buffers作為序列化手段。
1 Protocol Buffers概述
1.1 簡(jiǎn)介
ProtocolBuffers[1?2]是Google公司開(kāi)發(fā)的一種用于結(jié)構(gòu)化數(shù)據(jù)序列化和逆序列化的數(shù)據(jù)描述語(yǔ)言(Data Description Language,DDL)[3]。它主要用于結(jié)構(gòu)化數(shù)據(jù)的描述、傳輸和存儲(chǔ)。Protocol Buffers采用二進(jìn)制編碼的格式,對(duì)數(shù)據(jù)的序列化和逆序列化的操作效率較高,它能夠?qū)崿F(xiàn)數(shù)據(jù)的壓縮存儲(chǔ)和傳輸。該技術(shù)支持C++、Java以及Python語(yǔ)言,由于是以二進(jìn)制流的形式進(jìn)行存儲(chǔ),因此它要比XML更加節(jié)省空間。只需使用Protocol Buffers對(duì)數(shù)據(jù)結(jié)構(gòu)進(jìn)行一次描述,即可在不同的編程語(yǔ)言環(huán)境中使用。
3 結(jié) 語(yǔ)
Protocol Buffers是之前Google公司內(nèi)部使用的一種高效的數(shù)據(jù)序列化與逆序列化方法。它的靈活性和高效性剛好符合即時(shí)信息通訊系統(tǒng)對(duì)于實(shí)時(shí)性的需求。本文介紹了Protocol Buffers在即時(shí)通訊系統(tǒng)中的應(yīng)用,并且比較了幾種數(shù)據(jù)序列化方法之間的異同。通過(guò)摘取項(xiàng)目中的代碼,展示了Protocol Buffers在實(shí)際開(kāi)發(fā)中的應(yīng)用方法。
參考文獻(xiàn)
[1] FENG J H, LI J H. Google Protocol Buffers research and application in online game [C]// Proceedings of 2011 13th IEEE Joint International Computer Science and Information Technology Conference. Chongqing, China: IEEE, 2011: 5?8.
[2] 殷昊,沈奇威,王純.Protocol Buffer在Android企業(yè)云通訊錄中的應(yīng)用[J].電信科學(xué),2012(9):148?151.
[3] 晏立,沈銳.Java序列化技術(shù)的探討[J].紅河學(xué)院學(xué)報(bào),2011(4):37?39.
[4] NURSEITOV N, PAULSON M, REYNOLDS R, et al. Comparison of JSON and XML data interchange formats: a case study [C]// Proceedings of 2009 CAINE. San Francisco, California, USA: CAINE, 2009: 157?162.
[5] LEE D A. JXON: an architecture for schema and annotation driven JSON/XML bidirectional transformations [C]// Proceedings of Balisage: The Markup Conference. Washington DC, USA: Balisage, 2011: 2?5.
[6] SUMARAY A, MAKKI S K. A comparison of data serialization formats for optimal efficiency on a mobile platform [C]// Proceedings of the 6th International Conference on Ubiquitous Information Management and Communication. Kuala Lumpur, Malaysia: ACM, 2012: 48.
[7] 宮唐小恒,李旭偉. Protocol Buffers:比XML快近100倍[J].電腦與信息技術(shù),2009(1):65?68.
[8] M?LLER J, LORENZ M, GELLER F, et al. Assessment of communication protocols in the EPC network?replacing textual SOAP and XML with binary google protocol buffers encoding [C]// Proceedings of 2010 IEEE 17th International Conference on Industrial Engineering and Engineering Management. Xiamen, China: IE&EM, 2010: 404?409.
[9] 李紀(jì)欣,王康,周立發(fā),等.Google Protobuf在Linux Socket通訊中的應(yīng)用[J].電腦開(kāi)發(fā)與應(yīng)用,2013(4):1?5.
[10] 毛紅閣,郭紅,陳東,等.Android移動(dòng)通訊序列化協(xié)議研究[J].南陽(yáng)師范學(xué)院學(xué)報(bào),2012(6):47?49.
摘 要: 即時(shí)通訊系統(tǒng)已經(jīng)廣泛應(yīng)用在人們的生活中,隨著用戶數(shù)量的增長(zhǎng),計(jì)算機(jī)設(shè)備在網(wǎng)絡(luò)中傳輸?shù)臄?shù)據(jù)量越來(lái)越大。由于網(wǎng)絡(luò)中的數(shù)據(jù)傳輸是非結(jié)構(gòu)化的,因此需要數(shù)據(jù)的序列化與逆序列化方法來(lái)實(shí)現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)到可讀數(shù)據(jù)的轉(zhuǎn)換?;诩磿r(shí)通訊系統(tǒng)對(duì)于數(shù)據(jù)的實(shí)時(shí)性需求,提出了使用Protocol Buffers作為系統(tǒng)的序列化與逆序列化的手段,并且將Protocol Buffers與目前幾種比較主流的數(shù)據(jù)序列化方法進(jìn)行了對(duì)比。
關(guān)鍵詞: Protocol Buffers; 即時(shí)通訊; 數(shù)據(jù)序列化; 消息
中圖分類(lèi)號(hào): TN911?34 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 1004?373X(2014)05?0032?03
0 引 言
隨著移動(dòng)互聯(lián)網(wǎng)的不斷發(fā)展,即時(shí)通訊工具已經(jīng)成為人們生活中不可或缺的一部分。幾乎大部分的用戶都在不同的社交網(wǎng)絡(luò)中注冊(cè)賬號(hào),因此即時(shí)通訊軟件就是連接社交網(wǎng)絡(luò)中每個(gè)個(gè)體的重要紐帶。這里的通訊軟件特指基于Internet研發(fā)的,用于日常通訊的軟件。通訊方式包括語(yǔ)音、圖像、文本等。即時(shí)通訊軟件由于使用費(fèi)用低廉、覆蓋范圍廣、用戶體驗(yàn)良好等優(yōu)點(diǎn),迅速在全世界流行。目前,人們對(duì)于即時(shí)通訊軟件的依賴(lài)已經(jīng)遠(yuǎn)遠(yuǎn)超過(guò)了對(duì)于傳統(tǒng)的語(yǔ)音通話服務(wù),固定電話的使用率更是逐年下降。由此可見(jiàn),基于互聯(lián)網(wǎng)的即時(shí)通訊將是未來(lái)發(fā)展的趨勢(shì),并且擁有巨大的潛力。
現(xiàn)有的即時(shí)通訊軟件中,以文本的方式為主流。也有部分軟件使用延時(shí)語(yǔ)音聊天的方式,即先進(jìn)行短時(shí)間的錄音,然后再將錄音文件發(fā)送至目標(biāo)用戶。無(wú)論是文本還是多媒體數(shù)據(jù),在網(wǎng)絡(luò)組包的過(guò)程中,除了需要包含實(shí)際的用戶內(nèi)容信息,還需要包含一些用于系統(tǒng)處理的輔助信息,因此它們都屬于都是結(jié)構(gòu)化的數(shù)據(jù)。而網(wǎng)絡(luò)傳輸過(guò)程中,數(shù)據(jù)都是以流的方式進(jìn)行處理。因此需要對(duì)結(jié)構(gòu)化數(shù)據(jù)進(jìn)行序列化與逆序列化的操作。由于即時(shí)通訊軟件對(duì)于實(shí)時(shí)性的需求較大,因此選擇一種高效的序列化手段就顯得尤為重要。本文所屬課題在研發(fā)過(guò)程中,經(jīng)過(guò)比較幾種序列化手段,選擇Google的Protocol Buffers作為序列化手段。
1 Protocol Buffers概述
1.1 簡(jiǎn)介
ProtocolBuffers[1?2]是Google公司開(kāi)發(fā)的一種用于結(jié)構(gòu)化數(shù)據(jù)序列化和逆序列化的數(shù)據(jù)描述語(yǔ)言(Data Description Language,DDL)[3]。它主要用于結(jié)構(gòu)化數(shù)據(jù)的描述、傳輸和存儲(chǔ)。Protocol Buffers采用二進(jìn)制編碼的格式,對(duì)數(shù)據(jù)的序列化和逆序列化的操作效率較高,它能夠?qū)崿F(xiàn)數(shù)據(jù)的壓縮存儲(chǔ)和傳輸。該技術(shù)支持C++、Java以及Python語(yǔ)言,由于是以二進(jìn)制流的形式進(jìn)行存儲(chǔ),因此它要比XML更加節(jié)省空間。只需使用Protocol Buffers對(duì)數(shù)據(jù)結(jié)構(gòu)進(jìn)行一次描述,即可在不同的編程語(yǔ)言環(huán)境中使用。
3 結(jié) 語(yǔ)
Protocol Buffers是之前Google公司內(nèi)部使用的一種高效的數(shù)據(jù)序列化與逆序列化方法。它的靈活性和高效性剛好符合即時(shí)信息通訊系統(tǒng)對(duì)于實(shí)時(shí)性的需求。本文介紹了Protocol Buffers在即時(shí)通訊系統(tǒng)中的應(yīng)用,并且比較了幾種數(shù)據(jù)序列化方法之間的異同。通過(guò)摘取項(xiàng)目中的代碼,展示了Protocol Buffers在實(shí)際開(kāi)發(fā)中的應(yīng)用方法。
參考文獻(xiàn)
[1] FENG J H, LI J H. Google Protocol Buffers research and application in online game [C]// Proceedings of 2011 13th IEEE Joint International Computer Science and Information Technology Conference. Chongqing, China: IEEE, 2011: 5?8.
[2] 殷昊,沈奇威,王純.Protocol Buffer在Android企業(yè)云通訊錄中的應(yīng)用[J].電信科學(xué),2012(9):148?151.
[3] 晏立,沈銳.Java序列化技術(shù)的探討[J].紅河學(xué)院學(xué)報(bào),2011(4):37?39.
[4] NURSEITOV N, PAULSON M, REYNOLDS R, et al. Comparison of JSON and XML data interchange formats: a case study [C]// Proceedings of 2009 CAINE. San Francisco, California, USA: CAINE, 2009: 157?162.
[5] LEE D A. JXON: an architecture for schema and annotation driven JSON/XML bidirectional transformations [C]// Proceedings of Balisage: The Markup Conference. Washington DC, USA: Balisage, 2011: 2?5.
[6] SUMARAY A, MAKKI S K. A comparison of data serialization formats for optimal efficiency on a mobile platform [C]// Proceedings of the 6th International Conference on Ubiquitous Information Management and Communication. Kuala Lumpur, Malaysia: ACM, 2012: 48.
[7] 宮唐小恒,李旭偉. Protocol Buffers:比XML快近100倍[J].電腦與信息技術(shù),2009(1):65?68.
[8] M?LLER J, LORENZ M, GELLER F, et al. Assessment of communication protocols in the EPC network?replacing textual SOAP and XML with binary google protocol buffers encoding [C]// Proceedings of 2010 IEEE 17th International Conference on Industrial Engineering and Engineering Management. Xiamen, China: IE&EM, 2010: 404?409.
[9] 李紀(jì)欣,王康,周立發(fā),等.Google Protobuf在Linux Socket通訊中的應(yīng)用[J].電腦開(kāi)發(fā)與應(yīng)用,2013(4):1?5.
[10] 毛紅閣,郭紅,陳東,等.Android移動(dòng)通訊序列化協(xié)議研究[J].南陽(yáng)師范學(xué)院學(xué)報(bào),2012(6):47?49.
摘 要: 即時(shí)通訊系統(tǒng)已經(jīng)廣泛應(yīng)用在人們的生活中,隨著用戶數(shù)量的增長(zhǎng),計(jì)算機(jī)設(shè)備在網(wǎng)絡(luò)中傳輸?shù)臄?shù)據(jù)量越來(lái)越大。由于網(wǎng)絡(luò)中的數(shù)據(jù)傳輸是非結(jié)構(gòu)化的,因此需要數(shù)據(jù)的序列化與逆序列化方法來(lái)實(shí)現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)到可讀數(shù)據(jù)的轉(zhuǎn)換?;诩磿r(shí)通訊系統(tǒng)對(duì)于數(shù)據(jù)的實(shí)時(shí)性需求,提出了使用Protocol Buffers作為系統(tǒng)的序列化與逆序列化的手段,并且將Protocol Buffers與目前幾種比較主流的數(shù)據(jù)序列化方法進(jìn)行了對(duì)比。
關(guān)鍵詞: Protocol Buffers; 即時(shí)通訊; 數(shù)據(jù)序列化; 消息
中圖分類(lèi)號(hào): TN911?34 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 1004?373X(2014)05?0032?03
0 引 言
隨著移動(dòng)互聯(lián)網(wǎng)的不斷發(fā)展,即時(shí)通訊工具已經(jīng)成為人們生活中不可或缺的一部分。幾乎大部分的用戶都在不同的社交網(wǎng)絡(luò)中注冊(cè)賬號(hào),因此即時(shí)通訊軟件就是連接社交網(wǎng)絡(luò)中每個(gè)個(gè)體的重要紐帶。這里的通訊軟件特指基于Internet研發(fā)的,用于日常通訊的軟件。通訊方式包括語(yǔ)音、圖像、文本等。即時(shí)通訊軟件由于使用費(fèi)用低廉、覆蓋范圍廣、用戶體驗(yàn)良好等優(yōu)點(diǎn),迅速在全世界流行。目前,人們對(duì)于即時(shí)通訊軟件的依賴(lài)已經(jīng)遠(yuǎn)遠(yuǎn)超過(guò)了對(duì)于傳統(tǒng)的語(yǔ)音通話服務(wù),固定電話的使用率更是逐年下降。由此可見(jiàn),基于互聯(lián)網(wǎng)的即時(shí)通訊將是未來(lái)發(fā)展的趨勢(shì),并且擁有巨大的潛力。
現(xiàn)有的即時(shí)通訊軟件中,以文本的方式為主流。也有部分軟件使用延時(shí)語(yǔ)音聊天的方式,即先進(jìn)行短時(shí)間的錄音,然后再將錄音文件發(fā)送至目標(biāo)用戶。無(wú)論是文本還是多媒體數(shù)據(jù),在網(wǎng)絡(luò)組包的過(guò)程中,除了需要包含實(shí)際的用戶內(nèi)容信息,還需要包含一些用于系統(tǒng)處理的輔助信息,因此它們都屬于都是結(jié)構(gòu)化的數(shù)據(jù)。而網(wǎng)絡(luò)傳輸過(guò)程中,數(shù)據(jù)都是以流的方式進(jìn)行處理。因此需要對(duì)結(jié)構(gòu)化數(shù)據(jù)進(jìn)行序列化與逆序列化的操作。由于即時(shí)通訊軟件對(duì)于實(shí)時(shí)性的需求較大,因此選擇一種高效的序列化手段就顯得尤為重要。本文所屬課題在研發(fā)過(guò)程中,經(jīng)過(guò)比較幾種序列化手段,選擇Google的Protocol Buffers作為序列化手段。
1 Protocol Buffers概述
1.1 簡(jiǎn)介
ProtocolBuffers[1?2]是Google公司開(kāi)發(fā)的一種用于結(jié)構(gòu)化數(shù)據(jù)序列化和逆序列化的數(shù)據(jù)描述語(yǔ)言(Data Description Language,DDL)[3]。它主要用于結(jié)構(gòu)化數(shù)據(jù)的描述、傳輸和存儲(chǔ)。Protocol Buffers采用二進(jìn)制編碼的格式,對(duì)數(shù)據(jù)的序列化和逆序列化的操作效率較高,它能夠?qū)崿F(xiàn)數(shù)據(jù)的壓縮存儲(chǔ)和傳輸。該技術(shù)支持C++、Java以及Python語(yǔ)言,由于是以二進(jìn)制流的形式進(jìn)行存儲(chǔ),因此它要比XML更加節(jié)省空間。只需使用Protocol Buffers對(duì)數(shù)據(jù)結(jié)構(gòu)進(jìn)行一次描述,即可在不同的編程語(yǔ)言環(huán)境中使用。
3 結(jié) 語(yǔ)
Protocol Buffers是之前Google公司內(nèi)部使用的一種高效的數(shù)據(jù)序列化與逆序列化方法。它的靈活性和高效性剛好符合即時(shí)信息通訊系統(tǒng)對(duì)于實(shí)時(shí)性的需求。本文介紹了Protocol Buffers在即時(shí)通訊系統(tǒng)中的應(yīng)用,并且比較了幾種數(shù)據(jù)序列化方法之間的異同。通過(guò)摘取項(xiàng)目中的代碼,展示了Protocol Buffers在實(shí)際開(kāi)發(fā)中的應(yīng)用方法。
參考文獻(xiàn)
[1] FENG J H, LI J H. Google Protocol Buffers research and application in online game [C]// Proceedings of 2011 13th IEEE Joint International Computer Science and Information Technology Conference. Chongqing, China: IEEE, 2011: 5?8.
[2] 殷昊,沈奇威,王純.Protocol Buffer在Android企業(yè)云通訊錄中的應(yīng)用[J].電信科學(xué),2012(9):148?151.
[3] 晏立,沈銳.Java序列化技術(shù)的探討[J].紅河學(xué)院學(xué)報(bào),2011(4):37?39.
[4] NURSEITOV N, PAULSON M, REYNOLDS R, et al. Comparison of JSON and XML data interchange formats: a case study [C]// Proceedings of 2009 CAINE. San Francisco, California, USA: CAINE, 2009: 157?162.
[5] LEE D A. JXON: an architecture for schema and annotation driven JSON/XML bidirectional transformations [C]// Proceedings of Balisage: The Markup Conference. Washington DC, USA: Balisage, 2011: 2?5.
[6] SUMARAY A, MAKKI S K. A comparison of data serialization formats for optimal efficiency on a mobile platform [C]// Proceedings of the 6th International Conference on Ubiquitous Information Management and Communication. Kuala Lumpur, Malaysia: ACM, 2012: 48.
[7] 宮唐小恒,李旭偉. Protocol Buffers:比XML快近100倍[J].電腦與信息技術(shù),2009(1):65?68.
[8] M?LLER J, LORENZ M, GELLER F, et al. Assessment of communication protocols in the EPC network?replacing textual SOAP and XML with binary google protocol buffers encoding [C]// Proceedings of 2010 IEEE 17th International Conference on Industrial Engineering and Engineering Management. Xiamen, China: IE&EM, 2010: 404?409.
[9] 李紀(jì)欣,王康,周立發(fā),等.Google Protobuf在Linux Socket通訊中的應(yīng)用[J].電腦開(kāi)發(fā)與應(yīng)用,2013(4):1?5.
[10] 毛紅閣,郭紅,陳東,等.Android移動(dòng)通訊序列化協(xié)議研究[J].南陽(yáng)師范學(xué)院學(xué)報(bào),2012(6):47?49.