2009-12-21 103 views
2

我有一个Windows服务(在C#中实现),我有一些像服务控制管理器。我想跟踪服务中的消息到服务控制管理器(这是一个窗体窗体应用程序),但我不确定这样做的最佳方式是什么。该服务应将消息广播给以非阻塞方式列出的所有客户端。进程间通信/广播

我曾考虑过使用命名管道或邮筒,但我不确定是否有更好的方法来做到这一点(我也不确定是否可以使用此技术实现广播)。

任何建议都会大大降低。

回答

0

如果有多个客户端正在侦听,我认为命名管道会多一点工作。我认为共享内存对于这种情况会更简单。如果客户端可能位于单独的机器上,那么如果没有涉及大量数据,则类似于多点传送的东西可能是传输信息的简单方法。但是,多播范围通常仅限于单个子网,除非路由器专门配置为多播。

+0

感谢您的回复。客户端都在同一台机器上,因此我想避免涉及网络堆栈。共享内存听起来像一个选项。但是,如果使用Windows消息也是可行的(尽管在C#中使用它们看起来有点麻烦) – Jeldrik 2009-12-21 15:41:06

+0

我同意你在这种情况下避免网络的评估。另一种可能更灵活的方法尤其适用于未来的更新,那就是使用.Net Remoting(http://msdn.microsoft.com/en-us/library/kwdt6w2k(VS.71).aspx)。这可能是“正式”正确的做法。 – 2009-12-21 16:17:12