Frage

Hat jemand eine gute Lösung für die Integration von C#-Code in eine Java-Anwendung?

Der Code ist klein, daher könnte ich ihn in Java neu schreiben, aber wenn möglich würde ich den Code lieber wiederverwenden.Wiederholen Sie sich nicht usw.

Außerdem weiß ich, dass ich C# als Webdienst oder was auch immer verfügbar machen kann, aber es enthält einige Sicherheits-/Verschlüsselungsfunktionen, daher würde ich es nach Möglichkeit lieber eng integriert halten.


Bearbeiten:Es wird auf einer serverbasierten App laufen, daher ist das „Herunterladen“ einer anderen Laufzeit irrelevant.

War es hilfreich?

Lösung

Es gibt einen IL-zu-Java-Bytecode-Compiler Heuschrecke die für Sie von Nutzen sein könnten.Ich habe es allerdings noch nie ausprobiert.

Ich würde jedoch versuchen, Ihren Code in Java umzuschreiben

BEARBEITEN:Beachten Sie, dass Grasshopper offenbar nicht mehr verfügbar ist.

Andere Tipps

Sie würden das Java Native Interface verwenden, um Ihren in eine DLL kompilierten C#-Code aufzurufen.

Wenn es sich um eine kleine Menge C# handelt, wäre es viel einfacher, es nach Java zu portieren.Wenn es viel ist, könnte dies eine gute Möglichkeit sein, dies zu tun.

Hier ist eine allgemeine Übersicht darüber:

http://en.wikipedia.org/wiki/Java_Native_Interface

Ihre andere Möglichkeit wäre, eine COM-Assembly aus dem C#-Code zu erstellen und sie mit J-Interop aufzurufen.

http://sourceforge.net/projects/j-interop/

Ich bin Autor von jni4net, Open-Source-Intraprozessbrücke zwischen JVM und CLR.Es basiert auf JNI und PInvoke.Kein C/C++-Code erforderlich.Ich hoffe es hilft dir.

Wenn es kurz ist, ist es meiner Meinung nach besser, den Code in Java neu zu schreiben.Das Herunterladen einer 50-MB-Laufzeitumgebung ist schon schlimm genug.

Wir verwendeten JNBridge dafür, und es hat super funktioniert.Es verarbeitet Java->.NET und umgekehrt, alles in-proc.

Wenn Sie es nicht umschreiben möchten, müssen Sie es als Interprozesskommunikation und wählen Sie eine der folgenden Optionen:

  • Benannte Rohre
  • Steckdosen
  • SEIFE

Ich würde es umschreiben, wenn es nicht zu viel Mühe macht.Der Webdienst würde funktionieren, aber es scheint, dass die Wiederverwendung von ein wenig Code einen großen Aufwand bedeuten würde.

http://www.infoq.com/articles/in-process-java-net-integration schlägt vor, CLR und JVM im selben Prozessraum auszuführen und Aufrufe hin und her zu leiten.Es klingt sehr effizient.Ich werde es versuchen und es integrieren Jace wenn es gut funktioniert.

Wenn es sich um einen Code handelt, der als Befehlszeilenprogramm verfügbar gemacht werden kann, lasse ich die andere Hostsprache einfach einen Systemaufruf verwenden, um das Dienstprogramm auszuführen.

Wenn Ihre C#-App Java aufrufen muss, kompilieren Sie eine spezielle Java-Hauptanwendung, die die entsprechenden Befehlszeilenargumente akzeptiert und eine Textausgabe zurückgibt.

Es ist die älteste und einfachste Methode.

Sie können Ihre C#-Klassen (kompiliert in einer DLL) über eine Brückenbibliothek aufrufen, es stehen verschiedene Bibliotheken zur Verfügung, jede mit ihren eigenen Eigenschaften. JNBridge Generieren Sie Proxy-Klassen, die Sie aufrufen können, um den Code in Java-Klassen zu verwalten. JCOBridge Sie können Ihre C#-Klassen auch über den Aufrufmechanismus laden und von Java aus verwenden javonet Sie können Java-Klassen importieren und Java-Code mithilfe des Aufrufmechanismus aufrufen.
Bei allen untersuchten Lösungen handelt es sich um kommerzielle Lösungen, mit denen Sie Java-Code aus .NET und umgekehrt aufrufen können, mit grafischer Benutzeroberflächenintegration und anderen Annehmlichkeiten.

Links:
jnbridge Java-.NET Bridge-Entwickler- und Bereitstellungslizenzschema mit 30-tägiger kostenloser Testversion
jcobridge Java-.NET Bridge-Entwickler- und Bereitstellungslizenzschema mit unbegrenzter Testversion
javonet Java-.NET Bridge Research und Professional-Lizenzschema mit 30-tägiger, unbegrenzter Testversion nach der Anmeldung

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top