2016-06-05 29 views
0

Ich muss Bridge-Anwendung in .NET schreiben und der Client ist Java RMI. Ich versuche, den richtigen Weg zu finden, den Server in .NET zu implementieren, wenn es möglich ist.Rufen Sie .NET Remote-Funktionen mit JRMI-Client

+0

Es ist nicht. Java RMI basiert auf Java Serialization und Sie benötigen dafür eine JVM. – EJP

Antwort

0

Es ist nicht unmöglich, aber fast sicher nicht die Mühe wert, die Brücke in reinem .NET zu entwickeln. Wenn Sie den Client nicht in eine interoperablere Technologie (einige mehrsprachige RPCs oder RESTs) ändern können, sollten Sie überlegen, wie Sie die Java-Serverseite des RMI in die Bridge-Anwendung integrieren.

Beispielsweise können Sie eine JVM in einem "nativen" Prozess hosten, den Sie in C/C++ entwickeln, oder Sie können eine DLL mit nativem Code in einen JVM-Prozess laden. In beiden Fällen verwenden Sie JNI für die Kommunikation von Java zu C/C++. Und Sie können die C/C++ - Seite in C++/CLI für den Übergang zu .NET entwickeln. (Dies führt zu dem interessanten Szenario, dass sowohl eine JVM als auch eine CLR im selben Prozess ausgeführt werden, die ich nie persönlich verwendet habe.)

Alternativ könnten Sie die serverseitigen Java und .NET in verschiedene Prozesse trennen, und lassen Sie sie erneut mit einem mehrsprachigen RPC oder REST kommunizieren (beachten Sie, dass dies keine Änderung des Clients erfordert). Wenn die zu überbrückende Schnittstelle groß ist, bevorzugen Sie vielleicht diese Methode, um die native Seite einer großen JNI-Schnittstelle zu schreiben, die ich als langwierig und fehleranfällig empfinde.