Protobuf详解-创新互联
Protobuf详解
创新互联致力于成都网站制作、网站设计、外贸网站建设,成都网站设计,集团网站建设等服务标准化,推过标准化降低中小企业的建站的成本,并持续提升建站的定制化服务水平进行质量交付,让企业网站从市场竞争中脱颖而出。 选择创新互联,就选择了安全、稳定、美观的网站建设服务!按:
新公司前端后端,使用的数据化方式是protobuf (Protocol Buffer)。
一,什么是Protobuf
官方文档给出的是:
a language-neutral, platform-neutral, extensible way of serializing structured data for use in communications protocols, data storage, and more.
二,Protobuf的优点
1,性能好,效率高
2,代码生成机制,数据解析类自动生成
3,支持向后兼容和向前兼容
4,支持多种编程语言(java,c++,python)
5,参考文档:http://blog.csdn.net/caisini_vc/article/details/5599468
三,Protobuf的缺点
1, 应用不够广
2, 二进制格式导致可读性差(二进制格式)
3, 缺乏自描述
官方文档描述如下:for instance, protocol buffers would not be a good way to model a text-based document with markup (e.g. HTML), since you cannot easily interleave structure with text
4, 参考文档:http://blog.csdn.net/caisini_vc/article/details/5599468
四,Protobuf环境的搭建
步骤:
1, 安装maven
http://blog.csdn.net/jiangguilong2000/article/details/9284437
2, 下载probuf源码和编译器
http://blog.csdn.net/jiangguilong2000/article/details/9284297
3, 拷贝文件,执行相应mvn install命令。 (protobuf并不提供jar包,需要自己执行命令生成)
Note:
在这个地方遇到了一个问题,错误信息如下:
Failed to execute goal org.apache.maven.plugins:maven-antrun-plugin:1.3:run (generate-sources) on project protobuf-java: An Ant BuildException has occured: Execute failed: java.io.IOException: Cannot run program "..\src\protoc": CreateProcess error=2, ????????? ->
原因:犯了了一个很2的问题,拷贝protoc.exe文件的路径拷错了。请详细比较步骤2中的路径,一定拷对路径。
4,通过protoc.exe编译addressbook.proto文件
http://blog.sina.com.cn/s/blog_653ac36d0101h9kn.html
五,核心概念
1,.proto文件
相当于确定数据协议,数据结构中存在哪些数据,数据类型是怎么样
2,modifiers
2-1 required 不可以增加或删除的字段,必须初始化
2-2 optional 可选字段,可删除,可以不初始化
2-3 repeated 可重复字段, 对应到java文件里,生成的是List
3,Message
在proto文件里,数据的协议时以Message的形式表现的。
4, Build
生成具体的java类时,例如Person.java,同时会存在build方法。文档的意思是对于转化后的数据,具有唯一性,build提供了便利的方法来初始化这些数据。
六,其他
暂无
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
本文标题:Protobuf详解-创新互联
地址分享:http://scyanting.com/article/dpdedp.html