Мы работаем над аналогичным проектом. Мы пишем код интеграции на C # и бизнес-логику для нашего проекта на Java.
Мы используем мост C ++, который использует JNI для перевода вызовов Java в C ++, а затем переводит их обратно в C # и наоборот. Каждая функция, которая должна перейти из C # в Java, должна быть реализована в коде моста. Это довольно сложно, и есть некоторые проблемы с получением неуправляемого кода C ++ для работы с C #, а также стандартные накладные расходы по переводу Jstrings в строки C # и тому подобное. Результат относительно быстрый, после того, как мы выполнили некоторые оптимизации, чтобы гарантировать, что мы не запускаем и не останавливаем JVM для каждого вызова на уровне Java.
Ранее мы использовали COM-объекты, которые вызывались плагином AutoCAD, так что это был бы другой подход.