32位 - 64位进程间通信

7
我被分配任务,需基于Win32实现一个xml编辑器作为前端进程,同时业务逻辑将由64位进程处理。此外,两个进程之间的通信将通过消息总线完成,该总线只能传输形式的消息。(是的,情况很糟糕)。
假设你手头只有C++03,没有外部库支持(例如Boost),那么对于这个任务来说,最好的设计是什么呢?用例是用户简单地编辑一些.xml文件。
我的想法是,在业务逻辑模块中使用函数指针表处理不同的消息,然后返回到“监听”事件状态。
附加问题:是否有“简单”的方法将对象序列化为字符串?
非常感谢。
编辑:
现在允许使用Boost. 我应该使用ASIO还是MPI?我想首先考虑ASIO。

4
你考虑过来回发送XML吗? :) - sbi
@sbi 是的,但是用户界面必须是愚蠢的。这意味着它应该尽可能少地包含“逻辑”。编码笑脸+1 :) - FailedDev
写一堆操作 std::istream 和 std::ostream 的序列化函数并不太难。这样它们就可以用于字符串,并且具有未来的兼容性。我们在这里仔细研究了 Boost 序列化,然后编写了自己简化版的代码。关于 32/64 位:这不是什么大问题,只需选择一个传输对象大小等的约定,并坚持使用它(例如字符串中的字符数)。我们选择了 64 位整数。 - stijn
2
@FailedDev:对于我的浏览器字体而言,与比例字体相比,非比例字体的笑脸看起来更好看,这就是我开始这样做的原因。不过在那之前,SO上的代码没有任何背景颜色,但当他们引入了背景颜色后,我已经有了数百甚至数千条这样的评论。所以在犹豫片刻后,我决定不要试图忘记这个习惯,以免混淆我的肌肉记忆。(现在我常常发现自己试图在Twitter和其他地方这样做...) - sbi
如果你使用 win32,你可以使用 DCOM 吗? - bdonlan
@bdonlan DCOM是被禁止的。Boost也被禁止,直到我说服他们使用ASIO。 - FailedDev
2个回答


2

建立进程之间的套接字连接并互相发送文本消息。

对于套接字连接,Boost.Asio是一个不错的选择;对于序列化,可以使用Boost.Serialization和文本存档。尽管Boost.Serialization很难调试。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接