本文发表于程序员刘宇的博客,转载请注明来源,博客园同步更新:https://www.cnblogs.com/xiaohutu/p/12168781.html
前言
protobuf作为一种通用套接字格式,各种插件里,最本质、最关键的就是基于二进制的两个操作:
1. 根据proto文件打包出二进制数据。
2. 根据二进制数据反串化出需要的数据格式。
所以其实在不同平台下需要的就是各自的解析库。作为跨平台的套接字,同版本二进制打包出来的格式必须完全一样,1里的proto文件一般也是要在项目开发中多平台通用,2里反串化的格式是当前语言和环境下的格式。在lua环境里,一般反串化出来的就是table。
由于官方并没有给lua支持,所以大家各自发挥,使用的比较多的有4种:
1. pbc-lua: 云风早期写的解析库,解析官方protoc.exe生成的pb,缺点是只解析一层。
2. sproto: 云风(真是孜孜不倦高产出)强推的第二版协议,其实已经不能完全说是proto,而是一种新套接字,只是兼容。这是他自己关于sproto的说明: https://blog.codingnow.com/2015/04/sproto_rpc.html