深入protoBuf】的更多相关文章

由于项目组现在用的rpc是基于google protobuf rpc协议实现的,所以花了点时间了解下protobuf rpc.rpc对于做分布式系统的人来说肯定不陌生,对于rpc不了解的童鞋可以自行google,这里只是做个简单的介绍.rpc的主要功能是让分布式系统的实现更为简单,为提供强大的远程调用而不损失本地调用语义的简洁性.为了实现这个目标,rpc框架需要提供一种透明调用机制让使用者不必显示区分本地调用还是远程调用.rpc架构涉及的组件如下: 客户方像调用本地方法一样去调用远程接口方法,R…
一.Protobuf 的优点 Protobuf 有如 XML,不过它更小.更快.也更简单.它以高效的二进制方式存储,比 XML 小 3 到 10 倍,快 20 到 100 倍.你可以定义自己的数据结构,然后使用代码生成器生成的代码来读写这个数据结构.你甚至可以在无需重新部署程序的情况下更新数据结构.只需使用 Protobuf 对数据结构进行一次描述,即可利用各种不同语言或从各种不同数据流中对你的结构化数据轻松读写. 有两项技术保证了采用 Protobuf 的程序能获得相对于 XML 极大的性能提…
之前的文章讲述了socket通信的一些基本知识,已经本人自定义的C#版本的socket.和java netty 库的二次封装,但是没有真正的发表测试用例. 本文只是为了讲解利用protobuf 进行C# 和 java的通信.以及完整的实例代码 java 代码 svn 地址,本人开发工具是NetBeans 8.0.2 使用 maven 项目编译 http://code.taobao.org/svn/flynetwork_csharp/trunk/BlogTest c# 代码 svn 地址 使用的是…
Google的ProtoBuf序列化器性能的牛逼已经有目共睹了,可以把它应用到Socket通讯,队列,Wcf中,身为dotnet程序员一边期待着不久后Grpc对dotnet core的支持更期待着Wcf有一天能在Linux平台上闪瞎所有人.现在简单表述下Wcf中应用ProtoBuf替代默认的序列化器. 准备: 首先,新建一套Wcf的解决方案,包含服务,宿主外加两个客户端用来测试调用: Wcf_ProtoBufSample.ClientViaMetaData会通过添加服务引用的方式调用服务,Wcf…
github地址:https://github.com/google/protobuf支持多种语言,有多个语言的版本,本文采用的是在centos7下编译源码进行安装. github上有详细的安装说明:https://github.com/google/protobuf/blob/master/src/README.md 1.确定centos7上已经安装了下面的软件,或者直接用yum进行更新 autoconf automake libtool curl (used to download gmoc…
1.准备工作 需要到github上下载相应的文件,地址https://github.com/google/protobuf/releases protobuf有很多不同语言的版本,因为我们需要的是jar文件,所以选择java版本下载.以下以版本3.1.0进行举例说明. 如果是在linux64环境下编译,可以选择以下两个文件,第一个相当于java发行版本的源码文件,第二个是一个编译好的protoc程序文件(如果想自己编译protobuf程序文件,参考上篇文章protobuf的编译安装). prot…
protobuf官方git地址 protobuf官方英文文档   (你懂的需要FQ) protobuf中文翻译文档 protobuf概述          (官方翻译 推荐阅读) protobuf入门          (官方翻译 推荐阅读) protobuf语法指南     http://colobu.com/2015/01/07/Protobuf-language-guide/  (官方翻译 推荐阅读) protobuf编码           (官方翻译 推荐阅读) protobuf3现在…
google protobuf是一个灵活的.高效的用于序列化数据的协议.相比较XML和JSON格式,protobuf更小.更快.更便捷.google protobuf是跨语言的,并且自带了一个编译器(protoc),只需要用它进行编译,可以编译成Java.python.C++.C#.Go等代码,然后就可以直接使用,不需要再写其他代码,自带有解析的代码.更详细的介绍见: Protocol Buffers protobuf安装 1.下载protobuf代码 google/protobuf 2.安装p…
c# (ENUM)枚举组合类型的谷歌序列化Protobuf,必须在序列化/反序列化时加上下面: RuntimeTypeModel.Default[typeof(Alarm)].EnumPassthru = true; [ProtoContract]     class LbsItem     {         [ProtoMember(1)]         public Alarm alarm         {             get; set;         }     }  …
好久没写东西了,今年实在太忙,基本都在搞业务开发,晚上来补一篇,作为今年的收官博客.google-rpc 正式发布以来,受到了不少人的关注,这么知名的rpc框架,不集成到dubbox中有点说不过去. 但是grpc的思路与其它rpc(比如:avro/thrift)有些不一样,并非直接采用 "接口定义+服务实现"的套路,而是采用了"抽象类派生"的做法,见下面的示例: syntax = "proto3"; option java_multiple_fi…
问题描述: 今天用vs2013编译protobuf 2.4.1 报错: 错误 3 error C3861: "max": 找不到标识符 f:\google\protobuf\protobuf-2.4.1\src\google\protobuf\io\zero_copy_stream_impl_lite.cc 168 1 libprotobuf错误 1 error C3861: "min": 找不到标识符 f:\google\protobuf\protobuf-2.4…
声明:本文大部分内容翻译自官方英文文档,其中可能穿插着加入自己的语言用以辅助理解,本文禁止转载. 一.什么是protocol buffers Protocol buffers是一个灵活的.高效的.自动化的用于对结构化数据进行序列化的协议,与XML相比,Protocol buffers序列化后的码流更小.速度更快.操作更简单.你只需要将要被序列化的数据结构定义一次(译注:使用.proto文件定义),便可以使用特别生成的源代码(译注:使用protobuf提供的生成工具)轻松的使用不同的数据流完成对这…
Protocol Buffer ProtocolBuffer是Google公司的一个开源项目,用于结构化数据串行化的灵活.高效.自动的方法,有如XML,不过它更小.更快.也更简单.你可以定义自己的数据结构,然后使用代码生成器生成的代码来读写这个数据结构.你甚至可以在无需重新部署程序的情况下更新数据结构. 一个例子 比如有个电子商务的系统(假设用C++实现),其中的模块A需要发送大量的订单信息给模块B,通讯的方式使用socket. 假设订单包括如下属性:----------------------…
protobuf和thrift类似,也是一个序列化的协议实现,简称PB(下文出现的PB代表protobuf). Github:https://github.com/google/protobuf 上图,说明一下protobuf协议. PB以“1-5个字节”的编号和类型开头,格式:编号左移3位和类型取或得到. 编号是什么? 编号就是 定义的proto文件中各个字段的编号. 如: 类型是什么? 类型就是 定义的proto文件中各个字段类型,使用3位表示类型,可以表示0到7,共8种类型,PB类型只用了…
原文地址:http://www.iclojure.com/blog/articles/2016/04/29/cocos2d-js-ajax-protobuf-nodejs-java Google的Protobuf Protobuf全称为“Protocol Buffers”,是Google开源出来的一个序列化协议并配备多种编程语言的实现(Java.C.C++.Python等,甚至JavaScript.ActionScript都有对应的实现),其本质是按照协议规范编写proto文件,该proto文件…
protobuf 最近使用protobuf,变编译工具时遇上一点问题.现在附上解决方案 编译过程 完全参照 https://github.com/alexeyxo/protobuf-objc 编译出错 遇到如下错误 ./google/protobuf/objectivec-descriptor.pb.h:17:2: error: This file was generated by an older version of protoc which is #error This file was…
安装WebApiContrib.Formatting.ProtoBuf Install-Package WebApiContrib.Formatting.ProtoBuf 注册ProtoBufFormatter public static class WebApiConfig { public static void Register(HttpConfiguration config) { config.Formatters.Add(new ProtoBufFormatter()); // We…
主要是编译时没有添加protobuf库文件 g++  -o Writer.o  lm.helloworld.pb.cc Writer.cpp -L/usr/local/lib -lprotobuf…
Mac下Protobuf安装 Protobuf源码Github地址: https://github.com/google/protobuf 配置环境教程: https://github.com/google/protobuf/blob/master/src/README.md 注意问题: 1.Mac系统安装配置工具. a.执行$ sudo xcode-select --install b.安装port (https://www.macports.org) c.执行$ sudo /opt/loca…
前言 上篇博文介绍了怎么样在 asp.net core 中使用中间件,以及如何自定义中间件.项目中刚好也用到了Redis,所以本篇就介绍下怎么样在 asp.net core 中使用 Redis 进行资源缓存和Session缓存. 如果你觉得对你有帮助的话,不妨点个[推荐]. 目录 Redis 介绍 asp.net core Session 介绍 Redis & Session 实例讲解 Session的使用 使用 Protobuf 给 Session添加扩展方法 Redis 介绍 下面是Redi…
Google 刚刚开源了grpc,  一个基于HTTP2 和 Protobuf 的高性能.开源.通用的RPC框架.Protobuf 本身虽然提供了RPC  的定义语法,但是一直以来,Google 只开源了Protobuf 序列化反序列化的代码,而没有开源RPC 的实现,于是存在着众多良莠不齐的第三方RPC 实现,不过我在项目中采用WCF搭配Protobuf是一个很不错的RPC实现,Google这个框架是是基于HTTP2的,这是他有特色的地方,带来诸如双向流.流控.头部压缩.单TCP连接上的多复用…
protobuf是google序列化的工具,主要是把数据序列化成二进制的数据来传输用的.它主要优点如下: 1.性能好,效率高: 2.跨语言(java自带的序列化,不能跨语言) protobuf参考文档:Protobuf详解 其实,在netty中使用Protobuf需要注意的是: protobufDecoder仅仅负责编码,并不支持读半包,所以在之前,一定要有读半包的处理器. 有三种方式可以选择: 使用netty提供ProtobufVarint32FrameDecoder 继承netty提供的通用…
1 下载protobuf https://github.com/google/protobuf/releases/download/v2.6.1/protobuf-2.6.1.tar.gz 2  进入下载文件的目录 .tar.gz cd protobuf-/ ./configure make make check sudo make install 我在执行./configure时出现如下问题 Ubuntu: configure error: C++ preprocessor "/lib/cpp…
Protobuf 的 proto3 与 proto2 的区别   On 2015-07-17 19:16:00 By Soli   Protobuf 的 proto3 与 proto2 的区别 这是一篇学习笔记.在粗略的看了 Protobuf 的文档中关于 proto2 和 proto3 的说明后,记录下了几点 proto3 区别于 proto2 的地方. 总的来说,proto3 比 proto2 支持更多语言但 更简洁.去掉了一些复杂的语法和特性,更强调约定而弱化语法.如果是首次使用 Prot…
安装pip, setuptools, and wheel 如果已经从python.org,安装啦Python 2 >=2.7.9 or Python 3 >=3.4 ,那么就已经有啦pip and setuptools, 但是需要升级到最新版本: On Linux or OS X: pip install -U pip setuptools On Windows: python -m pip install -U pip setuptools 安装protobuf pip install pr…
最近在读别人代码的时候发现一个的东西,名字叫protobuf, 感觉挺好用的,写在这里,留个记录.那么什么是protobuf 呢?假如您在网上搜索,应该会得到类似这样的文字介绍: Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准,目前已经正在使用的有超过 48,162 种报文格式定义和超过 12,183 个 .proto 文件.他们用于 RPC 系统和持续数据存储系统. Protocol Buffers 是一种轻便高效的结构化…
Protobuf序列化的字节流数据是不能自描述的,当我们通过socket把数据发送到Client时,Client必须知道发送的是什么类型的数据,才能正确的反序列化它.这严重影响限制了C/S功能的实现,不解决的话信道事实上只能传输一种类型的数据.本文讲解一下我用的解决办法,虽然我觉得应该有官方的实现更合理,即原生支持Protobuf的自描述. (在金融领域,有一个叫FAST的协议,基本原理和Protobuf相同,并且有更高的压缩率,并且序列化后的字节流是自描述的,可以自动反序列化为对应的模板的数据…
http://blog.csdn.net/hguisu/article/details/20721109#0-tsina-1-1601-397232819ff9a47a7b7e80a40613cfe1 1.  Protobuf简介 protobuf是google提供的一个开源序列化框架,类似于XML,JSON这样的数据表示语言,其最大的特点是基于二进制,因此比传统的XML 表示高效短小得多.虽然是二进制数据格式,但并没有因此变得复杂,开发人员通过按照一定的语法定义结构化的消息格式,然后送给命令行…
------------------------------------------------------------------------------------------------------------------------------------------------------------------- 早前在公司突然要把项目移植到IOS上,但是protobuf却出现了不能使用的情况,后来在网上找到了解决方案,感谢那位大神. ------------------------…
1.Protocol Buffers简介 Protocol Buffers (ProtocolBuffer/ protobuf )是Google公司开发的一种数据描述语言,类似于XML能够将结构化数据序列化,可用于数据存储.通信协议等方面.现阶段支持C++.JAVA.Python等三种编程语言. 2.protobuf相比Xml的优点 •更简单 •数据描述文件只需原来的1/10至1/3 •解析速度是原来的20倍至100倍 •减少了二义性 •生成了更容易在编程中使用的数据访问类 3.安装 yum -…