以互操作方式传递对象 - JavaBean 到 C#

Posted

技术标签:

【中文标题】以互操作方式传递对象 - JavaBean 到 C#【英文标题】:Passing objects interoperably - JavaBean to C# 【发布时间】:2014-01-17 16:20:04 【问题描述】:

是否有任何库允许开发人员将对象从一种语言传递到另一种语言,然后操作/更改对象并将它们传回?

对于现有的消息传递和 XML 系统,这将是一个伟大而简单的替代方案。我读到了Colors,这似乎是我正在寻找的东西,但据我所知它还没有发布。

在我的 Java 应用程序(或任何语言,但本示例中为 java)中,我想使用类似的东西:

import beans.Person;

...

PythonObj pythonObj = new PythonObj("http://192.168.1.54/personGET/myusername/mypassword"); 
Person person = pythonObj.getPerson();

这将使用 Python 通过 GET 发布的对象。

所以我猜每种语言都需要一个库。无需任何外部样板字符串/文件(xml、json、csv、proto 等)进行配置等。只需库导入...

【问题讨论】:

JVM 中的对象只是一个特定的字节组织,与其他运行时环境中的相同字节表示无关。 IMO,您最好的选择是使用 XML 或 JSON 等标准序列化格式。 我发誓当我引用这个时我没有改变任何事情:This would be a great and simple alternative to Messaging and XML systems out there. 我试图说服你。 我明白,但是我已经看到了太多 JSON 和 XML,坦率地说我已经厌倦了。 这样会更好吗?我只能看到缺点.. 【参考方案1】:

如果您只需要投影现有对象信息并通过系统将其传递,XMLJSON 就足够了(我也建议使用 BSON 来提高性能并降低吞吐量)。

如果您想要不同的方法,我建议您查看Google ProtoBuffers,以获得更优雅且安全可维护的解决方案。

例如,您可以在Proto 消息文件中定义您的通信合同,如下所示(例如:person.proto):

message Person 
  required int32 id = 1;
  required string name = 2;
  optional string email = 3;

然后您可以生成Java 和C# objects 来处理此消息,让您可以轻松地在系统之间进行通信。

编辑:另外,看看Apache Thrift。

【讨论】:

这很酷。我不明白你为什么需要创建.proto 文件,甚至真的......我的意思是,使用我在我的问题中谈论的概念,可以使用 proto's、xml's 和 json's 来进行处理如果这就是你想要的背景,但我真正想要的是如果我使用 java 引用一个 .jar,如果我使用 c# 等引用一个 .dll - 例如。 这个概念本身有点不同。您必须创建这些原始文件,因为它们是您的合同描述。例如,考虑一个系统与合作伙伴集成的场景,将您的 .proto 文件发送给他会更容易,他将在该文件上创建他的消息并与您交流。您还可以更严格地控​​制您的合同变更。稍微玩一下,你就会很快掌握主要思想。 :) 我现在明白你的意思了。老实说,我不认为你会为你的场景找到一个开箱即用的解决方案。当然,没有什么能阻止你开始创造它! ;) 会的。也许我会更仔细地研究一下 REST/basic http get、post、put、delete 跨语言互操作性。 我会向尽可能多的软件公司推荐它,希望比我更聪明、更富有的人也会觉得它有趣! :)

以上是关于以互操作方式传递对象 - JavaBean 到 C#的主要内容,如果未能解决你的问题,请参考以下文章

java学习--基础知识进阶第十三天--反射机制的概述和字节码对象的获取方式反射操作构造方法成员方法成员属性JavaBean的概述&BeanUtils的使用自定义BeanUtils工

Java中JavaBean的作用范围:request和page的区别是啥啊?

myBatis 基于javaBean配置

登录页面总结

JAVA中反射机制五(JavaBean的内省与BeanUtils库)

Struts2框架的数据封装一之属性封装(属性封装的第二种方式:封装成javaBean)