如何在 ASP.NET Core 3.1 中使用 Java?
Posted
技术标签:
【中文标题】如何在 ASP.NET Core 3.1 中使用 Java?【英文标题】:How to use Java in ASP.NET Core 3.1? 【发布时间】:2022-01-09 17:41:56 【问题描述】:我正在使用 ASP.NET 构建一个 REST API,理想情况下它应该能够使用 Java 代码。我已经设法在一个简单的控制台应用程序中使用jni4net 在.NET 和Java 之间建立了一座桥梁。由于 .NET 和 Java 不存在互操作性,这是绝对必要的。
尽管如此,我无法使用 jni4net 在我的 ASP.NET 项目中创建桥接器。显然这是一个常见错误,因为 .NET core 2.1 或更高版本不支持下面显示的方法。我指的是这个问题:“Error in the webapp while connecting with JVM using jni4net from C#”。
MissingMethodException:找不到方法:'System.Reflection.Emit.AssemblyBuilder System.AppDomain.DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess)'。
请注意,我将 .NET core 3.1 用于我的 ASP.NET 项目和 jni4net 0.8.8.0。无论如何,如果需要,我会更改我的 .NET 版本。我当前在 Program.cs 中的实现如下所示:
using net.sf.jni4net;
public class Program
public static void Main(string[] args)
var setup = new BridgeSetup();
setup.Verbose = true;
Bridge.CreateJVM(setup); // Error is thrown here
有人知道是否有办法绕过此错误或如何在 ASP.NET 项目中使用 Java 代码?我非常感谢任何帮助或建议,纯粹的!
【问题讨论】:
理想情况下是的,在现实世界中没有。 @ThorbjørnRavnAndersen 您能否描述一下原因,以便我继续跟进?你有什么例子或参考我吗? 问题标题已更改。你不能轻易做到这一点。查看 ikvm 项目 【参考方案1】:API 是一种媒介,它接收来自客户端的请求,在内部处理这些请求并响应客户端。
您可以通过在 .NET Core 上创建 API 并在您的 Java 项目中使用该 API 来做您想做的事情。
以最简单的方式,您可以在 .NET 项目的控制器中创建 API 端点,并使用 API 端点的目标 URL 向 Java 应用程序上的该 API 发送请求。 来自您的 API 的响应将采用 JSON 格式。
请注意,您可以使用任何语言的 API,因为您的应用程序和 API 之间的通信将通过 HTTP 请求和 JSON 响应进行。
一些有用的视频链接开始:
如何在 .NET Core 3.1 中构建 Restful API https://www.youtube.com/watch?v=fmvcAzHpsk8&t=11447s&ab_channel=LesJackson 如何在 Java 应用程序中使用 API https://www.youtube.com/watch?v=Fry7waUIJiY&ab_channel=PrakashShindalkar我还想澄清一下,HTTP 只是一个协议。您可能也可以使用其他通信协议来实现您想要的,但是这个更受欢迎并且更适合您的需求。
【讨论】:
后续,也可以从nuget尝试IKVM。 好主意 - 但我需要从 C# 访问我的 java 代码,所以我可能会转过身来使用 Spring (Java) 构建我的 REST API。无论如何,您的回答给了我基础并帮助了我很多-谢谢!【参考方案2】:据我所知 jni4net 与 .NET Core 不兼容。它适用于 .NET Framework。
这是绝对必要的,因为 .NET 和 Java 不存在互操作性。 我不知道情况,但它不应该是必要的。只需构建一个将 API 公开给 C# 代码的服务。瞧,你有一座桥。或者您可以使用 CORBA,但它太复杂了,根本不值得 imo。
【讨论】:
我不知道.NET Core 和.NET 之间有很大的区别,所以我今天已经学到了一些新东西。您能否再描述一下您的建议:只需构建一个将 API 暴露给 C# 代码的服务。瞧,你有一座桥。?我将非常感激,纯粹的! 我所说的基本上你可以用Java编写一个web api(应用程序编程接口),它封装了你需要在C#中使用的东西并调用那个api。 2 个不同的应用程序,一个用 C# 编写的只要求一些东西并得到结果,而一个用 Java 编写的应用程序完成了真正的工作。你能更准确地说明你需要做什么吗?所以我可以更好地帮助你。 你已经在这些细节上帮助了我很多 - 我会试试你的建议!谢谢。以上是关于如何在 ASP.NET Core 3.1 中使用 Java?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Asp.net Core 3.1 中使用 Ajax 刷新或重新加载 ViewComponent?
如何使用 C# 在 ASP.NET Core 3.1 MVC 中使用会话变量
如何正确解析要在 ASP.NET Core 3.1 的 ConfigureServices() 中使用的服务?
如何使用 Visual Studio 2019 在 Docker 容器中运行 ASP.NET Core 3.1 项目?