<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-348  評論-598  文章-0  trackbacks-0
    Google Protocol Buffers是google出品的一個協議生成工具,特點就是跨平臺,效率高,速度快,對我們自己的程序定義和使用私有協議很有幫助。

    Protocol Buffers入門:
    1、去 http://code.google.com/p/protobuf/downloads/list 下載一個源代碼包和一個已編譯好的二進制包
    2、找一個Proto示例代碼,使用命令
    protoc -I=$SRC_DIR --java_out=$DST_DIR $SRC_DIR/addressbook.proto
    將proto文件編譯一下即可得到對應的Java源代碼。例如 protoc -I=src --java_out=addressbook.proto。

    Java項目配置:
    1、先用
         $ protoc --java_out=src/main/java -I../src ../src/google/protobuf/descriptor.proto
         命令把源代碼包中的descriptor.proto編譯一下,生成一個類。
    2、將第一步生成的那個文件連同源代碼包中的java/src/main/java中的源代碼,一起丟入你的項目工程,這就是基礎類庫了。
    3、之后你就可以寫自己的proto文件,然后編譯,連同上面的基礎類庫丟入你的項目工程中,就可以運行了。

    C#的配置:
    1、Google本身不自帶生成C#源碼的功能,要使用C#,必須使用一個Csharp port,項目地址是:http://code.google.com/p/protobuf-csharp-port/
    2、源碼可以從SVN上面Download下來,Download下來之后,需要去下載一個NAnt,然后在項目源碼目錄下進行命令操作,用來編譯生成可執行文件
    nant clean build test dist
    這步做完會生成幾個文件:

  • ProtoGen.exe - the source code generator
  • Google.ProtocolBuffers.dll - the library part of the project
  • ProtoMunge.exe - tool to remove sensitive data from binary messages
  • ProtoDump.exe - tool to dump a binary message as text
  • ProtoBench.exe - tool to run performance benchmarks on binary messages

  • 主要是第一個和第二個
    第一個ProtoGen.exe是用來生成C#源碼的
    第二個Google.ProtocolBuffers.dll是用來在項目中進行引用的。

    3、在源碼中附帶了記個proto文件,是根據C#版本專門修改過的,可以拿出來做生成測試,執行以下命令可以得到C#源文件:
    protoc --descriptor_set_out=addressbook.protobin --proto_path=protos --include_imports protos\tutorial\addressbook.proto 
     
    protogen addressbook.protobin
    如果想生成C#源碼,需要執行第一步將源文件用Protoc編譯一下,編譯之后再用Protogen生成一份C#文件,會生成三個文件,只有AddressBookProtos.cs有用,將這個文件連同Google.ProtocolBuffers.dll一起丟入項目,你就可以使用了。

    ---------------------------------------------------------
    專注移動開發

    Android, Windows Mobile, iPhone, J2ME, BlackBerry, Symbian
    posted on 2009-08-21 13:45 TiGERTiAN 閱讀(11333) 評論(12)  編輯  收藏 所屬分類: JavaDotNetAndroid

    評論:
    # re: Google Protocol Buffers 快速入門(帶生成C#源碼的方法) 2009-12-01 15:55 | YYXZ

    您好,有個問題請教,就是有個項目采用“java 手機客戶端、C++服務器”,C++服務器的協議是用結構體定義的,java客戶端解析起來很不方便。
    請問能否用Google Protocol Buffers呢,這樣就不用人工解析消息格式了,望指教。

    我的聯系方式:qq:358953076  回復  更多評論
      
    # re: Google Protocol Buffers 快速入門(帶生成C#源碼的方法) 2009-12-01 16:00 | TiGERTiAN
    @YYXZ
    你可以看下,我記得好像c++是生成類文件,只要稍作修改就可以使用了,如果客戶端測試方便,那稍微修改下也很好。或者你就自定義協議來傳輸  回復  更多評論
      
    # re: Google Protocol Buffers 快速入門(帶生成C#源碼的方法) 2009-12-01 16:14 | YYXZ
    @TiGERTiAN
    “自定義協議”怎么講?  回復  更多評論
      
    # re: Google Protocol Buffers 快速入門(帶生成C#源碼的方法) 2009-12-01 16:18 | TiGERTiAN
    @YYXZ
    你可以用json,xml等等來拼湊自己的協議,然后上客戶端去解析  回復  更多評論
      
    # re: Google Protocol Buffers 快速入門(帶生成C#源碼的方法) 2009-12-01 16:24 | YYXZ
    @TiGERTiAN
    哦,謝謝您的解答。
    另外一個問題,使用Google Protocol Buffers生成的協議,比用C++定義的結構體消息是不是更小些,傳輸起來是不是更節省帶寬呢,因為客戶端是手機,越節省越好了。  回復  更多評論
      
    # re: Google Protocol Buffers 快速入門(帶生成C#源碼的方法) 2009-12-01 16:27 | TiGERTiAN
    @YYXZ
    你是什么意思?你c++用結構體的話傳輸到客戶端肯定要有自己協議的,google生成的東西里面會加一些他自己的格式在里面,但是加的很少。google的協議大小不一定比你自定義的小很多,但是解析起來肯定比你的快和方便。因為他是從二進制直接轉換成對象,中間的處理已經盡量做到高效了。  回復  更多評論
      
    # re: Google Protocol Buffers 快速入門(帶生成C#源碼的方法) 2009-12-01 16:36 | YYXZ
    @TiGERTiAN
    是這樣的,目前C++服務器用結構體定義的協議,發送到java手機客戶端,需要自己解析,還得考慮內存對齊問題,效率太低了。考慮采用Protocol Buffers,這樣會提高效率吧   回復  更多評論
      
    # re: Google Protocol Buffers 快速入門(帶生成C#源碼的方法) 2009-12-01 16:41 | TiGERTiAN
    @YYXZ
    實在不行就用xml也可以,不需要考慮這些,直接線性解析xml文本,效率跟速度都不會慢,只是需要修改架構了。用buffers也要重新寫協議,做之前,最好在j2me上面重新測試下buffers的性能和可用性。  回復  更多評論
      
    # re: Google Protocol Buffers 快速入門(帶生成C#源碼的方法) 2009-12-01 16:48 | YYXZ
    @TiGERTiAN
    嗯,好的,再次謝謝您的解答。  回復  更多評論
      
    # re: Google Protocol Buffers 快速入門(帶生成C#源碼的方法) 2009-12-01 16:49 | TiGERTiAN
    @YYXZ
    不客氣,互相幫助哈。  回復  更多評論
      
    # re: Google Protocol Buffers 快速入門(帶生成C#源碼的方法) 2010-09-09 11:10 | lishen
    我覺得有兩種方式:1、用Protocol Buffers,就是不知道生成的JAVA代碼在j2me下能不能運行。 2、用JSON做消息格式,然后壓縮傳輸。客戶端收到再解壓。這個需要自己實現消息頭,然后在解析消息體,稍微麻煩些,不過消息解析可以用現成的庫(因為Java有現成的解析JSON的庫)。而且由于壓縮的緣故,流量可以很小,如果可能要比用Protocal BUffers復雜。 你用結構體的意思應該是把內存塊直接傳給JAVA客戶端了,JAVA對于二進制操作遠沒有C++方便,而且結構體中有很多內存區域并沒有數據,拜拜浪費流量。而且如果要傳遞就夠提就必須保證結構體內存連續,這樣結構體中就不能使用復雜的數據結構,多不爽啊。還是用JSON或PB好。  回復  更多評論
      
    # re: Google Protocol Buffers 快速入門(帶生成C#源碼的方法) 2012-05-08 17:08 | 游客1
    c# 配置的時候,你這些命令都是在什么地方輸入的啊。  回復  更多評論
      
    主站蜘蛛池模板: 日韩黄色免费观看| 国产大片线上免费观看| 亚洲男人的天堂一区二区| 亚洲成av人片在www鸭子| 成人毛片免费观看| 亚洲精品国产首次亮相 | 野花香在线视频免费观看大全| 亚洲精品视频免费观看| www免费插插视频| 国产国拍亚洲精品mv在线观看 | 日韩不卡免费视频| 亚洲jizzjizz在线播放久| 最近2019中文字幕mv免费看 | MM131亚洲国产美女久久| 中出五十路免费视频| 国产精一品亚洲二区在线播放| 永久在线观看免费视频| 亚洲精品午夜在线观看| 女人被免费视频网站| 五月天国产成人AV免费观看| 人人狠狠综合久久亚洲88| 最近中文字幕大全中文字幕免费| 久久亚洲国产最新网站| 波多野结衣一区二区免费视频| 四虎影在线永久免费观看| 色哟哟国产精品免费观看| 国产亚洲AV无码AV男人的天堂| **aaaaa毛片免费| 国产AV无码专区亚洲AV蜜芽| 亚洲午夜国产精品无码老牛影视 | 久久免费观看国产精品| 亚洲欧洲日产国码在线观看| 免费被黄网站在观看| 爽爽爽爽爽爽爽成人免费观看 | 国产AV无码专区亚洲AV蜜芽| 国产成人精品日本亚洲专区61 | 蜜桃AV无码免费看永久| 小说区亚洲自拍另类| 亚洲精选在线观看| 日韩成人免费aa在线看| 国色精品va在线观看免费视频|