文档章节

Google Protocol Buffer 的各语言实现版本

啊和
 啊和
发布于 2013/07/23 10:04
字数 227
阅读 1754
收藏 1

Google Protocol Buffer 专门用来串行化和反串行化对象,但官方仅实现了C++、Python、Java三种语言。其他语言版本也相继由不同的作者来实现。虽然有一定缺陷,也足以在大部分的项目中使用了。


.proto 的基本写法:


package feeds;
message Feed {
  optional string title = 1;
  message Entry {
    optional string title = 1;
  }
  repeated Entry entry = 2;
}

Python、C++、Java三种语言版本请见 

https://developers.google.com/protocol-buffers/docs/reference/overview 

代码生成:



<?php
require_once('../parser/pb_parser.php');
$test = new PBParser();
$test->parse('./feeds.proto');
?>
串行化:



<?php
require_once('message/pb_message.php');
require_once('pb_proto_test.php');
$feed = new Feed();
$feed->set_title('asdf');
$t = $feed->add_entry();
$t->set_title('dddd');
$bin = $feed->SerializeToString();
?>
反串行化:



<?php
require_once('message/pb_message.php');
require_once('pb_proto_test.php');
$feed = new Feed();
$feed->ParseFromString($bin);
?>

Node.js版本: 

https://npmjs.org/package/protobuf

代码生成:

protoc --descriptor_set_out=feeds.desc --include_imports feeds.proto
串行化与反串行化:

var fs = require('fs');
var Schema = require('protobuf_for_node').Schema;
var schema = new Schema(fs.readFileSync('feeds.desc'));
var Feed = schema['feeds.Feed'];
var aFeed = Feed.parse(aBuffer);
var serialized = Feed.serialize(aFeed);


本文转载自:http://blog.chinaunix.net/uid-8956504-id-3483677.html

共有 人打赏支持
啊和
粉丝 10
博文 42
码字总数 1249
作品 0
石景山
程序员
私信 提问
Google Protocol Buffer 和 gRPC 简介

更多文章请访问独立博客 https://huangwenwei.com Protocol Buffer Protocol buffer 是谷歌推出的一种轻便高效的结构化数据存储格式,把结构化的数据序列化。常用以存储数据、作为网络通信的...

hww_面条酱
2017/10/18
0
0
protocol buffer 对socket协议封装成二进制传输

protocol buffer 是 google 的一种数据交换的格式,它独立于语言,独立于平台。google 提供了三种语言的实现:java、c++ 和 python,每一种实现都包含了相应语言的编译器以及库文件。由于它是...

MrLovelyCbb
2012/02/15
0
0
protocol buffer

protocol buffer 是 google 的一种数据交换的格式,它独立于语言,独立于平台。google 提供了三种语言的实现:java、c++ 和 python,每一种实现都包含了相应语言的编译器以及库文件。由于它是...

MrLovelyCbb
2011/12/08
0
0
Protocol Buffer技术详解(Java实例)

该篇Blog和上一篇(C++实例)基本相同,只是面向于我们团队中的Java工程师,毕竟我们项目的前端部分是基于Android开发的,而且我们研发团队中目前主要使用的开发语言就是C++、Java和Python,...

OSC一霸
2016/06/02
42
0
远程通信协议:从 CORBA 到 gRPC

摘要 一、远程调用技术简史 二、gRPC 简介 三、gRPC 示例代码 自从产业界发明机器联网的那一天就已经开始探索最优的远程通信机制。操作系统如 UNIX、Windows 和 Linux 等都有实现远程通信的内...

RiboseYim
2017/11/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

ehcache

简单介绍 EhCache 是一个纯Java的进程内缓存框架,具有快速、精干等特点,是Hibernate中默认的CacheProvider。Ehcache是一种广泛使用的开 源Java分布式缓存。主要面向通用缓存,Java EE和轻量...

大笨象会跳舞吧
16分钟前
0
0
Android服务2 BindService

MainActivity { class MyService extends Service { public void onCreate() {} public IBinder onBind(Intent intent) { //return new Binder(); retutn new MyBinder(); } public boolean ......

Coding缘
55分钟前
0
0
所有和Java中代理有关的知识点都汇集于此,速进学干货。

对于每一个Java开发来说,代理这个词或多或少都会听说过。你可能听到过的有代理模式、动态代理、反向代理等。那么,到底什么是代理,这么多代理又有什么区别呢。本文就来简要分析一下。 代理...

Java填坑路
今天
1
0
镜像即代码:基于Packer构建阿里云镜像

什么是Packer Packer是HashiCorp推出的一款工具,旨在提供简易的方式自动化构建镜像。通过Packer,你只需要在配置文件中指明镜像构建所需的基本信息及期望安装到镜像中的软件及配置,即可通过...

迷你芊宝宝
今天
1
0
好程序员前端教程之JavaScript闭包和匿名函数的关系详解

好程序员前端教程之JavaScript闭包和匿名函数的关系详解 本文讲的是关于JavaScript闭包和匿名函数两者之间的关系,从匿名函数概念到立即执行函数,最后到闭包。下面一起来看看文章分析,希望...

好程序员IT
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部