2014-10-11 2 views
1

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

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

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

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

+0

Вы можете использовать сообщение очереди. Посмотрите на RabbitMQ. – brz

+0

Почему бы не использовать файловую систему? – ariscris

ответ

2

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

  • сериализация данных (Protobuf, JSON, BSON, XML)
  • данных Сжать (GZIP, мгновенным, LZ4). Торговли в скорости алгоритма размера выходного
  • Send сгустка в другое приложение с помощью межпроцессного взаимодействия

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

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

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

1

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

В него записывается одна программа, а другая считывается из нее, так же как соединение TCP/IP, но с меньшими накладными расходами.

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

0

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

  1. XML
  2. JSON

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

 Смежные вопросы

  • Нет связанных вопросов^_^