Question

Nous avons écrit un programme Java que nous cherchons à utiliser et d'interagir avec de C #. Quelles sont nos options? Il serait au mieux possible de compiler l'application Java en tant que bibliothèque (.DLL) que nous pourrions faire référence à partir de C # peut-être en utilisant P / Invoke. Toutefois, cela ne semble pas être une option selon les premières recherches en ligne.

Nous optons pour pouvoir utiliser ASP.NET pour construire un moteur de recherche alimenté par le code Java, donc si cela ouvre pour toutes les autres options s'il vous plaît laissez-nous savoir.

Était-ce utile?

La solution

Désolé, vous cannot appelez java code / classes Directly à partir du code C #.

Une façon de le faire est de wrap vos classes Java dans un cours de java Web Service et appel indirectly par cette interface de service Web dans votre code C #.

Une autre manière est d'utiliser javareg.exe qui expose des classes java comme COM. Vous pouvez le trouver à l'emplacement suivant:

C:\Program Files\Microsoft VisualStudio\VIntDev98\bin\javareg.exe

Après les messages pourraient aider aussi bien

Autres conseils

L'approche la plus simple serait sans doute de publier les fonctionnalités de votre bibliothèque Java en tant que services Web et d'ajouter une référence Web à partir de votre application asp.net.

Java n'est pas destiné à être embarqué dans un autre programme, vous avez donc besoin d'un pont. La solution la plus simple est d'utiliser un socket: Créer un processus Java qui écoute les commandes sur une prise. Dans le C #, envoyer les commandes à la prise et lire les réponses.

Le principal problème ici est sérialisation mais si vous utilisez XML, ce n'est pas une si grande douleur plus. Essayez la sérialisation XML intégré ( voir cet article ) ou des cadres personnalisés comme ou href="http://simple.sourceforge.net/" rel="nofollow noreferrer"> simple .

Il est certainement possible d'envelopper Java dans un .dll, et a fait partie de la plate-forme Java de base depuis plus de 10 ans. JNI (Java Native Interface) possède une interface pour l'intégration d'une machine virtuelle Java dans votre code, ce qui signifie que vous pouvez exécuter des classes Java en utilisant les liaisons de type C. Notez que cela exigera que vous écrivez un emballage simple C, il y a des échantillons dans: http://java.sun.com/docs/books/jni /html/invoke.html#11202

Comme certains de ces messages suggèrent, il est parfois souhaitable d'être couplé moins étroitement, de sorte que vous voudrez peut-être envisager d'utiliser une autre conception. Une option serait une simple base de données, où l'application Java interroge régulièrement pour les demandes à partir du code C #. Si vous voulez être plus couplage, pour des choses comme les rappels, vous pouvez regarder les interfaces distribuées.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top