Windows Service to Windows Application & Web Application Technology Options - 优点和缺点



我们目前正在实现一个windows服务,该服务需要发布windows或web应用程序可以订阅的信息。发布的信息应该主要由字符串组成,并将用于记录服务正在执行的任务,因此会有源源不断的信息发送到订阅的应用程序。

我一直在研究MSMQ、WCF和ESB(如Nservicebus)等技术,但由于我对windows服务和应用程序订阅都很陌生,所以到目前为止,很难了解每种技术的优势,以及哪种(如果有的话)最适合这类项目。更熟悉这些选项的人能提供这些技术所提供的一些优点/缺点吗?

为了更好地总结我前面的段落,该项目预计将在以下条件下运行:

  1. 消息不断从服务发布到任何订阅的应用程序
  2. 通信应该是单向的(服务到应用程序),因此任何应用程序的停机时间都不应该影响服务的工作
  3. 该服务必须同时发布到windows应用程序和web应用程序
  4. 新的应用程序将来可能需要在不中断服务工作的情况下进行订阅(这似乎是既定的,但正如我所说,我不熟悉这些选项)
  5. 该程序的首选语言是C#

非常感谢您抽出时间,如果您对这些或更合适的技术有任何建议,我们将不胜感激。

MSMQ和WCF有很多选项。根据许多因素,有几种不同的方法和框架可能会有所帮助。

如果你想在一点指导下自己做这件事,我建议你看看汤姆·霍兰德的伟大帖子:

http://blogs.msdn.com/b/tomholl/archive/2008/05/17/building-a-pub-sub-message-bus-with-wcf-and-msmq.aspx

http://blogs.msdn.com/b/tomholl/archive/2008/07/12/msmq-wcf-and-iis-getting-them-to-play-nice-part-1.aspx

如果您想使用现有的服务总线,如BizTalk、servicebus或MassTransit,还有其他更"完整"的选项。

另一个选项是自MSMQ 3.0以来提供的多播功能,它将支持一个发布者(windows服务)到多个接收方(windows应用程序和Web应用程序)的情况。发送方和接收方都可以使用MsMqIntegration绑定与队列进行交互。

我建议你看看:http://blogs.msdn.com/b/solutions/archive/2005/09/20/471615.aspx

最新更新