我有两个需要相互交谈的应用程序.App1需要能够序列化App2然后可以反序列化的对象.轻松完成,对吧?这是问题所在; App1基于C#,App2基于Java.因此App1需要以Java二进制文件格式写出文件.如何才能做到这一点?
我看到它的方式,我有两个选择.第一个是弄清楚在C#中序列化Java对象的一些方法,以便App1只创建适当的文件.我的另一个选择是用Java编写一个转换器来读取文件并相应地填充对象并序列化新填充的对象.这样C#app只需写出转换器然后解释的某种格式化文本文件.
我无法对Java应用程序进行任何更改.
该怎么做?
更新:
Java应用程序已经掌握在客户手中,因此更改序列化方案会导致客户现有数据不兼容.Java App在处理此对象时使用本机java序列化.不能对Java应用程序进行修改.
C#app使用协议缓冲区来序列化自己的数据.
最佳答案是选项3:使用语言中立的序列化方案.
我使用JavaScript.Thrift是另一种选择,我认为协议缓冲区更侧重于RPC,但也应该可用于序列化.XML或自定义二进制格式将是其他选项.
编辑:对不起,没有注意到您无法更改Java应用程序.也就是说,最好的方法可能是创建自己定义良好的格式,编写一个可以读取该格式的Java应用程序,然后为遗留应用程序输出一个序列化的java对象.