2

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

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

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

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

想法?

-谢恩

4

1 回答 1

2

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

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

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

于 2014-09-22T05:16:51.433 回答