Google Protocol Buffer 的各语言实现版本

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


.proto 的基本写法: node


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

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

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

代码生成:



<?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版本:  ui

https://npmjs.org/package/protobuf google

代码生成: spa

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);
相关文章
相关标签/搜索