Abel Lee

 
   

ProtocolBuffers使用

下载地址就不帖了

google一下就有

pb(ProtocolBuffers)有for N多的语言

基本常用的都涵盖了。。

所以不用担心你现在使用的语言会没法用pb

在某些语言方面貌似pb效率不是最好的

比如AS3 貌似还是原生的rtmp比较快

但pb大大降低了通讯方面的复杂性 这一百几十毫秒的差距

在不是世界级应用的情况下 还是能接受的

用pb 你基本就不用自己另外写model了

写了.proto 生成出来的 就是model

服务端发过来序列化一下就能用

先帖一下proto生成c文件的命令:

Windows:   protoc.exe -I=D:\protobuf\test --cpp_out=D:\protobuf\test D:\protobuf\test\helloworld.proto

Mac:   protoc --proto_path=src --objc_out=src src/helloworld.proto

1:导入protobuf-obj.src/runtime/Classes 并改命为ProtocolBuffers

2:项目属性 -> Build setting -> Header Search Paths 添加"."

关于pb里能用的数据类型之类的 可以去看google的教程

再就是在目前使用下来的情况来看

貌似pb里不能给字段赋默认值- -!

至少objective-c里 反序列化的时候 会出问题

比如说

message HelloWorld{

        required int32 uid = 1;

        optional string username = 2;

}

然后你在使用的时候

uid如果赋值为0 objective-c端序列化的时候就会报错 malformedMessage

username这个字段本身是可选的 所以 要不你就设置一个字符 要不就直接不赋值

如果你赋值个"" 也就是空字符 objective-c也会报这个错误

原因我也不知道- -!

哪位知道的请指点一下 先谢过了~

至于其它的 比如做RPC或者pb的extension 我现在没用 各位可以去看google的教程

官方有c++ java python的教程~

对了 再补充说一下

如果你跟我一样 客户端是Objective-C的话

可能需要用到github上一个Objective-C的第三方插件生成proto的编译工具

在这个第三方插件能用之前是必需要先装google官方的pb的

在安装官方pb的时候 仔细看一下里面的readme

安装过程的命令是

./configure

make

make check

make install

在readme里说是可以不做make check的 但事实上我没做就不能make install

说是某些文件没生成 所以还是做一下好

我要讲的就是在第一步的时候

要记得加前缀 也就是

./configure --prefix=/usr

这样的话就会把pb装到/usr/lib下

那你在装那个objective-c的编译工具的时候就可以直接按他的步骤来了

否则安装过程就会说找不到某些lib

如果你会 自然怎么样都行

但像我这样的菜鸟 就因为这个问题折腾了我一晚上

所以提醒大家一下~


 
 
评论