Мне нужно написать приложение Bridge в .NET, а клиент - Java RMI. Я пытаюсь найти правильный способ реализовать сервер в .NET, если это возможно.Invoke .NET удаленные функции с клиентом JRMI
ответ
Это не невозможно, но почти наверняка не стоит беспокоиться о создании моста в чистом .NET. Если вы не можете изменить клиента на более совместимую технологию (некоторые многоязычные RPC или REST), подумайте о том, как включить серверную часть Java RMI в приложение моста.
Например, вы можете разместить JVM в «родном» процессе, который вы разрабатываете на C/C++, или вы можете загрузить DLL собственного кода в процесс JVM. В любом случае вы используете JNI для связи с Java на C/C++. И вы можете разработать C/C++ в C++/CLI, чтобы перейти на .NET. (Это приводит к интересному сценарию как JVM, так и CLR, работающего в том же процессе, который я никогда не использовал лично).
В качестве альтернативы вы можете разделить серверные Java и .NET на отдельные процессы, и попросите их обмениваться информацией, используя многоязычный RPC или REST (обратите внимание, что это не требует изменения клиента). Если интерфейс, который вы соединяете, является большим, вы можете предпочесть этот подход для записи нативной стороны большого интерфейса JNI, который я считаю утомительным и подверженным ошибкам.
Это не так. Java RMI основывается на Java Serialization, и для этого вам нужна JVM. – EJP