Google协议缓冲区:JavaScript示例


Answers:


73

[edit] Google的协议缓冲区的开源实现可在github上找到


正式的protobuf项目仅支持Java,C ++和Python。不是Javascript。

根据该项目的Wiki,有三个项目将协议缓冲区移植到Javascript。

Protobuf.js是最新的。protobuf-js已有两年未更新,因此,我赞成Protobuf.js。

问题仍然是“为什么”?:protobuf可能会更小,尤其是在传输大量数值时,但是JSON是JS空间中更常见的协议,并且可能得到更好的支持,并且更易于集成到其他工具中。


11
毫无疑问,JSON更适合大多数情况。但是,在我的情况下,消息发件人不受我的控制,它会序列化为protobuf消息,因此我们需要从javascript中解析消息。
2013年

21
@为什么:因为您编写了一条消息和服务方法作为原始协议,并且免费获得了代码框架?在客户端/服务器端都进行序列化和反序列化。
帕维尔Szczur

13
原因:在任何其他情况下都使用protobuf的相同原因。不要忘记,浏览器现在具有WebSocket。此外,桌面应用程序可以用Windows 8的JS编写,而应用程序(包括服务器)可以在Node中编写。
2013年

4
Code Climate关于protobuf相对于JSON的好处
约旦

5
如果您系统的API已经具有其他二进制/ protobuf客户端,例如Android或iOS设备,那么为Javascript Web客户端使用现有的proto API比构建第二个提供JSON的API副本更自然,一个网页。
零把戏小马



-1

尝试Protostuff

我在配置时有些困难,但是我确定这更多的是我的问题。您可以在/从JSON序列化/反序列化一个原型/原型消息。我正处于使用此功能的初期阶段,但到目前为止看起来很有希望。


1
好奇。为什么这被否决(我对Protostuff没有意见)?
Pimin Konstantin Kefaloukos

9
@Pimin可能是因为protostuff是Java,而问题是JavaScript?
Marc Gravell

1
@PiminKonstantinKefaloukos人正在使用JavaScript
holms 2014年

2
使用Protostuff构建GWT的Javascript对象: code.google.com/p/protostuff/wiki/GwtJsonOverlays 。完全是话题。
模糊分析

4
@fuzzyanalysis Fair,尽管我会将此答案称为不完整的,而不是简单的错误。由于您不能期望每个访问者都知道如何将Java编译为JS甚至不知道GWT的存在,因此您至少希望有一个指向GWT的指针,或者理想情况下是使它在GWT中运行的一个工作示例-因为那可能相当冒险。
克里斯·莫斯基尼
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.