如何在.NET和MFC之间设置命名管道?

如何在.NET和MFC之间设置命名管道?,.net,wpf,mfc,named-pipes,.net,Wpf,Mfc,Named Pipes,如何在.NET(特别是WPF)应用程序和后台运行的MFC应用程序之间设置命名管道?我需要提供发送XML实例的同步和异步消息传递。有没有一种方法可以使用回调架构?在MFC应用程序中:我认为没有任何MFC类专门帮助命名管道,但Windows命名管道API并不太难,或者您可以使用开源/共享软件类来获得更高级别的抽象() 在.NET应用程序中,System.IO.Pipes命名空间中的类型在命名管道上提供了一个很好的流抽象,使用起来相当简单 您必须做出的决定包括: 哪个应用程序是管道服务器,负责创建管道

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

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

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

您必须做出的决定包括:

  • 哪个应用程序是管道服务器,负责创建管道并侦听其他应用程序(管道客户端)的连接
  • 您可以直接使用操作系统提供的消息流模式(每次写入管道都被视为一条消息),还是需要在管道字节流上构建自己的消息帧
  • 支持双工操作,因此如果需要,可以在管道消息传递上构建“回调体系结构”


    Windows Communication Framework提供了命名管道传输绑定。但是,即使在WPF应用程序端,这也不会对您有用,除非您准备在MFC端重新实现一个在原始管道通信之上分层的、部分记录的Microsoft协议主机(如果您感兴趣,可以阅读更多相关内容)。

    如果管道都在同一系统上运行,那么命名管道是必须的吗?MMF更适合本地通信,旧的好的套接字更适合跨网络。命名管道是一个命名管道,只是一个特殊的内存缓冲区。你只需要确定哪个应用是服务器,哪个是客户端。其余部分是针对MFC、.NET的,如果您阅读文档的话,这一点都不难。我想创建一个请求/响应体系结构。命名管道甚至可以提供这样的功能吗?服务器/客户机在等待服务器时是否必须毫无用处地旋转?您可以在命名管道传输上构建请求/响应体系结构,但命名管道本身并没有提供这一点:它只是一个双工通信传输。双方的API都支持异步IO模式。