Questions tagged «msgpack»

6
性能实体序列化:BSON与MessagePack(对比JSON)
最近,我找到了MessagePack,它是Google 协议缓冲区和JSON的另一种二进制序列化格式,它的性能也优于两者。 另外,MongoDB还使用了BSON序列化格式来存储数据。 有人可以详细说明BSON与MessagePack的区别和缺点吗? 只是为了完成高性能二进制序列化格式的列表:还有Gob ,它们将成为Google的Protocol Buffers的后继产品。但是,与所有其他提到的格式相反,这些格式不是语言不可知的,并且依赖于Go的内置反射,此外还有Gobs库,至少可以使用除Go之外的其他语言。

2
JavaScript转换C#数值精度损失
当使用带MessagePack的SignalR在JavaScript和C#之间对值进行序列化和反序列化时,在接收端C#中会看到一些精度损失。 作为示例,我将值0.005从JavaScript发送到C#。当反序列化的值出现在C#端时,我得到的0.004999999888241291是接近的值,但不是精确的0.005。JavaScript端的值是Number,我正在使用的C#端的值double。 我已经读过JavaScript不能完全表示浮点数,这会导致类似的结果0.1 + 0.2 == 0.30000000000000004。我怀疑我看到的问题与JavaScript的此功能有关。 有趣的是,我没有看到相同的问题。从C#向JavaScript发送0.005会在JavaScript中产生0.005的值。 编辑:从C#的值只是在JS调试器窗口中缩短。正如@Pete所提到的,它确实扩展为不完全为0.5的值(0.005000000000000000104083408558)。这意味着差异至少发生在双方。 JSON序列化没有相同的问题,因为我假设它通过字符串传递,从而使接收环境留在控件中,从而将值解析为其原始数值类型。 我想知道是否有一种使用二进制序列化的方法来在两端都具有匹配的值。 如果不是,这是否意味着无法在JavaScript和C#之间进行100%准确的二进制转换? 使用的技术: 的JavaScript 带有SignalR和msgpack5的.Net Core 我的代码基于这篇文章。唯一的区别是我正在使用ContractlessStandardResolver.Instance。
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.