4

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

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

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

4

1 回答 1

4

我在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 接口。

于 2011-07-06T15:12:26.800 回答