【问题标题】:WCF or windows service to implement MSMQWCF或windows服务实现MSMQ
【发布时间】:2013-06-28 17:49:00
【问题描述】:

我有一个客户端服务器设置,我通过 http 将消息发送到服务器(我使用作为 Windows 服务托管的 WCF 服务。)在我当前的设置中,当我看到一些消息在连接断开时丢失客户端和服务器,为了可靠性,我决定使用 MSMQ。所以客户端将消息发送到队列,服务器不断轮询队列,我需要在开发之前做出一些设计决策。 哪个是最好的选择 windows 服务或 wcf 服务(托管为 windows 服务)?

如果我必须开发这样一个服务,它所要做的就是不断地从队列中读取消息并进行一些处理,那么除了 Windows 服务之外,WCF 是否还有其他优势。我将使用一个私有队列,它是跨事务的.

【问题讨论】:

  • 查看 NService 总线。它完全符合您的目标。也很容易设置。 nservicebus.com
  • @JohnHartsock 谢谢你,但我想自己写点东西。
  • 为什么不直接使用现有的 WCF 服务并使用 WS-ReliableMessaging 呢?如果您在 MSMQ 上死心塌地,那么您可以将 NetMSMQBinding 用于您的传输层,但也支持其他基于 HTTP 的传输绑定。

标签: c# wcf windows-services msmq


【解决方案1】:

我建议避免编写直接与 MSMQ 集成的代码,而是使用现有的服务总线为您执行此操作(如 NServiceBus 或 MassTransit)。滚动您自己的消息传递层可能适用于最简单的系统,但随着时间的推移需求发生变化,您将需要功能更全面的服务总线。我提到的服务总线以对开发人员友好的方式执行以下操作:

  • 消息传递模式(即发即弃、请求响应、发布订阅)
  • 消息序列化
  • 消息路由
  • 失败/重试逻辑(即消息处理程序应该更新数据库,但数据库已关闭,您如何处理?)
  • 长时间运行的进程(也称为 sagas)

如果你走自己的路,这些只是你不久将要写的一些东西。

【讨论】:

    猜你喜欢
    • 2011-01-10
    • 1970-01-01
    • 1970-01-01
    • 2014-11-11
    • 2011-10-17
    • 2012-03-16
    • 2015-08-20
    • 2010-11-26
    • 2010-12-01
    相关资源
    最近更新 更多