Какой самый лучший (самый простой) способ передачи данных на C / C ++ - PullRequest
0 голосов
/ 07 января 2010

В настоящее время я работаю над кроссплатформенным клиент-серверным программным обеспечением C / C ++. Я очень опытный разработчик, когда дело доходит до разработки низкоуровневых сокетов. Проблема с сокетами Berkley / Winsock в том, что вам всегда нужно сделать какой-то синтаксический анализатор, чтобы все получилось прямо на стороне получателя. Я имею в виду, что вы должны интерпретировать данные и объединять пакеты для правильной передачи. (пакеты часто нарезаются)

Имейте в виду, что сообщение будет двунаправленным. Является ли чистый сокет лучшим способом передачи данных в настоящее время? Вы бы порекомендовали SOAP, Webservices или другой вид инкапсуляции для этого приложения?

Ответы [ 3 ]

4 голосов
/ 07 января 2010

Я очень рекомендую Буферы протокола Google .

1 голос
/ 07 января 2010

При любой передаче данных возникает необходимость сериализации и десериализации объектов.

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

Текстовые переводы должны быть проще для отладки, так как вы можете просто прочитать текст. Вам все еще придется их анализировать.

Веб-службы на основе SOAP - это простые пакеты на основе XML, которые обычно отправляются по протоколу HTTP. Что-то придется разбирать HTTP и XML. Простота использования не является внутренней, а скорее зависит от инструментов в вашем распоряжении. Если у вас есть хорошие инструменты, все средства, но то же самое относится и к любой форме обмена данными.

Вы можете взглянуть на Boost Serialization Library . Это довольно сложная библиотека, и она требует написания кода, указывающего, какие элементы должны быть сериализованы. ИТ-отдел действительно поддерживает как текстовую (включая xml), так и двоичную сериализацию. Это также кроссплатформенная.

1 голос
/ 07 января 2010

В наши дни многие люди используют веб-сервисы и SOAP. Для этой цели доступны пакеты C ++. Они будут использовать сокеты для вас и обрабатывать все данные. Если вы работаете в Unix / Linux, даете или берете сетевые дескрипторы System V.4, ваши данные в конечном итоге будут передаваться через сокеты.

В Windows есть другие варианты, если вы хотите общаться только с другими окнами Windows.

Вы также можете посмотреть на CORBA, но это не обычная практика.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...