跨语言(java和c#)对象序列化的策略

Lee*_*ner 15 c# java serialization cross-platform

我正在开发一个项目,我需要在java 6应用程序中序列化一些数据并将其反序列化为ac#2.0 app.有没有一种策略或已存在的东西,我可以看一下,这可以让我用这两种语言做到这一点?我猜他们都支持XML序列化,但我真的需要它进行二进制序列化.

Mar*_*ell 17

协议缓冲区在这里是一个很好的选择.在C#方面,我会推荐Jon Skeet的dotnet-protobufs用于这个用例,因为它在两面都有相同的API(他的C#版本是Google Java版本的一个端口,是核心版本的一部分).如果你希望C#更"典型的.NET",那么protobuf-net可能有所帮助.

(版本之间的电线格式明显相同; API可能会有所不同)

小巧,快速,高效,便携.

有关信息,我知道 protobuf-net支持.NET 2.0; 老实说我没有在Jon的版本上试过这个,但我希望它会 - 在protobuf中你需要3.0/3.5并不多.


Ben*_*zun 9

协议缓冲区(谷歌网站)

Java教程

Jon Skeet的C#Port

Marc Gravell的C#Port

好处:快速,你可以在SO上发现一些涉及这件事的人.;-)

让我利用Marc的项目网站:性能是完全可以接受的 ..


Mic*_*ene 6

每种语言的默认二进制序列化是不兼容的,因此您将无法使用它.

有许多支持Java,C#和其他语言的跨语言序列化技术:

其中,JSON不是二进制文件,但对于基于字符串的语言非常有效.Thrift和Protocol Buffers是二进制的,具有非常紧凑的表示.