2015-08-13 2 views
0

Я пытаюсь использовать службу обмена сообщениями (через TCPIP) между окнами на ПК (запущенное приложение C#) и linux на плате SoC (работает приложение C++). Я прошел через протокольные буферы Google и подумал, что я могу сериализовать структуру (структуру данных) в буфер и записать этот буфер через сокеты (также видел пример).Буферы протокола - RPC

Мой вопрос, есть ли другой способ сделать это? Что делает протокол buffer-RPC? Я просмотрел их документацию, но они не уточняют, как это сделать с помощью TCPIP. Может быть, у кого-то есть примеры для этой или детальной документации?

Спасибо, Karthik.

+1

Буферы протокола - это только формат данных. Вы можете отправить их, как хотите. Или вы можете использовать [gRPC] (http://www.grpc.io), систему RPC Google. – ughoavgfhw

+0

@ughoavgfhw: Я прошел через пример, который у них есть для gRPC. Его для localhost, я хочу его через TCPIP. В документации не говорится о том, как это сделать, или я мог бы полностью пропустить это. У вас есть примеры или документация о том, как использовать gRPC? Благодаря! – Karthik

+0

У меня нет ничего, кроме этой ссылки. Но я уверен, что вы должны просто заменить «localhost» на IP-адрес или имя хоста, и он будет работать. – ughoavgfhw

ответ

1

Мой вопрос, есть ли другой способ сделать это?

Существует много способов сделать это. Буферы протокола Google - это библиотека для межплатформенного сериализации объектов. Эти сериализованные данные можно разделить по-разному. Моя рекомендация для вас - использовать ZMQ (ZMQ GUIDE), который идеально подходит для приложений, подобных вашим.

У меня есть аналогичный прецедент для вас. Я написал Linux C++ ZMQ-сервер на Raspberry Pi и Python ZMQ-клиент, предназначенный для целей телеметрии и удаленного управления. Эта библиотека эффективна и легка, отлично работает с буферами протокола Google и имеет обязательную привязку ко всем основным языкам программирования. Если вы решите использовать эту библиотеку, не стесняйтесь спрашивать меня о примере рабочего кода.

+0

Мы хотели бы иметь RPC, чтобы избежать байтового декодирования для всех функций, которые у нас есть. Именно по этой причине я искал, как работает gRPC. Мы еще не решили, что использовать. – Karthik

+0

Я понимаю ваши проблемы. Я знаю, что буферы протокола поставляются с поддержкой RPC, но они лучше подходят для реализации пакетно-ориентированного транспорта. Одним из способов является сетевая библиотека ZMQ. Это эффективный, легкий, но мощный инструмент. Он поддерживает не только тривиальную клиент-серверную связь, такую ​​как RPC-модель, но и многие другие, такие как публикация-подписка (шаблон для асинхронного уведомления многих клиентов, зарегистрированных на какое-то событие) push-pull (шаблон для распределения задач для рабочих) и многие другие. Я действительно призываю вас ладить с этой библиотекой. –

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