【问题标题】:Inter Process Communication - Modern Options?进程间通信 - 现代选项?
【发布时间】:2017-06-19 09:22:38
【问题描述】:

我正在开发一个带有 Windows 服务和前端 UI 的系统,用于配置和控制 Windows 服务。我将使用 .net 4.6。

该服务将生成多个服务器,用户可以通过 UI 创建、启动和停止这些服务器。

研究让我的 UI 控制我的服务并从服务器接收状态信息的最佳方式。

根据我的研究,我发现了这些:

  1. SQLITE - 创建一个消息队列,UI 将命令写入该消息队列,服务器将定期读取并响应另一个消息队列。不理想,因为它不是活的,需要一个轮询系统。

  2. 命名/匿名管道 - 实时请求/响应。可以,但是在处理与单个服务器通信的多个客户端时有点笨拙。

  3. WCF - 实时请求/响应。除了用户需要担心为系统配置一个有效的端口来运行之外,它很好并且易于实现。

  4. 滚动我自己的通信协议 - 实时请求/响应,但同样的问题适用于选择端口号。

当今的技术还缺少什么?

【问题讨论】:

  • 消息队列怎么样?那里有很多 - MSMQ、AMQ、RabbitMQ 只是我脑海中浮现的前三个......你也可以使用 SignalR 来处理轻量级消息。
  • @ZoharPeled 谢谢,我会调查这些。

标签: c# .net wcf ipc named-pipes


【解决方案1】:

既然我们列出了所有选项,那么 MemoryMappedFile 与 EventWaitHandle 的组合怎么样

https://docs.microsoft.com/en-us/dotnet/standard/io/memory-mapped-files

https://docs.microsoft.com/en-us/dotnet/standard/threading/eventwaithandle

MemoryMappedFile + EventWaitHandle 与 WCF 相比

https://www.techmikael.com/2010/02/blazing-fast-ipc-in-net-4-wcf-vs.html

【讨论】:

    【解决方案2】:

    Signalr 和 OWIN/Katana

    https://docs.microsoft.com/en-us/aspnet/signalr/overview/deployment/tutorial-signalr-self-host

    进行简单的 HTTP POST/GET 请求和响应,使用 Signalr,您可以进行实时发布/订阅。请参阅链接以获得良好的介绍。

    【讨论】:

      【解决方案3】:

      我实际上没有意识到命名管道可以与 WCF 一起使用。 发现这篇文章很理想。非常容易实现,用户无需担心选择IP端口等。

      https://stackoverflow.com/a/7833188/1680271

      【讨论】:

        猜你喜欢
        • 2013-08-28
        • 2013-01-03
        • 1970-01-01
        • 2012-03-11
        • 1970-01-01
        • 2011-05-04
        相关资源
        最近更新 更多