gpt4 book ai didi

java - 如何通过 http 序列化 msgpack

转载 作者:行者123 更新时间:2023-11-30 09:02:27 31 4
gpt4 key购买 nike

tl;dr:是否有一种有效的方法来转换 Java 和 C# 中的 msgpack 以便通过 HTTP 进行传输。

我刚刚发现了 msgpack 数据格式。我几乎使用 JSON 通过客户端和服务器(使用 HTTP)之间的线路发送的所有内容,因此我很想尝试这种格式。

我有 Java 库和 C# 库,但我想通过 HTTP 传输 msgpack。这是预期用途,还是更适合本地格式?

我注意到几个 RPC 实现,但它们都是完整的 RPC 服务器。

想法?

-肖恩

最佳答案

传输和编码是两种截然不同的东西,您完全可以根据应用程序的需要选择使用哪种传输方式和使用哪种数据编码。通过 HTTP 发送 msgpack 数据是一个完全有效的用例并且是可能的,但请记住以下两点:

  1. msgpack是二进制编码,也就是说发送前需要序列化成字节,另一端从接收到的字节反序列化。这也意味着它不是人类可读的(或不可写的,就此而言),因此很难检查(或手动生成)HTTP 流量。
  2. 除非您打算通过 HTTP 流式传输 msgpack 编码的数据,否则您将承担相当高的开销成本,因为 HTTP header 的大小很可能会大大掩盖您发送的数据的大小.请注意,这也适用于 JSON,但程度较轻,因为 JSON 的编码效率不高。

就实现而言,发送方必须先将您的 msgpack 对象序列化为 byte[],然后再将其作为 HTTP 请求中的请求主体发送。您还需要将 HTTP Content-Type 设置为 application/x-msgpack。在接收端,从输入流中读取请求主体(您可能会得到一个 ByteArrayInputStream 并反序列化到您的 msgpack 对象中)。

关于java - 如何通过 http 序列化 msgpack,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25966794/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com