У меня не так много идей, когда речь заходит о промышленности, но я думаю, что проблема похожа на другие, не столь строгие сценарии.Неясно также, что вы подразумеваете под "промежуточным программным обеспечением".В любом случае, я бы посоветовал вам не дублировать код и, при необходимости, иметь несколько интерфейсов для других языков.
В идеальном сценарии было бы очень удобно иметь один изолированный процесс с логикой вашего приложения, написанный на любом удобном для вас языке, и иметь этот процесс для взаимодействия с использованием некоторых механизмов взаимодействия между процессами (например, каналы, сокеты, разделяемая память, файлы) с тонкими клиентскими библиотеками, которые могут использоваться клиентами на других языках.Таким образом, вы вынуждены создать очень чистый протокол связи / использования и иметь некоторое разделение интересов (потому что вся связь должна быть сериализована);вы получаете надежность (фатальная ошибка в вашем процессе приложения или в вашем клиенте не обязательно означает сбой в другом), и вам не нужно использовать механизмы ffi, а скорее такие вещи, как сокеты и каналы.Более того, если вы решите опубликовать свой комм.По протоколу сторонние разработчики могут создавать оболочки на своем экзотическом языке, не требующем прямой ссылки / импорта на ваши компоненты разработки.
Этот вид парадигмы успешно используется на протяжении многих лет в мире Unix итакие программы, как Mathematica.Аналогичным образом разработчики java сделали плагин java работать вне браузера, в отдельном процессе, чтобы уменьшить сложность взаимодействия.