【问题标题】:Passing data between C# and Java Apps [closed]在 C# 和 Java 应用程序之间传递数据 [关闭]
【发布时间】:2015-06-26 17:55:00
【问题描述】:

我在 C# .Net 中有一个 API,用于上传大小在 10 B - 100 KB 之间的文件。每秒,系统会收到大约 5 个这样的呼叫。现在我想将此文件传递给一个 JAVA 进程(因为它是 Kafka 的生产者,我们希望它是基于 JVM 的,而 C# API 是遗留的)。两者几乎总是驻留在同一台机器上。最好的方法是什么?

我读到了 jni4net,IKVM 用于从 C# 与 Java 交互。它们会更好还是应该让它基于套接字(Java 中的 Web API 接受文件),还是应该从 C# App 已上传的本地文件系统或我缺少的任何其他选项中读取?

【问题讨论】:

    标签: java c# file-upload asyncsocket message-passing


    【解决方案1】:

    在高并发环境中,从本地文件系统读取可能不是一个好主意。

    你可以使用 java 支持的内存映射文件和 FileChannel。

    根据操作系统,您还可以使用命名管道进行 IPC,这里有一篇文章展示了如何在 .Net 和 Java 之间使用管道:

    http://v01ver-howto.blogspot.com/2010/04/howto-use-named-pipes-to-communicate.html

    考虑所有选项,我会选择套接字。它们便携且易于操作,很可能满足您的性能要求。

    【讨论】:

      【解决方案2】:

      您也可以使用消息队列。如果要将文件存储在文件系统中,则可以放置二进制消息、序列化文件或将文件的位置放在队列中。

      具有套接字和消息队列的解决方案将允许您拥有更加分布式的架构,即不会加载过多工作的单台机器。

      【讨论】:

      • API 调用本身位于负载均衡器后面。因此,我需要一个能够将日志文件作为消息从同一台机器上的 .NET 应用程序传递给 Java 应用程序的队列。您会在这里建议哪种队列实现?
      • 我建议使用 MSMQ。您可能还会发现这个问题及其答案很有用:stackoverflow.com/questions/12580230/sending-files-over-msmq
      • 而且因为它只有 Windows,所以你需要一个 3rd 方 api 才能在 java msmqjava.codeplex.com 中使用它
      【解决方案3】:

      如果您想实际使用 Java 中的 C# API,那么桥接器可能是您要走的路。它可能比 Web API 更有效。一些桥接器还允许您在同一进程中运行 C# 和 Java,这样效率更高。

      除了您提到的桥接器之外,您可能还需要考虑 JNBridgePro。您可以在我们的网站上找到更多信息。

      披露 -- 我隶属于 JNBridge。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-09-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多