Я изучаю разработку решения, которое может взаимодействовать с различными языками (Python, C, С#, LabVIEW), где я могу отправлять данные в и из решения. Он взаимодействует с системой FlexRIO, где большие объемы данных будут обрабатываться как можно быстрее с помощью FPGA. Само решение может быть написано на C или LabVIEW (мои ограничения - это опции, которые у меня есть программное обеспечение для взаимодействия с драйверами FlexRIO).
Это программное обеспечение будет принимать команды, которые будут предопределены (например, RESET: ALL), но размер данных может быть чрезвычайно большим (например, массив из 10 миллионов символов).
Так, например, я могу написать код в Python для отправки команд этому программному обеспечению, а также получить информацию обратно.
Какие у меня есть варианты, когда вы отправляете эти данные? Я думал о TCP/IP, но я не знаю ограничений скорости и памяти, которые у меня могут быть. Оба программного обеспечения будут находиться на одном компьютере.
Я работал над подобной проблемой. Одним из решений, которое вы можете использовать, является:
Другая сторона делает то же самое в обратном порядке.
Я использовал трубы protobuf, lz4 и WCF, которые хорошо работали для частых небольших сообщений, но проверяйте их своими данными.
В вашем случае запись в файл и чтение из файла может быть быстрее.
Трубы - один из способов, они поддерживаются на всех упомянутых вами языках. Это кусок общей памяти, но API-интерфейсы означают, что он работает так же, как файл или поток в зависимости от языка.
Одна программа записывает в нее, а другая читает с нее, так что это связано с TCP/IP-соединением, но с меньшими затратами.
Если вы умны в этом, большая часть вашего кода не будет знать, какой тип потока он использует. Тогда, если вам когда-либо понадобится изменить механизм, мало повлияет ваш код.
Вы можете использовать любой из форматов обмена данными для приложений
так что вы можете общаться с любым препятствием
Взгляните на некоторые данные о переносе между методами приложения в этих ссылках:
http://www.codeproject.com/Articles/14740/Fast-IPC-Communication-Using-Shared-Memory-and-Int
http://msdn.microsoft.com/en-us/library/windows/desktop/ms648774%28v=vs.85%29.aspx