2011-01-12 26 views
1

如何在.NET(特别是WPF)应用程序和在后台运行的MFC应用程序之间设置命名管道?我需要提供发送XML实例的同步和异步消息。有没有办法使用回拨体系结构?如何在.NET和MFC之间设置命名管道?

+0

如果它们都运行在同一个系统上,命名管道是必须的吗? MMF对本地通信来说更好,而老式的好插座在整个网络中都更好。 – 2011-01-12 21:01:33

+0

命名管道是一个命名管道 - 只是特殊的内存缓冲区。您只需确定哪个应用程序是服务器,哪一个是客户端。剩下的是特定于MFC,.NET的 - 如果你阅读文档,并不难。 – Nickolodeon 2011-01-12 21:25:13

回答

0

在MFC应用程序中:我不认为有专门用于帮助命名管道的MFC类,但Windows命名管道API不是太难,或者您可以考虑为更高级别打开源/共享类抽象(for example here

在.NET应用程序中,System.IO.Pipes命名空间中的类型提供了一个非常简单易用的命名管道的流抽象。

决定你将不得不作出包括:

  1. 哪个应用程序是管道服务器,负责创建管监听其他应用程序(管道客户端)进行连接。
  2. 您可以直接使用OS提供的消息流模式(每次写入管道都被视为一条消息),还是需要在管道字节流中构建自己的消息帧:

支持双工操作,因此如果需要,可以在管道消息传递上构建“回调体系结构”。

Windows Communication Framework提供了命名管道传输绑定。但是,即使在WPF应用程序方面,这对你来说也没有什么用处,除非你想在MFC端重新实现一部分在原始管道通信上层叠的部分记录的微软协议(你可以阅读更多关于on my blog if你感兴趣)。