翻译Protocol buffers官方部分介绍 java

 

RPC(Remote Procedure Call Protocol)—— 远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。 RPC协议假定某些 传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了 传输层和应用层。RPC使得开发包括网络分布式多程序在内的 应用程序更加容易
Protocol buffers
协议缓冲是 Google 用于序列化结构化的数据的语言中立、平台中立的可扩展机制 – 例如 XML ,但是比 XML 更小、更快、更简单。您可以定义希望如何结构化您的数据,然后可以使用生成的特殊源代码来轻松地将结构化的数据写入各个数据流/从各个数据流中读取结构化的数据,并使用各种不同的语言(Java、C++ 或 Python)。
Why use Protocol buffers?
下面介绍一个”address book”应用的例子,这个例子可以从文件读取和写入人们的联系方式。每个address book有人名,ID, 电子邮件地址和联系电话。
你会怎样序列化和查询这样的结构化数据呢?下面是几种解决方法:
1.       使用Java Serialization. 这是默认的方式,因为这是java语言内置的。但是它许多众所周知的问题并且此应用不能跨语言。比如 你不能和c++ python共享数据
2.       你可以利用对等通信的方式来将数据项编码为一个字符串。这是一个简单灵活的方式,尽管它要编写一次性的编码和解码的程序和解析时会附加一个小的运行时间成本。对于编码简单数据来说,这是最好的方法。
3.       将数据序列化为Xml。这种方法是挺不错的,因为XML是人类可读的并且它有很多不同语言相关lib工具的支持。如果你要和其他应用和项目共享数据的话,这是一个不错的选择。但是Xml是十分耗费空间的,并且编码和解码也会对应用程序的效率有很大影响。还有,引导(应该是说指向某个数据的意思吧)XML DOM tree比引导一个类中的简单数据成员要复杂得多。
对这样的问题, Protocol Buffers是一种灵活高效自动化的解决办法。使用Protocol Buffers, 你要写一个XXX.proto的文件,这个文件时描述你要存储的数据结构的。接着使用Protocol complier 生成一个类,这个生成类用高效的二进制格式实现了自动编码和解析protocol buffer的数据。这个生成的类对其成员变量提供getter 和 setter方法。这些成员变量组成了protocol buffer 并且实现了将protocol buffer的整体读写。(大概意思是说 他封装好了序列化和反序列化的东西 你直接get 和 set就行了)。重要的是, protocol buffer 格式支持可扩展---程序对老格式定义的数据依然是可读的。

本文出自 “牛奶咖啡” 博客,谢绝转载!

你可能感兴趣的:(java,序列化,休闲,网络技术,计算机程序)