【问题标题】:Java and .NET Streams Interoperability Through IKVM通过 IKVM 实现 Java 和 .NET 流互操作性
【发布时间】:2011-09-29 02:02:24
【问题描述】:

在我当前的项目中,我使用 IKVM 来交叉编译几个处理 XML 各个方面的 Java 库。然后将这些库与几个 .NET 库和我的主线代码集成。一切正常,但我怀疑存在一些效率低下的地方,尤其是在基于流的数据访问领域。

许多 Java 库可以接受流式 SAX 类或其他流式对象,例如 OutputStream 等。在某些情况下,我可以将适当的 Java 类包装在一个对应的 .NET 子类中,以弥合差距并在两者之间提供无缝流式传输语言。例如,创建一个派生自 .NET MemoryStream 和 Java OutputStream 的类。然而,在大多数情况下,接口具有挑战性,我不得不传递整个字符串——即使我在 .NET 端有可用的流并且 Java 端接受(不同的)流类(反之亦然)。

一般来说,我的问题是,是否有人遇到过使用流向/从 IKVM 编译库传递数据的类似问题,以及如何解决或缓解这些问题?是否存在任何第三方解决方案来帮助弥合这一差距?例如,为 .NET XmlReader 和/或 XmlWriter 提供 Java SAX 包装器的代码将非常有用。

【问题讨论】:

    标签: c# java xml stream ikvm


    【解决方案1】:

    我在Saxon 中为这种事情做了一些桥接课程。它是开源的,因此您可以重用任何您认为有用的东西。尽管如果您以撒克逊人使用它们的方式以外的方式使用它们,我不保证它们是完整和正确的。

    DotNetInputStream 将 .NET 流映射到 Java InputStream。

    DotNetOutputStream 将 .NET 流映射到 Java OutputStream。

    DotNetReader 将 .NET TextReader 映射到 Java Reader。

    DotNetWriter 将 .NET TextWriter 映射到 Java Writer。

    对于 XML 流,Saxon 有自己的内部推/拉接口(分别为 Receiver 和 PullProvider),并且有一些类将这些接口映射到/从相应的 Java 和 .NET 接口。

    【讨论】:

    • 非常感谢迈克尔,这正是我正在寻找的东西。 Saxon 是我所包含的“处理 XML 各个方面的 Java 库”之一,因此删除接口类应该不会太难。
    猜你喜欢
    • 2016-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-15
    相关资源
    最近更新 更多