【问题标题】:How to call .Net Core classes from Java on Docker如何在 Docker 上从 Java 调用 .Net Core 类
【发布时间】: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


【解决方案1】:

JNBridge 可与 .NET Core 和 Docker 一起使用。

请参阅 https://jnbridge.com/https://jnbridge.com/blog/creating-microservices-docker-jnbridgepro(在示例中使用 Mono,但应该同样适用于 .NET Core)。

【讨论】:

  • 我猜由于 JNBridge 许可,我的管理层将决定完全用 Java 重写类库,而不是依赖第三方来避免重写 3000 行代码。我们正在寻找的是一个免费/开源的解决方案。
猜你喜欢
  • 1970-01-01
  • 2021-10-21
  • 1970-01-01
  • 2020-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多