999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Protocol Buffer在Android企業云通訊錄中的應用*

2012-06-27 05:59:38沈奇威
電信科學 2012年9期
關鍵詞:用戶

殷 昊,沈奇威,王 純

(1.北京郵電大學網絡與交換技術國家重點實驗室 北京100876;2.東信北郵信息技術有限公司北京100191)

1 引言

2007年,由Google公司推出的Android操作系統,由于具有良好的開放性和平臺開發的便捷性等特點,迅速得到許多廠商的支持,同時也受到廣大應用開發者的追捧,市場份額迅速攀升[1],已躍居第一大手機操作系統。并且,每個成熟的企業都會維護一個員工通訊錄,而讓員工把企業通訊錄添加到手機通訊錄中會造成其通訊錄超量,故而可查詢、直接撥打、來電提示的Android企業通訊錄應用便有了其實用價值,這些功能在Android應用中實現都比較容易。又因為員工離職、新員工加入、員工信息變化等,企業通訊錄會經常發生變化,因此采用在云端維護數據、應用端更新的模式很為適合,服務器與終端之間更新的模式以及方式是整個應用的核心環節,需要滿足傳輸數據量小、時間耗費短、安全性高等條件。

2 相關背景

目前大多數 Android網絡應用采用 XML(extensible markup language)或者 JSON(JavaScript object notation)等在傳統互聯網領域已經被廣泛應用的數據通信格式,其優點是技術已經被大多數開發者掌握,學習成本低,開發時不需要額外安裝編譯器,并且明文方式方便擴展與調試。但是,這二者有著信息冗余度大、解析慢、明文傳輸等缺點,解決這些問題需要額外的壓縮與解壓縮、加密與解密等方式,增加工作量的同時,又使得編碼、解析的過程更慢。而相對于XML和 JSON,Google的另外一項技術Protobuf(Protocol Buffer)有著數據量小、解析快、安全性較高等優點,這些優點都是移動互聯網現在非常需要的特點,也是企業云通訊錄進行同步更新環節所需要的特點。

Protobuf是Google公司開發的一種數據描述語言,廣泛地應用于Google內部,用于結構化數據的描述、傳輸和存儲[2],類似于 XML、JSON這樣的數據表示語言,其最大的特點是基于二進制[3],因此比傳統的數據表示語言XML、JSON高效、短小得多。雖然是二進制數據格式,但并沒有因此而讓使用變得復雜,開發人員通過按照一定的語法定義結構化的消息格式(.proto文件),然后使用命令行工具中簡單的命令語句,就可以自動生成相關的代碼文件,可以支持Java、C++、python等語言環境,另外第三方擴展支持更多語言。通過將生成的代碼文件包含在項目中,可以很輕松地調用相關方法來完成業務消息的編碼與解析工作。Protobuf庫在效率、數據大小、易用性上有著很好的性能,故而能在Google公司得到廣泛應用。Google已經將這樣一套框架開源發布,Protobuf能夠在更多的方面得到更廣泛的應用,目前已經正在使用的有超過 48 162種報文格式定義和超過12 183個 .proto文件[4]。Protobuf的這些優點使得其不僅在服務器通信以及存儲上有用武之地,同時在Android終端網絡應用中,尤其是云端應用中,使用也非常適合,減小數據傳輸流量的同時又能提高解析效率。

3 Protobuf在Android企業云通訊錄中使用

利用時間戳的方式,在云端記錄所有數據發生變化的時間戳,終端應用發起更新時,提交上次更新的時間戳,云端服務器便可提取出所有發生變化的數據,只要注意時間戳要統一使用系統的時間戳,這種變量更新的模式就不難實現。數據一旦更新到客戶端應用中,在應用中實現查找、呼叫、發郵件、來電監聽也都不難實現。目前很多個人通訊錄都有相關功能。整個企業云通訊錄應用的核心在于如何將更新數據既快速又省流量地傳輸到應用終端,以給用戶最好的使用體驗。相對于目前普遍采用的JSON和XML數據格式,Protobuf數據格式具有數據小、解析快的特點,將大大節省流量、節約同步耗時,同時,其非明文傳輸的特點,也一定程度上起到加密作用。下面介紹Protobuf在Android企業云通訊錄中的應用方法。

3.1 編寫結構化的消息格式(.proto文件)

按照官方文檔的編寫規則以及員工的具體屬性,編寫數據消息格式文件(ebbook.proto)。

3.2 生成自動存取類

首先把前面編譯生成的 protobuf-java-2.4.1.jar和編寫的.proto文件復制到同一個文件夾中,便于引用。使用Protobuf編譯器編譯ebbook.proto文件。打開命令行窗口,并定位到該文件夾中,運行命令protoc--java_out=.ebbook.proto,執行這個命令后會在當前目錄下根據ebbook.proto定義的分組名路徑生成一個java文件Ebbook.java,提供數據的編碼、解碼以及其他很多相關的能力。

3.3 Jar分組引入

創建相關的工程,并將protobuf-java-2.4.1.jar引入到工程的引用庫中。

3.4 生成的文件引入

將Ebbook.java文件添加到Android應用以及網絡服務器端工程的代碼文件中,注意分組名的一致。

3.5 使用Protobuf提供的編解碼能力

在本例中,在服務器端實現對更新的員工信息的編碼,而在終端應用中接收編碼的信息并解析,然后添加到手機端的數據庫中。

3.5.1 服務器端

服務器端,從數據庫中查詢所有手機端上次更新時間戳之后的發生變化的數據項,進行Protobuf方式的編碼,具體代碼如下。

從代碼中可以看到,每一個員工的信息,會構建一個EBer對象,所有EBer對象匯總到一個鏈表中,然后將該鏈表編碼到EBContact對象中。而EBer和EBContact類都是自動生成的Ebbook的內部類,實現Protobuf的編碼能力非常簡單,并不會給使用者帶來麻煩。

生成的ebContact對象,采用如下方式發送到手機端。

response.setContentType("application/octet-stream");

3.5.2 客戶端

在客戶端,對獲取到的ebContact對象進行解析也很方便,所用到的能力,也都是自動生成的代碼中提供的,具體代碼如下。

其中的getData()方法可獲取HTTP(hyper text transport protocol,超文本傳輸協議)響應的內容,利用自動生成的代碼提供的能力很容易就可以解析響應的內容。

在這個實例中,可以驗證,Protobuf的確可以在Android網絡通信應用中使用,并且使用很方便,但是具體性能如何,還需要進一步比較測試。

4 Protobuf、XML、JSON 性能測試比較

在考慮一項技術的應用時,通常關注兩點:使用的便捷性和使用的性能指標。通過上面的介紹,筆者發現,Google已經為使用者做了足夠的工作,讓Protobuf的使用者可以很方便地引用其能力來實現相關的功能。但是,相對于大多數開發者非常熟悉的XML和JSON而言,使用Protobuf需要付出一點學習成本。

性能方面,官方文檔給出的之所以不只是用XML的理由為:Protobuf更簡單,文件大小比XML小3~10倍,快20~100倍,更少的歧義,可以方便地生成數據存取類[5]。

為了更好地測試Protobuf的性能,筆者選擇目前在Android網絡應用開發中最常用的兩種數據信息格式XML、JSON做對比,進行測試。在性能測試中,關注兩點,一是數據大小,直接關系到數據傳輸所耗費的數據流量;二是從發起請求開始到結果呈現,整個過程中耗費的時間,這直接關系到用戶的體驗。

實驗所用的工程,沿用上面描述的企業通訊錄的例子,把XML、JSON方式的編解碼能力也擴充到工程中,在手機端根據按鍵的不同,選擇發送不同的請求,服務器根據手機端應用的請求進行不同方式的編碼,以20組員工信息作為數據進行時間與空間的測試。

4.1 空間測試

3種方式編碼結果的文件大小如圖1所示。

從圖1中可以看出,Protobuf方式的文件大小接近XML方式文件大小的1/4,符合官方文檔里面小3~10倍的說法,JSON較XML在文件大小方面也有明顯優勢,但是與Protobuf相比,還相差較多。同時,這也意味著,在Android客戶端網絡應用中使用Protobuf進行數據交互,將為用戶節省將近3/4的流量。

4.2 時間測試

在客戶端點擊按鍵時,記錄起始時間戳;在信息呈現出來時,記錄結束時間戳,二者之差就是整體耗時,這段時間也是用戶的等待時間,是影響用戶體驗的重要因素,因此時間性能非常重要,比空間性能更易影響用戶體驗。由于這段時間有多種因素影響,故而測試50組數據,求平均值來做比較。使用galaxy nexus手機通過Wi-Fi連接到與服務器同一局域網內,測試結果如圖2所示;通過EDGE(enhanced data rate for GSM evolution)網絡連接到公網服務器,測試結果如圖3所示。

顯然,Protobuf的時間性能依然是最好的,其次是JSON,最差的還是XML,但是測試結果卻沒有官方文檔里面表述的快20~100倍那么多,差距比較小,這是因為這個時間里面包含著網絡傳輸的時間,并且網絡傳輸時間在其中占有相當大的比重。不過,筆者所關心的性能就是用戶感知到的時間,而不是純編碼和解析時間上究竟相差多少倍。從中也不難看出,其實,不管是快多少倍,畢竟解析速度都是很快的,差距都是毫秒級的,也就是說,在解析時間上用戶難以感知到差距。另外,在EDGE網絡中,傳輸的速度相對局域網Wi-Fi環境下要慢很多,傳輸速度決定整個更新操作的用戶感知時間,而Protobuf在空間上的優勢,大大節約傳輸時間,時間性能優勢更明顯,故而用戶體驗更好。

另外,安全性也是一個很重要的指標,Protobuf非明文傳輸,一定程度上,比直接使用XML和JSON安全性要高一些,但是,Protobuf并不是非常安全的數據傳輸格式,如保密級別要求較高,仍需要進一步的加密措施。

5 結束語

Protobuf作為一種數據信息格式,在Google公司內部已經得到廣泛使用,其在空間性能、時間性能、易用性、安全性上有著明顯的優勢,而這些性能也是Android企業云通訊錄所需要的。經過測試比較,將Protobuf技術引入到Android企業云通訊錄中,可以降低應用流量耗費、提高應用信息呈現速度,同時基本不會增加開發者的代碼工作量。

1 李林濤,石慶民.Android智能手機操作系統的研究.科技信息,2011(25):80

2 宮唐小恒,李旭偉.Protocol Buffers——比XML快近100倍.電腦與信息技術,2009,17(1):65~68

3 史棟杰.五種快速序列化框架的性能比較.電腦知識與技術,2010,6(34):9710~9722

4 Google Protocol Buffer的使用和原理.http://www.ibm.com/developerworks/cn/linux/l-cn-gpb/,2012

5 Protocol Buffer官方主頁.http://code.google.com/intl/zh-CN/apis/protocolbuffers/docs/overview.html,2012

6 Jianhua Feng,Jinhong Li.Google Protocol Buffers research and application in online game.Proceedings of 2011 13th IEEE Joint InternationalComputerScience and Information Technology Conference,Chongqing,China,2011

7 楊豐盛.Android應用開發揭秘.北京:機械工業出版社,2010

8 朱丹丹,王純,郭盛興.基于TD-SCDMA電子相框的照片分享方案.計算機系統應用,2012,21(5):12~16

猜你喜歡
用戶
雅閣國內用戶交付突破300萬輛
車主之友(2022年4期)2022-08-27 00:58:26
您撥打的用戶已戀愛,請稍后再哭
關注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
關注用戶
商用汽車(2016年5期)2016-11-28 09:55:15
兩新黨建新媒體用戶與全網新媒體用戶之間有何差別
關注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
關注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
挖掘用戶需求尖端科技應用
Camera360:拍出5億用戶
創業家(2015年10期)2015-02-27 07:55:08
100萬用戶
創業家(2015年10期)2015-02-27 07:54:39
主站蜘蛛池模板: 日韩人妻精品一区| 久久亚洲中文字幕精品一区| 国产97视频在线观看| 亚洲毛片一级带毛片基地| 美女无遮挡免费视频网站| 99偷拍视频精品一区二区| 四虎国产在线观看| 久久中文字幕2021精品| 免费人成又黄又爽的视频网站| 波多野结衣中文字幕一区| 国产在线观看91精品| 久久久久久久久18禁秘| 国产乱人视频免费观看| 波多野结衣久久精品| 日韩欧美中文字幕在线韩免费| 免费又黄又爽又猛大片午夜| 亚洲AV色香蕉一区二区| 国产精品视频久| 亚洲国产综合精品一区| 人妻中文久热无码丝袜| 在线观看精品国产入口| 成人国产三级在线播放| 中文字幕中文字字幕码一二区| 欧美笫一页| a国产精品| 亚洲第一网站男人都懂| 久久99精品久久久久纯品| 婷婷成人综合| 亚洲大学生视频在线播放| 亚洲妓女综合网995久久| 国产乱人乱偷精品视频a人人澡| 亚洲永久精品ww47国产| 日韩在线播放中文字幕| 欧美人在线一区二区三区| 精品视频第一页| 四虎成人免费毛片| 在线亚洲小视频| 国产微拍一区| 欧美亚洲欧美| 天天色综合4| 无码一区18禁| 国产导航在线| a在线亚洲男人的天堂试看| 亚洲天堂日韩在线| 高清无码不卡视频| 久久天天躁狠狠躁夜夜2020一| 久久五月视频| 亚洲中文在线看视频一区| 日韩精品一区二区三区大桥未久 | 亚洲精品无码人妻无码| 欧美精品不卡| 综合五月天网| 亚洲 日韩 激情 无码 中出| 亚洲性日韩精品一区二区| 婷婷综合在线观看丁香| 在线亚洲精品福利网址导航| 91香蕉国产亚洲一二三区| 干中文字幕| 色婷婷成人网| 日本91在线| 久久99久久无码毛片一区二区| 精品伊人久久久香线蕉 | 亚洲色图欧美| 欧美午夜小视频| 911亚洲精品| 凹凸国产熟女精品视频| 国产三级精品三级在线观看| 日本一本在线视频| 红杏AV在线无码| 久久九九热视频| 四虎成人在线视频| 鲁鲁鲁爽爽爽在线视频观看| 国内黄色精品| 色婷婷在线播放| 国产免费观看av大片的网站| 国产一区二区三区在线观看免费| 国产一区二区色淫影院| 色综合天天综合中文网| 久久国产黑丝袜视频| 国产99免费视频| 一级做a爰片久久毛片毛片| 国产乱人乱偷精品视频a人人澡|