Google Protocol Buffers 快速入门(带生成C#源码的方法)
Google Protocol Buffers是google出品的一个协议生成工具,特点就是跨平台,效率高,速度快,对我们自己的程序定义和使用私有协议很有帮助。
Protocol Buffers入门:
1、去 http://code.google.com/p/protobuf/downloads/list 下载一个源代码包和一个已编译好的二进制包
2、找一个Proto示例代码,使用命令

将proto文件编译一下即可得到对应的Java源代码。例如 protoc -I=src --java_out=addressbook.proto。
Java项目配置:
1、先用
$ protoc --java_out=src/main/java -I../src ../src/google/protobuf/descriptor.proto
命令把源代码包中的descriptor.proto编译一下,生成一个类。
2、将第一步生成的那个文件连同源代码包中的java/src/main/java中的源代码,一起丢入你的项目工程,这就是基础类库了。
3、之后你就可以写自己的proto文件,然后编译,连同上面的基础类库丢入你的项目工程中,就可以运行了。
C#的配置:
1、Google本身不自带生成C#源码的功能,要使用C#,必须使用一个Csharp port,项目地址是:http://code.google.com/p/protobuf-csharp-port/
2、源码可以从SVN上面Download下来,Download下来之后,需要去下载一个NAnt,然后在项目源码目录下进行命令操作,用来编译生成可执行文件

这步做完会生成几个文件:
- ProtoGen.exe - the source code generator
- Google.ProtocolBuffers.dll - the library part of the project
- ProtoMunge.exe - tool to remove sensitive data from binary messages
- ProtoDump.exe - tool to dump a binary message as text
- ProtoBench.exe - tool to run performance benchmarks on binary messages
主要是第一个和第二个
第一个ProtoGen.exe是用来生成C#源码的
第二个Google.ProtocolBuffers.dll是用来在项目中进行引用的。
3、在源码中附带了记个proto文件,是根据C#版本专门修改过的,可以拿出来做生成测试,执行以下命令可以得到C#源文件:



如果想生成C#源码,需要执行第一步将源文件用Protoc编译一下,编译之后再用Protogen生成一份C#文件,会生成三个文件,只有AddressBookProtos.cs有用,将这个文件连同Google.ProtocolBuffers.dll一起丢入项目,你就可以使用了。
---------------------------------------------------------
Google Protocol Buffers 快速入门(带生成C#源码的方法)的更多相关文章
- Google Protocol Buffers 入门
Google Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化.它很适合做数据存储或 RPC 数据交换格式.可用于通讯协议.数据存储等领域的 ...
- Google Protocol Buffers介绍
简要介绍和总结protobuf的一些关键点,从我之前做的ppt里摘录而成,希望能节省protobuf初学者的入门时间.这是一个简单的Demo. Protobuf 简介 Protobuf全称Google ...
- C# 使用Google Protocol Buffers
Google Protocol Buffers 使用3.0版本 下载protoc.exe 下载链接 https://github.com/protocolbuffers/protobuf/releas ...
- Android -- 带你从源码角度领悟Dagger2入门到放弃
1,以前的博客也写了两篇关于Dagger2,但是感觉自己使用的时候还是云里雾里的,更不谈各位来看博客的同学了,所以今天打算和大家再一次的入坑试试,最后一次了,保证最后一次了. 2,接入项目 在项目的G ...
- Android -- 带你从源码角度领悟Dagger2入门到放弃(一)
1,以前的博客也写了两篇关于Dagger2,但是感觉自己使用的时候还是云里雾里的,更不谈各位来看博客的同学了,所以今天打算和大家再一次的入坑试试,最后一次了,保证最后一次了. 2,接入项目 在项目的G ...
- Android -- 带你从源码角度领悟Dagger2入门到放弃(二)
1,接着我们上一篇继续介绍,在上一篇我们介绍了简单的@Inject和@Component的结合使用,现在我们继续以老师和学生的例子,我们知道学生上课的时候都会有书籍来辅助听课,先来看看我们之前的Stu ...
- Android AsyncTask完全解析,带你从源码的角度彻底理解
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/11711405 我们都知道,Android UI是线程不安全的,如果想要在子线程里进 ...
- CENTOS6.6下mysql5.7.11带boost和不带boost的源码安装
本文来自我的github pages博客http://galengao.github.io/ 即www.gaohuirong.cn Mysql5.7版本更新后有很多变化,比如json等,连安装都有变化 ...
- [转帖]CENTOS6.6下mysql5.7.11带boost和不带boost的源码安装
CENTOS6.6下mysql5.7.11带boost和不带boost的源码安装 本文来自我的github pages博客http://galengao.github.io/ 即www.gaohuir ...
随机推荐
- MYSQL8.0+ 使用JDBC查询中文乱码的问题
在建表时,附加一句 DROP TABLE IF EXISTS `sys_table`;CREATE TABLE `sys_table` ( ... ) ENGINE=InnoDB DEFAULT CH ...
- CSP2019 退役记
本来想写"退役在即"的,考完 Day2 后直接改成"退役记"了 Day 0 在 ssf 的机房里继续变弱,自己写了一遍 splay 板子,居然写对了,开心 非常 ...
- [易学易懂系列|rustlang语言|零基础|快速入门|(28)|实战5:实现BTC价格转换工具]
[易学易懂系列|rustlang语言|零基础|快速入门|(28)|实战5:实现BTC价格转换工具] 项目实战 实战5:实现BTC价格转换工具 今天我们来开发一个简单的BTC实时价格转换工具. 我们首先 ...
- Quartz框架介绍
一.Quartz概述: Quartz是一个完全由Java编写的开源任务调度的框架,通过触发器设置作业定时运行规则,控制作业的运行时间.其中quartz集群通过故障切换和负载平衡的功能,能给调度器带来高 ...
- Ubuntu14版桌面突然卡住怎么办
参考:https://blog.csdn.net/hautxuhaihu/article/details/78924926 (1)ctrl+alt+f1...6进入命令行终端.用户名,密码登录. (2 ...
- Filtering Approaches for Real-Time Anti-Aliasing(2011 SIGGRAPH)
Filtering Approaches for Real-Time Anti-Aliasing(2011 SIGGRAPH) 在2011的SIGGRAPH上,NVIDA提出了FXAA3.1,本文主要 ...
- 传统Spring配置JTA 实现多数据源事务的统一管理
分布式事务是指事务的参与者.支持事务的服务器.资源管理器以及事务管理器分别位于分布系统的不同节点之上,在两个或多个网络计算机资源上访问并且更新数据,将两个或多个网络计算机的数据进行的多次操作作为一个整 ...
- python函数参数的传递、带星号参数的传递
python中函数参数的传递是通过赋值来传递的.函数参数的使用又有俩个方面值得注意:1.函数参数是如何定义的 2.在调用函数的过程中参数是如何被解析 先看第一个问题,在python中函数参数的定义主要 ...
- 解决Spring AOP Controller 不生效
在spring-mvc.xml文件中,进行以下配置,就可以实现在Controller中, 方法一:最简单的,在spring-mvc.xml配置文件中,添加以下语句 spring-mvc.xml < ...
- luogu 3698 [CQOI2017]小Q的棋盘 树形dp
Code: #include <bits/stdc++.h> #define N 107 #define setIO(s) freopen(s".in","r ...