Взаимодействие с Java-кодом из C#

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

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

4 ответа

Решение

Прости ты cannot позвони в Яву code / classesDirectly из кода 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 или Simple.

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

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

Другие вопросы по тегам