Межпроцессное взаимодействие между приложением C++ и Приложением Java в среде Windows OS

Я обычно иду с чем-то как...

list = ["Alpha", "Beta", "Gamma"];
output = "";
separator = "";
for (int i = 0; i < list.length ; i++) {
  output = output + separator;
  output = output + list[i];
  separator = ", ";
}

Это работает, потому что на первой передаче, разделитель пуст (таким образом, Вы не получаете запятую в запуске, но на каждой последующей передаче, Вы добавляете запятую прежде, чем добавить следующий элемент.

Вы могли, конечно, развернуть это немного для создания его немного быстрее (присваивающий разделителю, много раз не идеально), хотя я подозреваю, что это - что-то, что компилятор мог сделать для Вас автоматически.

В конце, хотя, я подозреваю симпатичный, это что большинство функций соединения уровня языка, к которым сводятся. Не что иное как сахар синтаксиса, но это уверенный сладко.

6
задан Josh Lee 19 January 2010 в 07:13
поделиться

4 ответа

Я не уверен, почему вы думаете, что связь на основе сокетов может вызывать проблемы с безопасностью (используйте SSL). Часто это очень хороший подход, поскольку он не зависит от языка , предполагая, что у вас есть четко определенный протокол связи. Взгляните, например, на буферы протокола Google - они генерируют необходимые классы и потоки Java.

По моему опыту, файловые системы (особенно сетевые файловые системы) не очень подходят для такого взаимодействия, поскольку они не обязательно настроены для обмена сообщениями (например, я видел, как проблемы с кешированием приводят к тому, что файлы не выбираются целевым процессом).

Другой вариант - уровень обмена сообщениями ( AMQ или Tibco, например), хотя это, вероятно, потребует больших административных затрат (плюс опыт) для настройки.

Лично я предпочел бы подход с использованием чистых сокетов из-за его гибкости и простоты. Вы будете под полным контролем .

9
ответ дан 8 December 2019 в 16:08
поделиться

Я использовал именованные каналы для связи между C # и кроссплатформенным приложением на C ++ и получил только хорошие результаты. Запрет на наличие сокетов - определенно правильный путь.

3
ответ дан 8 December 2019 в 16:08
поделиться

Ice довольно круто :)

1
ответ дан 8 December 2019 в 16:08
поделиться

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

Безопасность, безусловно, вызывает беспокойство, но есть хороший набор вариантов в зависимости от того, насколько это важно является. Вы можете использовать SSL, настраиваемое квитирование, защищенный паролем вход в систему и брандмауэры, чтобы защитить его.

Изменить: Не то, что я рекомендовал бы, но есть также разделяемая память с использованием JNI. Просто подумал, что упомяну об этом, потому что его нет в вашем списке.

2
ответ дан 8 December 2019 в 16:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: