BERT--作为Protocol Buffers/Thrift的动态替代

尽管XML在数据编码方面尤为突出,仍然有很多情况下效率不高成为了阻碍,这是由编码/解码的效率不足与所占用的空间两方面所造成的。流行的二进制序列化格式有得到广泛使用的ASN.1, Google的ProtocolBuffers,以及Facebook的Thrift

\

一个新的格式现在为GitHub的后端提供支持:BERT,它由Tom Preston-Werner在Erlang用于编码节点间通讯术语的外部术语格式(ETF)的基础上所构建。

\

BERT对ETF进行了扩展,加入了字典,时间和正则表达式等复杂数据类型。

\

BERT不同于ASN.1与Protocol Buffers之处在于其格式不要求一个模式或者是IDL规范。Tom Preston-Werner 解释这使得BERT就好像是JSON这一思想的二进制版:

\
我喜欢JSON。我喜欢抽取一种语言的子集并用它来促进进程间通信这种概念。这使我想起我关于Erlectricity所做的工作。两年以前我为Erlectricity写过一个C扩展来加速Erlang的外部术语格式的反序列化。
\[..] 如果我将Erlang的外部术语格式的公共部分抽取出来,让它成为进程间通信的标准,会怎么样呢?如果让Erlang拥有像JavaScript的JSON那样的相同的事物又会怎样呢?如果能在这一格式的基础上构建一个RPC协议,又会如何?这些东西看起来会像什么样子,能简单的实现吗?
\

BERT-RPC允许对托管在BERT-RPC服务器上的代码远程调用,它使用BERTs来编码(节点的)协商,并返回调用的值。Tom 提到了BERT-RPC的一些特性

\
- 同步及异步的调用[..]
\- 流(来或往)
\- 缓存指令
\

Ruby代码可通过使用像Ernie这样的BERT-PRC服务器来获得。

\

已有现成的BERT和BERT-RPC规范。至于Ruby和Erlang实现的其它语言可替代实现包括BERT for JavascriptPython,以及其它。

\

你更倾向于BERT这样的无模式方案呢,还是像ASN.1和ProtocolBuffers这样的基于IDL的选择?

\

查看英文原文:BERT as Dynamic Alternative to Protocol Buffers/Thrift

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值