Как лучше всего передавать данные между разными программами с разными языками программирования на одном компьютере?

1

Я изучаю разработку решения, которое может взаимодействовать с различными языками (Python, C, С#, LabVIEW), где я могу отправлять данные в и из решения. Он взаимодействует с системой FlexRIO, где большие объемы данных будут обрабатываться как можно быстрее с помощью FPGA. Само решение может быть написано на C или LabVIEW (мои ограничения - это опции, которые у меня есть программное обеспечение для взаимодействия с драйверами FlexRIO).

Это программное обеспечение будет принимать команды, которые будут предопределены (например, RESET: ALL), но размер данных может быть чрезвычайно большим (например, массив из 10 миллионов символов).

Так, например, я могу написать код в Python для отправки команд этому программному обеспечению, а также получить информацию обратно.

Какие у меня есть варианты, когда вы отправляете эти данные? Я думал о TCP/IP, но я не знаю ограничений скорости и памяти, которые у меня могут быть. Оба программного обеспечения будут находиться на одном компьютере.

  • 0
    Вы можете использовать очереди сообщений. Посмотрите на RabbitMQ.
  • 0
    Почему бы не использовать файловую систему?
Теги:
fpga
tcp-ip
labview

4 ответа

2

Я работал над подобной проблемой. Одним из решений, которое вы можете использовать, является:

  • Данные Serialise (protobuf, json, bson, xml)
  • Сжатие данных (gzip, snappy, lz4). Торговля заключается в скорости алгоритма до размера выпуска
  • Отправить blob в другое приложение, используя Inter-Process Communication

Другая сторона делает то же самое в обратном порядке.

Я использовал трубы protobuf, lz4 и WCF, которые хорошо работали для частых небольших сообщений, но проверяйте их своими данными.

В вашем случае запись в файл и чтение из файла может быть быстрее.

1

Трубы - один из способов, они поддерживаются на всех упомянутых вами языках. Это кусок общей памяти, но API-интерфейсы означают, что он работает так же, как файл или поток в зависимости от языка.

Одна программа записывает в нее, а другая читает с нее, так что это связано с TCP/IP-соединением, но с меньшими затратами.

Если вы умны в этом, большая часть вашего кода не будет знать, какой тип потока он использует. Тогда, если вам когда-либо понадобится изменить механизм, мало повлияет ваш код.

0

Вы можете использовать любой из форматов обмена данными для приложений

  1. XML
  2. JSON

так что вы можете общаться с любым препятствием

0

Ещё вопросы

Сообщество Overcoder
Наверх
Меню