【发布时间】:2019-11-14 09:17:01
【问题描述】:
我们现在需要在 Docker 容器中调用一堆 .Net 类。我们维护容器的人说容器是 linux 并且还不支持 windows 容器。调用我们 .net 代码的第 3 方产品只能调用容器上的 java 代码。所以我们不能直接在容器上使用 .net core。我们要么用 Java 重写整个代码,要么只编写 Java 存根并从这些存根中调用我们的 .net 代码。
我检查了 IKVM 和 jni4net,但它们似乎没有帮助。 IKVM 似乎使用了特定的 VM(我不知道 docker 是否支持)并且 jni4net 需要 Windows 运行时。
我们还有哪些其他免费/开源选项?
【问题讨论】:
-
是否可以将您现有的代码库拆分为最少的类似 Linux 的实用程序?例如。您有一个包含许多不同功能的庞大库。取而代之的是,创建大量较小的应用程序,然后您可以直接调用它们?然后可以轻松地从 Java 调用这些代码,而您不必重新编写整个代码库。
-
不确定我是否理解您的问题,但可能会通过 API 公开 .NET 类?然后通过 http/gRPC 从您的 Java 应用程序调用 :NET API?
-
@Henkolicious 我浏览了 gRPC 文档,我想我们必须为 .net 类库中每个公共类的每个公共方法编写 proto 文件。这将意味着数百个 proto 文件,这对于我的同事来说就像用 Java 重写整个类库一样困难 :) 如果我没有弄错 gRPC,我们将不得不编写我在问题中提到的 Java 存根好。不确定这是否是最简单的解决方案。
-
@SimonC Linux 中有哪些实用程序,你能说得更具体点吗?我们现在的代码其实是测试自动化代码,调用Selenium API;这些实用程序也会调用 Selenium 吗?
-
我的意思不是拥有一个庞大的库,而是将库拆分为许多小应用程序。
标签: java docker .net-core containers ikvm