Google Protocol Buffer 用法 C#
来源:互联网 发布:我的世界安装天堂js 编辑:程序博客网 时间:2024/05/03 22:49
在网上查了一下,虽然有很多文章介绍Protocol Buffer,但是实际使用起来,还是会遇到很多问题,所以我想应该有一个指南一样的东西,让新手很快就能使用它。
Protocol Buffer简写为Protobuf,是Google开发的一种储存数据的方式,功能与XML一样,但更方便,数据量更小,速度更快,在序列化和反序列化的时候使用,有很大的优势。比如,网络游戏的通讯协议编写。更重要的是,它是一个开源项目。
闲话不多说,下载地址:
http://code.google.com/p/protobuf/downloads/list
由于Protobuf不能生成C#代码,所以就要用到另外一个开源项目protobuf-net,下载地址:
http://code.google.com/p/protobuf-net/
@echo off
rem 查找文件
for /f "delims=" %%i in ('dir /b ".\*.proto"') do echo %%i
for /f "delims=" %%i in ('dir /b/a "*.proto"') do protoc -I=. --cpp_out=. %%i
for /f "delims=" %%i in ('dir /b/a "*.proto"') do protogen -i:%%i -o:%%~ni.cs
pause
用法是,在命令行用protoc.exe依据你自己定义的.proto文件,来生成.cpp文件
用protobuf-net的protogen.exe来生成.cs文件,可以写一个批处理,如下:
protoc -I=. --cpp_out=. Net.proto //在当前目录下,以cpp方式编译Net.proto
protogen -i:Net.proto -o:Net.cs //在当前目录下,用Net.proto生成Net.cs
其实两句功能是一样,只是分别生成了Net.proto的cpp文件和cs文件,这样就可以在两种语言编写的应用程序间通信了。
Net.proto文件内容如下:
- message SearchRequest {
- required string query = 1;
- optional int32 page_number = 2;
- optional int32 result_per_page = 3;
- }
数据类型如下:
doubledoublefloat
floatfloatint32Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead.int32intint64Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead.int64longuint32Uses variable-length encoding.uint32int[1]uint64Uses variable-length encoding.uint64long[1]sint32Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s.int32intsint64Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s.int64longfixed32Always four bytes. More efficient than uint32 if values are often greater than 228.uint32int[1]fixed64Always eight bytes. More efficient than uint64 if values are often greater than 256.uint64long[1]sfixed32Always four bytes.int32intsfixed64Always eight bytes.int64longbool
boolbooleanstringA string must always contain UTF-8 encoded or 7-bit ASCII text.stringStringbytesMay contain any arbitrary sequence of bytes.stringByteString
- Google Protocol Buffer 用法 C#
- Google Protocol Buffer 用法
- Google Protocol Buffer 用法
- Google Protocol Buffer
- Protocol Buffer(Google) 學習筆記一
- google protocol buffer
- Google Protocol Buffer
- Google Protocol Buffer
- Google Protocol Buffer
- 【Google Protocol Buffer】概览
- Google Protocol Buffer 学习
- Google Protocol Buffer 学习
- Google Protocol Buffer
- Google Protocol Buffer 介绍
- google protocol buffer基础
- Google Protocol Buffer
- Google Protocol Buffer介绍
- Google Protocol Buffer
- Eclipse快捷键
- xmlpull解析XML
- 紫薇花开的季节(二)
- Eclipse快捷键
- 交换排序-(冒泡、快速排序)
- Google Protocol Buffer 用法 C#
- 正则表达式
- Vmware 下CentOS虚拟机实现访问外网
- 配置hadoop集群遇到 connection confused错误
- linux修改主机名后listener无法启动
- Spring iBatis Sqlmap 以及 parameterClass 和 parameterMap 的使用方法
- LINUX中使用VIM替换报错:pattern not found
- 七夕恋歌
- 雅虎给出的优化网站加载速度的34条法则