有没有办法在JavaScript中执行协议缓冲?
为什么选择.js?
如果您暂时考虑科学要求,可能会弹出一些情况,您可能希望将大量数据发送到客户端.使用CRUD风格时,您使用的内容并不重要.对于科学的东西,它确实很重要(至少我认为它确实如此).
权衡:
protobuffs可以很好地平衡紧凑性,序列化和反序列化速度.
基于文本的协议(xml/json)具有更大的消息大小...但是使用javascript我不知道哪个更有效.
参考:
code.google.com/p/protobuf-plugin-closure
http://www.vitaliykulikov.com/2011/02/gwt-friendly-protocol-buffers.html
http://benhakala.blogspot.com/2010/05/converting-google-protocol-buffers-to.html(暗示谷歌地图可能使用protobufs)
社区提供的其他参考资料(更多背景见下文):
我有兴趣找出node.js的二进制序列化框架/库.
我尝试使用Apache Thrift,但文档很差,并没有在这方面提供任何示例.
有谁知道任何替代品?
我的设置是基于Flask的服务器。该项目的鸟瞰图是:基于Flask的服务器基于一些算法计算(例如找出要从S3提取的文件名)从AWS S3提取二进制数据,并将数据提供给HTML + JavaScript客户端。
起初,我认为JSON对象是最好的响应类型。我创建了以下格式的JSON响应(可能在语法上不正确):
{
'payload': [
{
'symbol': 'sym',
'exchange': 'exch',
'headerfile': {
'name': '#name',
'content': '#binarycontent'
},
'datafiles': [
{
'name': '#name',
'content': '#binarycontent'
},
{
'name': '#name',
'content': '#binarycontent'
}
]
},
'errors': [ //errors ]
}
Run Code Online (Sandbox Code Playgroud)
对于JSON中的任何语法错误,我深表歉意。我有点想找出一个小错误。在构造了此JSON之后,我知道JSON本身并不支持二进制数据。因此,我将无法将二进制数据作为值嵌入JSON中。
我意识到,我始终可以将字节转换为base64编码的字符串,并将该字符串用作JSON中的值。但是,结果字符串的大小要多出30%左右。4010字节的数据被编码为5348字节,虽然对于单个二进制块来说微不足道,但是当我将大量此类二进制块嵌入JSON响应时,我的客户将其视为一个问题。由于尺寸较大,响应需要更多时间才能到达客户,这是我客户的应用程序的关键问题。
我考虑的另一种选择是将二进制块流式传输octet-stream Content-Type到客户端。但是我不确定它是否比上述解决方案更好。此外,在这种情况下,我还无法弄清楚如何关联二进制块及其名称。
有没有比“将二进制文件转换为文本并嵌入JSON”更好的解决方案?
我正在计划一个应用程序,其中服务器端将用 C# 编写,客户端将使用phonegap 创建
该应用程序大量使用使用 protobuf-net 库序列化的二进制文件。
假设我有一个 C# 对象
public class Foo
{
private string FooProp;
}
Run Code Online (Sandbox Code Playgroud)
并且该对象被序列化并使用phonegap传输到客户端。是否可以反序列化phonegap中生成的二进制文件并使用Javascript访问phonegap中的这些属性?
amazon-s3 ×1
asp.net ×1
binary-data ×1
browser ×1
c# ×1
cordova ×1
flask ×1
frameworks ×1
gwt ×1
http ×1
javascript ×1
json ×1
libraries ×1
node.js ×1
protobuf-net ×1
python ×1
url ×1