Взаимодействие с Java-кодом из C # - PullRequest
6 голосов
/ 17 марта 2010

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

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

Ответы [ 4 ]

7 голосов
/ 17 марта 2010

Извините, вы 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

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

5 голосов
/ 17 марта 2010

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

2 голосов
/ 17 марта 2010

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

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

0 голосов
/ 04 августа 2012

Конечно, можно обернуть 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 #. Если вам нужна более тесная связь, для таких вещей, как обратные вызовы, вы можете посмотреть на распределенные интерфейсы.

...