Простые анонимные каналы - какую модель обертки вы используете? (WinAPI, C ++) - PullRequest
1 голос
/ 07 декабря 2008

У меня два запущенных процесса в Windows, и у каждого процесса есть канал к другому.

Я хочу сериализовать сложный класс и передать его из одного процесса в другой. Я уже разработал процедуру сериализации, и я понимаю, что каналы отправляют двоичные потоки. Как мне отправлять сериализованные данные? Я использую WinAPI и C ++.

Должен ли я разработать собственный протокол? Если так, должен ли он быть универсальным или уникальным для этого конкретного класса? Можно ли сохранить виртуальные таблицы при отправке сериализованного класса?

Существуют ли какие-либо модели или шаблоны дизайна, которые обычно используются в этом случае? Немного примеров кода будет принята с благодарностью. Спасибо!

Ответы [ 4 ]

2 голосов
/ 07 декабря 2008

Вот учебник для boost::serialization. Я мог предположить, что это будет работать нормально, посылая данные по каналу и десериализацию с другой стороны: http://www.boost.org/doc/libs/1_37_0/libs/serialization/doc/tutorial.html

2 голосов
/ 07 декабря 2008

Возможно, вы захотите проверить буфер протокола .

1 голос
/ 08 декабря 2008

Вам не нужно беспокоиться о vtables, так как boost serialize будет беспокоиться о типах. Единственное, что вам нужно сделать, это убедиться, что любой тип является сериализованным, тогда вы используете EXACT SAME TYPE на другой стороне при десериализации.

1 голос
/ 07 декабря 2008

Вы можете использовать boost :: asio :: windows :: stream_handle, чтобы организовать iostream как io и сделать это асинхронно.

...