【问题标题】:Best way to exchange data between C# and executable JAR在 C# 和可执行 JAR 之间交换数据的最佳方式
【发布时间】:2014-11-09 23:17:26
【问题描述】:

我正在使用EXI,它将XML 编码为二进制格式并返回。

为此,我使用了开源 JAVA 工具ExiProcessor,它是一个可执行的 JAR 文件,它使这个过程变得非常简单。因为我想和C#一起使用,所以我需要在这两者之间交换数据。

最简单的方法是将 XML 数据从 C# 写入文件,使用ExiProcessor 读取此文件,然后反过来。但这并不是真的很快。

因此,我想知道有哪些替代方案。我从 .NET Framework 4 开始读到,您可以使用 MemoryMappedFiles。我看了看,但似乎它们只能在使用 .NET Framework 4 的两个应用程序之间工作?

有没有其他方法可以加快这个过程?

作为后备,我可以使用 JAVA 源代码并编写自己的应用程序,但我更愿意按原样使用 ExiProcessor

【问题讨论】:

    标签: java c# .net ipc executable-jar


    【解决方案1】:

    对于这样的混合环境,Apache Thrift 通常是一个不错的选择。 Thrift 专为轻量级、快速且易于使用的 RPC(和 IPC)解决方案而设计。其中,它支持 Java 和 C#。可能值得一看。

    如果你想坚持使用 MMF,这也可以通过使用 Thrift 的序列化部分和从缓冲区或流中读/写日期来实现。您不必使用 RPC 的东西。

    请访问this question 获取更详尽的概述以及一些其他资源的链接,以帮助您快速入门。

    【讨论】:

    • 但是这个解决方案需要修改可执行的 ExiProcessor JAR,对吗?既然我不仅需要在 C# 端实现一些东西,还要在 Java 上添加相应的对应项?这是我想避免的,因为我对 Java 没有太多经验。
    • 是的。我没有以这种方式阅读“我更愿意按原样使用 ExiProcessor”。
    【解决方案2】:

    我不太确定,但如果您正在寻找使用 jar 的方法,

    你可以尝试转换jar

    http://www.ikvm.net/userguide/tutorial.html

    或者你可以使用类似的桥

    http://jni4net.sourceforge.net/

    希望这会有所帮助!

    【讨论】:

    • 没有多大帮助,因为 ExiProcessor 不是库,而是一个可执行的 JAR。因此,我不能只是将其转换为 C#,然后在我的代码中执行它,可以吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-09
    • 2020-01-29
    • 2016-11-15
    • 1970-01-01
    • 1970-01-01
    • 2012-11-12
    相关资源
    最近更新 更多