目前我正在启动一个项目,该项目需要从.net应用程序(c#app)序列化数据,并通过网络将其传递给基于java的服务器应用程序。因此,我想知道哪种序列化机制最有效,同时必须通过java应用程序来确定服务对象。
查询:
我听说protobuf比任何其他类似xml的序列化要快得多。是否可以使用protobuf来完成上述要求?
在java中有一种新开发的名为“Kryo”的序列化框架技术,它比protobuf更有效,所以.net环境中的任何东西都必须与语言无关。
答案 0 :(得分:5)
是的,protobuf与语言无关。 java版本由google提供,multiple C# implementations(如果你想在两端使用非常相似的代码,我会推荐protobuf-csharp-port,如果你喜欢.NET代码看起来像惯用的.NET,我会推荐protobuf-net) )。
Re Kryo - 我真的不知道评论,但回答“更高效”问题的唯一方法就是测试它(同样:定义效率对你意味着什么:是序列化大小?CPU时间?资源使用?或......?)。就我个人而言,我会有点怀疑它会变小,但是:有一种确定的方法可以找到:你试试吧。
我不知道Kryo是否与语言无关,但我只能看到提到的Java。
答案 1 :(得分:2)
Hessian是一种高效,二进制但与语言无关的序列化协议。
实现可用于Java,C ++,C#,Objective-C,PHP,Ruby,Javascript等。
可以在此处找到各种远程协议性能的比较:
Java Remoting: Protocol Benchmarks
答案 2 :(得分:1)
嗯..
这取决于您希望在课程应用程序之间共享的数据类型。这里简要概述了我发现的专业知识。缺点.. 您能解释一下您想要分享的数据结构类型吗?
我建议使用XML或JSON,以提供灵活性。从长远来看,其他基于二进制的序列化选项将很困难,因为,
Json 是一个选项
XML 以及
然后,
<强>的Protobuf 强>
答案 3 :(得分:0)
通过契约优先方法实现通信的语言独立性。创建一个清晰简单的交换格式规范,然后在两端找到最佳工具,以帮助您遵守它。
有线格式有两种基本选择:XML和JSON。
XML具有广泛理解的Schema规范的优势,然后允许工具生成绑定代码。
JSON的优势在于可以使用任何语言“简单地”共处一种简单的格式。
关于格式的 speed 的任何陈述,这与指定平台上的现有实现紧密相关。协议没有与语言无关的速度等级。