进程间通信/广播
Posted
技术标签:
【中文标题】进程间通信/广播【英文标题】:Interprocess Communication / Broadcast 【发布时间】:2009-12-21 15:22:57 【问题描述】:我有一个 Windows 服务(用 C# 实现),我有一个类似服务控制管理器的东西。我想跟踪从服务到服务控制管理器(这是一个窗口窗体应用程序)的消息,但我不确定这样做的最佳方法是什么。该服务应将消息广播给所有以非阻塞方式列出的客户端。
我考虑过使用命名管道或邮槽,但我不确定是否有更好的方法来做到这一点(我也不确定我是否可以使用这种技术实现广播)。
任何建议都将不胜感激。
【问题讨论】:
【参考方案1】:如果有多个客户端在监听,我认为命名管道会做更多的工作。我认为在这种情况下共享内存会更简单。如果客户端可能在单独的机器上,那么在不涉及大量数据的情况下,多播之类的东西可能是传输信息的一种简单方法。但是,多播范围通常仅限于单个子网,除非路由器专门配置为多播。
【讨论】:
感谢您的回复。客户端都在同一台机器上,因此我想避免涉及网络堆栈。共享内存听起来像是一种选择。但我更愿意为此使用 Windows 消息(尽管在 C# 中使用它们似乎有点麻烦) 我同意您在这种情况下避免使用网络的评估。另一种可能更灵活的可能性,尤其是对于未来的更新,是使用 .Net Remoting (msdn.microsoft.com/en-us/library/kwdt6w2k(VS.71).aspx)。这可能是“官方”正确的做法。以上是关于进程间通信/广播的主要内容,如果未能解决你的问题,请参考以下文章