Вопрос

Мы написали Java-программу, которую хотим использовать и взаимодействовать с C #.Какие у нас есть варианты?Оптимально было бы скомпилировать Java-приложение в виде библиотеки (.DLL), на которую мы могли бы ссылаться из C #, возможно, используя P / Invoke .Однако, судя по первым нескольким поисковым запросам в Интернете, это не вариант.

Мы выбираем возможность использовать ASP.NET для создания поисковой системы, основанной на коде Java, поэтому, если это откроет какие-либо другие возможности, пожалуйста, сообщите нам об этом.

Это было полезно?

Решение

Извини, ты cannot вызовите java code / classes Directly из кода C #.

Один из способов сделать это - это wrap обновите свои классы Java в java Web Service и вызывать классы indirectly через этот интерфейс веб-службы в вашем коде C #.

Другой способ заключается в использовании javareg.exe который предоставляет классы java как COM.Вы можете найти его по следующему адресу:

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

Следующие сообщения также могут помочь

Другие советы

Самый простой подход, вероятно, будет публиковать функциональность вашего библиотеки Java в качестве веб-службы и добавить веб-ссылку из своего приложения asp.net .

Java не предназначена для встраивания в другую программу, поэтому вам нужен мост.Самое простое решение - использовать сокет:Создайте Java-процесс, который прослушивает команды в сокете.В C # отправьте команды в сокет и прочитайте ответы.

Основной проблемой здесь является сериализация, но если вы используете XML, это уже не такая большая проблема.Попробуйте встроенную XML-сериализацию (смотрите эту статью) или пользовательские фреймворки, такие как XStream - поток или Простой.

Безусловно, Java можно обернуть в .dll, и она является частью базовой платформы Java уже более 10 лет.JNI (Java Native Interface) имеет интерфейс для встраивания JVM в ваш код, что означает, что вы можете запускать классы Java, используя связывание в стиле C.Обратите внимание, что для этого потребуется, чтобы вы написали простую оболочку C, внутри которой есть образцы:http://java.sun.com/docs/books/jni/html/invoke.html#11202

Как предполагают некоторые из этих других сообщений, иногда желательно, чтобы они были менее тесно связаны, поэтому вы можете рассмотреть возможность использования другого дизайна.Одним из вариантов была бы простая база данных, где Java-приложение регулярно опрашивает запросы из кода C #.Если вам нужна более тесная связь, для таких вещей, как обратные вызовы, вы можете посмотреть на распределенные интерфейсы.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top