使用 JRMI 客户端调用 .NET 远程功能
Invoke .NET remote functions with JRMI client
我需要在 .NET 中编写 Bridge 应用程序,客户端是 Java RMI。
如果可能的话,我试图找到在 .NET 中实现服务器的正确方法。
这并非不可能,但几乎肯定不值得在纯 .NET 中开发桥梁。如果您不能将客户端更改为更具互操作性的技术(某些多语言 RPC 或 REST),请考虑如何将 RMI 的 Java 服务器端合并到桥接应用程序中。
例如,您可以在用 C/C++ 开发的 "native" 进程中托管 JVM,或者可以将本机代码的 DLL 加载到 JVM 进程中。在任何一种情况下,您都使用 JNI 从 Java 到 C/C++ 进行通信。您可以在 C++/CLI 中开发 C/C++ 端以过渡到 .NET。 (这导致了 JVM 和 CLR 运行 在同一个进程中的有趣场景,我个人从未使用过。)
或者,您可以将服务器端 Java 和 .NET 分成不同的进程,让它们再次使用多语言 RPC 或 REST 进行通信(注意这不需要更改客户端).如果您要桥接的接口很大,您可能更喜欢这种方法来编写大型 JNI 接口的本机端,我发现这很乏味且容易出错。
我需要在 .NET 中编写 Bridge 应用程序,客户端是 Java RMI。 如果可能的话,我试图找到在 .NET 中实现服务器的正确方法。
这并非不可能,但几乎肯定不值得在纯 .NET 中开发桥梁。如果您不能将客户端更改为更具互操作性的技术(某些多语言 RPC 或 REST),请考虑如何将 RMI 的 Java 服务器端合并到桥接应用程序中。
例如,您可以在用 C/C++ 开发的 "native" 进程中托管 JVM,或者可以将本机代码的 DLL 加载到 JVM 进程中。在任何一种情况下,您都使用 JNI 从 Java 到 C/C++ 进行通信。您可以在 C++/CLI 中开发 C/C++ 端以过渡到 .NET。 (这导致了 JVM 和 CLR 运行 在同一个进程中的有趣场景,我个人从未使用过。)
或者,您可以将服务器端 Java 和 .NET 分成不同的进程,让它们再次使用多语言 RPC 或 REST 进行通信(注意这不需要更改客户端).如果您要桥接的接口很大,您可能更喜欢这种方法来编写大型 JNI 接口的本机端,我发现这很乏味且容易出错。