0

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

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

4

1 回答 1

1

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

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

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

于 2013-06-28T18:08:01.513 回答