我在 Windows 中有两个正在运行的进程,每个进程都有一个到另一个进程的管道。
我想序列化一个复杂的类并将其从一个进程传输到另一个进程。我已经制定了序列化程序,并且我知道管道正在发送二进制流。我应该如何发送我的序列化数据?我正在使用 WinAPI 和 C++。
我应该开发自定义协议吗?如果是这样,它应该是这个特定类的通用还是唯一的?发送序列化类时可以保留虚拟表吗?
在这种情况下是否有常用的模型或设计模式?一些示例代码将不胜感激。谢谢!
您可能想查看协议缓冲区。
这里是教程boost::serialization
。我可以想象它可以很好地通过管道发送数据并在另一端反序列化:http: //www.boost.org/doc/libs/1_37_0/libs/serialization/doc/tutorial.html
您可以使用 boost::asio::windows::stream_handle 像 io 一样组织 iostream,并异步执行。
您不必担心 vtables,因为 boost serialize 会担心类型。您唯一需要做的就是确保任何类型都是序列化的,然后在反序列化时使用另一端的EXACT SAME TYPE。