【问题标题】:How do I set up a named pipe between .NET and MFC?如何在 .NET 和 MFC 之间设置命名管道?
【发布时间】:2011-01-12 20:58:59
【问题描述】:

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

【问题讨论】:

  • 如果命名管道都运行在同一个系统上,它们是必须的吗? MMF 更适合本地通信,旧的良好套接字更适合跨网络通信。
  • 命名管道是一个命名管道——只是特殊的内存缓冲区。您只需要确定哪个应用程序是服务器,哪个应用程序是客户端。其余部分特定于 MFC、.NET - 如果您阅读文档,则一点也不难。

标签: .net wpf mfc named-pipes


【解决方案1】:

在 MFC 应用程序中:我认为没有任何 MFC 类专门用于帮助命名管道,但 Windows 命名管道 API 并不太难,或者您可以查看开源/共享软件类以获得更高级别的抽象(for example here)

在 .NET 应用程序中,System.IO.Pipes 命名空间中的类型在命名管道上提供了一个很好的流抽象,使用起来相当简单。

您必须做出的决定包括:

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

支持双工操作,因此您可以根据需要在管道消息传递上构建“回调架构”。

Windows 通信框架提供命名管道传输绑定。但是,即使在 WPF 应用程序端,这对您也没有用处,除非您准备在 MFC 端重新实现许多部分记录在原始管道通信之上的 Microsoft 协议(您可以在此 @987654322 上阅读更多信息@如果你有兴趣)。

【讨论】:

  • 我想创建一个请求/响应架构。命名管道甚至可以提供这样的东西吗?服务器/客户端在等待服务器时是否必须无用地旋转?
  • 您可以在命名管道传输上构建请求/响应架构,但命名管道本身并没有给您这个:它只是一个双工通信传输。双方的 API 都支持异步 IO 模式。
猜你喜欢
  • 2011-06-25
  • 2018-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多