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
如果你会 自然怎么样都行
但像我这样的菜鸟 就因为这个问题折腾了我一晚上
所以提醒大家一下~