我正在研究一种机制,用于在与语言无关的机制中通过套接字或共享内存传递数据。我不愿意使用XML,因为这些数据将非常结构化,编码/解码速度至关重要。拥有一个获得大量许可的优秀C API非常重要,但理想情况下应该支持大量其他语言。我查看了 google的协议缓冲区 ASN.1 。我是在正确的轨道上吗?还有更好的东西吗?我应该只实现自己的打包结构而不是寻找一些标准吗?

有帮助吗?

解决方案

根据您的要求,我会使用Google Protocol Buffers。听起来它非常适合您的应用。

其他提示

您可以考虑使用XDR。它有一个 RFC 。我已经使用过它并且从未遇到任何性能问题。它在ONC RPC中使用,并且有一个名为rpcgen的工具。当你想要序列化数据时,你自己也很容易创建一个生成器(这是我为了便携性而最终做的,花了我半天)。 有一个开源C实现,但它已经可以在系统库中,因此您不需要这些源。

ASN.1对我来说似乎总是有点巴洛克式,但根据您的实际需求可能更合适,因为XDR有一些限制。

只是想把ASN.1投入到这个组合中。 ASN.1是格式标准,但是大多数语言的库都有,而且通过 asn1c 的C接口很多比协议缓冲区的C接口清洁。

JSON真的是我最喜欢的这类东西。我之前没有二进制内容的经验。如果您打算使用JSON,请发布结果!

Thrift 是由Facebook创建的二进制格式。使用谷歌协议缓冲区这是一个比较

查看 Hessian

还有 Binary XML 但似乎没有稳定了。我链接的文章提供了一些可能感兴趣的链接。

另一个选择是 SNAC / TLV ,AOL在其中使用Oscar / AIM协议。

另请查看肌肉。虽然它做了很多,但它序列化为二进制格式。

你需要考虑几件事

1. Storage
2. Encoding Style (1 byte 2 byte)
3. TLV standards

ASN.1解析器有利于二进制表示,最好的部分是ASN.1是一种成熟的技术,在ITU-T及其外部广泛使用。该表示法得到了许多软件供应商的支持。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top