最近因爲項目的須要,研究了一下protobuf。在這裏分享一下經驗,具體介紹網上也有很多,能夠百度先了解一下。
ProtoBuf在as中主要就是序列反序列化的做用,咱們主要用它來代替amf,由於像c++這類語言不支持amf。
1.AS有兩種方案,一種是官方的,仍是一種是國人寫的。這裏先介紹官方的。
首先介紹一下proto文件,這個文件主要用來定義描述文件,做用是生成先後臺兩種類,這樣能夠省去一邊的工做,語法比較簡單,這裏就不介紹。
2.把proto文件生成as文件,這裏須要編譯器proto.exe,默認支持c++,java,python.咱們得本身安裝vs來編譯產生支持as的編譯器,具體過程就再也不描述,能夠看protobuf-actionscript3中的說明。能夠點擊這裏下載我已經編譯好的程序。
下面介紹編譯過程,使用cmd命令
protoc.exe –proto_path= c:\ –as3_out=c:\ options.proto
參數說明
–proto_path proto文件的目錄
–as3_out 輸出目錄
最後跟proto文件名,在輸出目錄下產生類文件。
protoc.exe –proto_path= c:\ –as3_out=c:\ options.proto
參數說明
–proto_path proto文件的目錄
–as3_out 輸出目錄
最後跟proto文件名,在輸出目錄下產生類文件。只要將類文件拷貝到項目裏邊就能夠使用了,記得導入 <ignore_js_op>protoc.rar
3.使用方法,導入swc文件.
var byte:ByteArray=new ByteArray;
message.writeToDataOutput(byte);//序列化到byte中;
var msg:Msg=new Msg;
msg.readFromDataOutput(byte);//反序列化message.
使用ProtoBuf後能夠跟c++等語言直接傳輸對象,而沒必要關心內部的細節,使開發更爲方便。我封裝了一套socket的類庫,能夠直接下載來使用。
<ignore_js_op> NetEngine.rar
國人寫的那套as的方案protoc-gen-as3具體沒有深刻研究,區別只是它的編譯方式是使用插件方式,因此不用本身再編譯編譯器,使用官方的就好了。具體看它裏面的幫助,其它地方應該大同小異。php