【问题标题】:What is a good communication layer for both Java and C#?什么是 Java 和 C# 的良好通信层?
【发布时间】:2010-07-01 13:01:33
【问题描述】:

我希望我较新的 C# 2.0 应用程序与我较旧的 Java 1.4 应用程序通信(无法更改版本,抱歉)。我有哪些选择?

我认为使用共享内存会给我带来更好的性能,但另一方面,如果我使用网络协议,那么架构会更加灵活。所以我正在权衡这两种选择,看看哪个有最大的回报。

我使用过缓慢的 XML-RPC 实现,但我认为这只是一个糟糕的实现,而不是实际的协议。使用较低级别的协议会更好吗?我之前在 C++ 和 Python 中使用过 Google 的 protobuf(通过普通的旧套接字),但我不确定它是否可用于 Java 和 C#——我使用的语言有类似的可用吗?

我正在寻找我可能获得的最佳性能,但是,我正在处理我想要序列化的对象和继承层次结构(protobuf 是一个很好的例子,说明如何做到这一点)。所以,遗憾的是,仅仅通过套接字发送一个简单的字符串是不可行的。

【问题讨论】:

  • Protocol Buffers 适用于 Java 和 C#,仅供参考。
  • WCF 还是只支持 3.5?
  • 原始 WCF 是 .NET 3.0,它基本上是 .NET 2.0,除了它具有 WCF、WFF 和一些其他工具所需的部分。任何 2.0 解决方案都应该能够使用 WCF。但是,应该认真考虑升级到 NET4,尤其是在所有其他 NET4 令人敬畏的基础上对 WCF 的增强。但是,如果由于 Visual Studio 2010 的成本或某些类似原因不可行,WCF 应该仍然可以在您当前的平台上使用。

标签: c# java communication


【解决方案1】:

啊哈,实际上有 C# 版本的 protobuf!

...而且 protobuf 无论如何都支持 Java。

【讨论】:

    【解决方案2】:

    您也可以将 JSON 视为对象的序列化,它比 XML 轻得多,但表示对象层次结构和许多库的功能相同。

    然而,对于通信总线,我会推荐网络,因为它提供了更好的灵活性。

    恕我直言,您的性能瓶颈是由于序列化/反序列化而不是通信总线本身。

    【讨论】:

    • 是的,我想我同意——但是,当数据传输时 CPU 并没有达到峰值,所以我只能假设序列化非常糟糕,它没有利用所有可用资源。呸!
    猜你喜欢
    • 1970-01-01
    • 2014-04-23
    • 1970-01-01
    • 1970-01-01
    • 2011-09-19
    • 2010-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多