问题标签 [messagepack]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
4353 浏览

serialization - MessagePack:快速的跨平台序列化器和 RPC - 请分享经验

在寻找一些快速、简单和稳定的 RPC 库时,我偶然发现了MessagePack项目,它似乎非常好。它也在积极开发中。

如果你以任何方式使用它,你能分享你的经验吗?

PS我认为这个问题应该是社区维基

0 投票
6 回答
70631 浏览

serialization - 高性能实体序列化:BSON vs MessagePack(vs JSON)

最近我发现了MessagePack,这是一种替代谷歌协议缓冲区JSON的二进制序列化格式,它也优于两者。

还有MongoDB 用于存储数据的BSON序列化格式。

有人可以详细说明BSON 与 MessagePack 的区别和劣势吗?


只是为了完成高性能二进制序列化格式的列表:还有Gobs 将成为 Google 的 Protocol Buffers 的继任者。然而,与所有其他提到的格式相比,这些格式与语言无关并且依赖于Go 的内置反射,还有 Gobs 库至少适用于 Go 以外的其他语言。

0 投票
3 回答
2660 浏览

objective-c - Objective-C 的 MessagePack 实现

是否有针对 Objective-C的MessagePack协议的实现?

如果没有,是否有将 C 实现桥接到 Objective-C 类型的示例?

0 投票
1 回答
627 浏览

exception - MessagePack 和 Glassfish

我正在尝试在 Glassfish 的 WAR 应用程序中使用 MessagePack,但出现了这个异常(尽管 JavaAssist 已经是该项目的库):

java.lang.NoClassDefFoundError: javassist/ClassPath at org.msgpack.template.builder.BuilderSelectorRegistry.(BuilderSelectorRegistry.java:38) at org.msgpack.template.builder.BuilderSelectorRegistry.initForJava(BuilderSelectorRegistry.java:58) at org.msgpack .template.TemplateRegistry.(TemplateRegistry.java:38) 在 org.msgpack.MessagePack.register(MessagePack.java:149)

这发生在我打电话的时候

org.msgpack.MessagePack.register()

有任何想法吗?

0 投票
4 回答
9462 浏览

java - 在 Android 中使用 MessagePack

有人尝试过使用MessagePackAndroid 应用程序吗?
可能吗?我尝试使用 Jarmsgpack-java并收到以下异常:

我使用的代码非常简单

我的目录中有javassist.jar,msgpack-0.5.2.jar和。 slf4j-api-1.6.2.jarslf4j-jdk14-1.6.2.jarlib

在我的服务器应用程序中,此代码适用于相同的库。

0 投票
2 回答
885 浏览

java - 不可变业务对象和 MessagePack 消息之间的自动转换

在 Java 中,我想使用不可变 POJO 的层次结构来表达我的领域模型。

例如

所有这些 POJO 都有公共的 final 字段,没有 getter 或 setter。(如果您是 getter 的粉丝,请假装这些字段对 getter 是私有的。)

我还想使用MessagePack库序列化这些对象,以便通过网络传递它们,将它们存储到 ZooKeeper 节点等。

问题是 MessagePack 仅支持公共的非最终字段的序列化,因此我无法按原样序列化业务对象。MessagePack 也不支持enum,所以我必须将枚举值转换为序列化intString序列化。(是的,如果您在enums 中添加注释,则可以。请参阅下面的评论。)

为了解决这个问题,我有一个手写的“消息”对象的相应层次结构,每个业务对象与其对应的消息对象之间都有转换。显然这并不理想,因为它会导致大量重复代码,并且人为错误可能会导致丢失字段等。

这个问题有更好的解决方案吗?

  • 在编译时生成代码?
  • 在运行时生成适当的可序列化类的某种方式?
  • 放弃 MessagePack?
  • 放弃enum我的业务对象中的不变性和 s?
  • 是否有某种通用包装库可以将可变对象(消息对象)包装成不可变对象(业务对象)?

MessagePack 还支持 Java Bean 的序列化(使用 @MessagePackBeans 注释),因此如果我可以自动将不可变对象转换为 Java Bean 或从 Java Bean 转换,那可能会让我更接近解决方案。

0 投票
2 回答
1635 浏览

javascript - 如何从 Javascript 调用 MessagePack RPC 服务?

我将这个简单的 Java 服务器进程作为 MessagePack RPC 服务运行。我想hello()从 Javascript 调用服务,而不是 Java,但还没有找到如何实现它的示例。MessagePack 站点上似乎没有 Javascript 的 RPC 实现。

更新 在这里找到了一个用于 MessagePack 的 Javascript RPC 客户端...

https://github.com/nori0428/msgpack.rpc.js

0 投票
2 回答
2679 浏览

java - 使用 Messagepack 进行序列化

我喜欢使用Messagepack序列化我的 java 类对象。我的班级结构是这样的

我喜欢做的是为 InnerDerivedClass 创建对象并为其分配一些值。然后我会将对象作为基类对象添加到 A 类中。现在,当我使用 Messagepack 序列化和反序列化 A 类对象时,我无法将对象作为 InnerDerivedClass 对象获取,而是作为 InnerClass obj 来获取。如何使用 MessagePack 实现这一点。我没有使用任何注释,而是在消息包中注册每个类。

0 投票
2 回答
924 浏览

python - 无法从消息包中解码 python 中的加密字符串(Ruby openssl)

我无法对通过消息包从套接字连接获得的一些数据进行解码,并因此对其进行解密。我从 UTF-8 中的 Ruby on Rails Web 应用程序中获取字符串,并使用 messagepack 将其全部捆绑并使用套接字将其发送到 python 服务。其他数据很好:字符串、数字、数组等。但是我的加密密码被破坏了。

https://github.com/msgpack/msgpack/issues/15这个讨论建议强制使用 ascii,我在 rails 代码和 python 中都这样做了。如果我在 ruby​​ 中强制使用 ascii 而在 python 中什么也不做,我会在字符串中得到垃圾,但最后我有正确的未加密密码。如果我尝试在我的 python 脚本中强制使用 ascii,我会收到解码错误

加密是使用公钥/私钥完成的(Python 中的 Crypto.PublicKey RSA,ruby 中的 openssl)。我可以在每个脚本中很好地解密和加密(而不是通过消息包通过套接字发送)

有什么想法吗?

编辑:
经过一些实验和思考后,我意识到密码出来就好了这一事实很有趣。问题是字符串开头的多余垃圾。我只是不知道它来自哪里......或者截断它是否安全。

0 投票
1 回答
86 浏览

python - 为 Ubuntu 创建调试版本的 python 包 python-msgpack

我需要一个可以与 python2.7-dbg 一起使用的消息包版本。我将如何创建一个?

作为参考,我通过 github https://github.com/msgpack/msgpack-python上的一个问题询问了这里的一些上下文python-dbg 在调试时找不到 Py_InitModule4