protocol buffer

protocol buffer 是 google 的一種數據交換的格式,它獨立於語言,獨立於平臺。google 提供了三種語言的實現:java、c++ 和 python,每一種實現都包含了相應語言的編譯器以及庫文件。因爲它是一種二進制的格式,比使用 xml 進行數據交換快許多。能夠把它用於分佈式應用之間的數據通訊或者異構環境下的數據交換。本文經過一個簡單的示例介紹 protocol buffer。

在開始以前須要下載 protocol buffer 的編譯器和相應類庫。下載地址爲: http://code.google.com/p/protobuf/downloads/list 。當前版本爲 2.3.0,下載一下兩個壓縮包:protoc-2.3.0-win32.zip 和 protobuf-2.3.0.zip,前者是 protocol buffer 編譯器,後者包含了三種語言的開發包。

首先解壓 protoc-2.3.0-win32.zip,把 protoc.exe 文件放到 path 路徑中,最簡單的就是把這個文件複製到 c:\windows 目錄中。

解壓 protobuf-2.3.0.zip 文件,假設解壓後的目錄爲 proto_home。因爲此開發包中只包含了源文件,沒有包含打包後的 jar 文件,因此須要本身手動編譯。下面一步一步來編譯 protocol buffer 的 java 實現,因爲 protocol buffer 使用 maven 做爲編譯工具,因此必須先下載安裝 maven,maven 能夠從 http://maven.apache.org 上下載。安裝 maven 很是簡單,只要解壓並把 bin 目錄添加到 path 中便可。安裝好 maven 後,測試一下 maven 是否安裝成功,打開命令行窗口,運行命令 mvn -version,當看到一下輸出後,說明 maven 安裝成功。
 
 
在編譯以前還需把 protocol buffer 的編譯器複製一份到把 protocol buffer 的編譯器複製一份到目錄 proto_home\src\ 中,因爲在 maven 腳本中調用了這個文件。下面在命令行窗口中把當前工做目錄定位到proto_home\java 中,運行命令 mvn package。編譯完成後會在 taget 目錄中生成一個 jar 文件 protobuf-java-2.3.0.jar。

protocol buffer 的編譯器和基於 java 的類庫已經準備好了,下面能夠使用 protocol buffer 寫一個簡單的示例。本文中就直接使用 protocol buffer 自己自帶的一些示例,這個示例在 proto_home\examples 目錄中。這個示例會用到這個目錄中的 addressbook.proto、AddPerson.java 和 ListPerson.java 文件。下面一步一步來運行這些示例。

首先把前面編譯生成的 protobuf-java-2.3.0.jar 複製到 proto_home\examples 目錄中,便於引用。

使用 protocol buffer 編譯器編譯 addressbook.proto 文件。打開命令行窗口,並定位到 proto_home\examples 目錄中,運行命令  protoc --java_out=. addressbook.proto,執行這個命令後會在當前目錄下生成一個java類 com.example.tutorial.AddressBookProtos.java。

生成了 java 類以後就是編譯並運行這個示例,在命令行中執行命令  javac -d . -classpath .;protobuf-java-2.3.0.jar AddPerson.java ListPeople.java com\example\tutorial\AddressBookProtos.java。

下面運行 AddPerson,在命令中執行命令  java -cp .;protobuf-java-2.3.0.jar AddPerson addr.dat,按照提示輸入相應的信息,以下圖所示
 
 
運行這個程序會在當前目錄中建立一個數據文件 addr.dat 保存 protocol buffer 生成的數據。運行程序 ListPeople 則能夠讀取 addr.dat 文件中的數據。
java -cp .;protobuf-java-2.3.0.jar ListPeople addr.dat
以下圖所示
 
相關文章
相關標籤/搜索