• ----:)欢迎访问源码网(:----
    • 首页
    • 博客
    • 学院
    • 下载
    • 论坛
    • 影视
    • 发布源码
    • RSS
    • ITPig
    • 笑话网
    • 百家姓
    • 繁體中文

源码网 - 中国第一源码门户
选择镜像:网通镜像 - 电信主站
  • 首 页
  • 新闻动态
  • 网站运营
  • 网页制作
  • WEB开发
  • 编程开发
  • 图像媒体
  • 操作系统
  • 数据库
  • 服务器
热门搜索 优化 SEO 故事 cms IIS7 MySQL 个人 AdSense 主题推广 | 文章搜索: 高级搜索
会员登录/控制面版您的位置: 学院首页 >> 新闻动态 >> 技术动态 >> 详细内容
 

推荐文章

  • 专业的网络服务机房简介
  • 即将影响数据中心的十大颠覆性技术
 
 

热点文章

  • 专访Python创始人:迎接Python3000
  • 揭开360安全浏览器的神秘面纱
  • Protocol Buffers 简介
  • 什么是Protocol Buffers?
  • 第一个 Protocol Buffers 小程序:电话本
  • 124+ 免费 Photoshop Actions 下载
  • 分类信息渐成web2.0热点 58同城网跃居榜首
  • 微软力推Silverlight 挑战Adobe Flash
  • Office文件格式突变,促使Java和Office更完美集成
  • 专业的网络服务机房简介
  • 微软新一代数据库SQL Server 2008明年初上市
  • Dreamweaver CS4 Pre HTTP 下载
 
 

相关文章

  • Google发布Beta版Android SDK
  • Google发布AdSense for Feeds
  • PHP获取Google PR值源码
  • Google 与 Microsoft 的最佳面试题
  • Google收购一上线仅四个月的视频编辑网站
  • Google 和 Yahoo 披露部分合作细节
  • 谷歌软件精选(Google Pack)正式上线
  • Hitwise 最新数据显示 Google 已经主宰搜索市场
  • Google 发布开源加密方案 - KeyCzar
  • Google和雅虎推出“广告退出”机制
  • Google面临内部增长困境
  • 评论:Google让我们变得更愚蠢吗
 
 

百度搜索

 
 

Google推出Protocol Buffers:争夺网络时代数据格式

  • 阅览次数:
  • 文章来源: Google Code
  • 原文作者:
  • 整理日期: 2008-07-09
  • 发表评论
  • 字体大小:
  • 小
  • 中
  • 大

在Web 2.0 时代,XML格式由于AJAX的风行以及RSS的普及而异军突起。不过随着Python和Ruby On Rails的走红,以及各种API的发布,YAML,JSON也逐渐成名。此次,Google推出了Protocol Buffers,是想让广大编程者方便地使用Google网络传输数据的格式。
 

什么是Protocol Buffers?

这是Protocol Buffers主页上的一段代码:

message Person {
required string name = 1;
required int32 id = 2;
optional string email = 3;

enum PhoneType {
MOBILE = 0;
HOME = 1;
WORK = 2;
} message PhoneNumber {
required string number = 1;
optional PhoneType type = 2 [default = HOME];
}

repeated PhoneNumber phone = 4;
}

而Protocol Buffers的作用,就是将以上格式的数据类型,自动生成Java, Python, and C++的代码,然后以下一系列代码就可以直接调用了:(C++中)

Person person;
person.set_name("John Doe");
person.set_id(1234);
person.set_email("jdoe@example.com");
fstream output("myfile", ios::out | ios::binary);
person.SerializeToOstream(&output); fstream input("myfile", ios::in | ios::binary);
Person person;
person.ParseFromIstream(&input);
cout << "Name: " << person.name() << endl;
cout << "E-mail: " << person.email() << endl;

相信所有C++编程者都为定义set,get之类的函数感到烦人过吧,而Google做的就是帮助你省去这些麻烦,构造更利于网络传输的数据结构。

与XML的比较 优势

  • 更简单
  • 比XML小3到10倍体积
  • 比XML快20到100倍
  • 更不容易引起歧义
  • 自动生成可编程的类代码
    比较:
    cout << "Name: " << person.name() << endl;

    cout << "E-mail: " << person.email() << endl;
    cout << "Name: "
           << person.getElementsByTagName("name")->item(0)->innerText()
           << endl;
    cout << "E-mail: "
           << person.getElementsByTagName("email")->item(0)->innerText()
           << endl; 劣势
  • 没有层次,所以无法和HTML标记语言打交道
  • 如果没有message的定义,根本无法知道message的意思,而XML是自解释型的。
    Protocol Buffer主页    Protocol Buffer下载
  • 上一篇:PHP使用zlib扩展实现页面GZIP压缩输出
    下一篇:构建支持Master/Slave读写分离的数据库操作类
    • 网友评论:
    • 查看所有评论
    • 我要发表评论
    您的网名:
    留言主题:
    你要发表的内容:

     

    关于本站 | 广告联系 | 版权声明 | 网站地图 | 发布软件 | 帮助中心 | 源码论坛

    Copyright © 2005-2007 CodePub.Com  程序支持:木翼  滇ICP备05005971号