2

有没有人使用异步 WCF 端点的经验?

我试图了解是否使用 MSMQ 绑定选项我可以进行设置,其中客户端知道必须将消息放入哪个队列,并且如果 wcf 服务(最终托管在 IIS 中)脱机或不脱机,它也会透明地工作回应。

我真的很想得到这个设置,因为通过这种方式,当应用程序服务器重新上线(我们的分布式应用程序拥有的众多应用程序服务器之一)时,它将处理队列中的所有传入消息并进行详细说明。

我更多地考虑那些有意义的延迟操作,例如消息管理(发送电子邮件)、日志服务(将日志条目写入数据库、事件日志或通过电子邮件发送)和类似的后端流程。

我的另一个选择是使用 TIBCO 业务工作和 ems,但试图了解什么更好,如果简单的 WCF 可以同步或异步工作,只需将绑定从 netTCP 更改为 MSMQ ......

谢谢!

4

2 回答 2

4

您必须区分异步和排队。

您可以使用基于客户端的异步调用、异步服务执行、OneWay 消息传递和双工或简单的 OneWay 消息传递与 NetTcpBinding 进行异步消息传递。

但是,正如您所说,队列带来了额外的好处:弹性、负载均衡以及(取决于 MSMQ 的版本)的可伸缩性。

使用队列的主要两个问题是:

  1. 所有消息传递都必须是 OneWay,因此如果客户需要知道处理是否成功的方法,您必须将其设计到您的解决方案中
  2. 队列故障语义与标准服务故障非常不同。需要检查死信队列和有害消息队列是否有未处理的消息——这也是您需要在解决方案中设计的内容
于 2011-06-17T12:28:44.177 回答
1

如果您想要等效于 Tibco EMS,那么 WCF 支持的唯一类似的开箱即用功能是 MSMQ。如果您已经拥有 Tibco EMS 基础架构但仍想使用 WCF,您可以将这两者结合起来,因为 Tibco 为 WCF 提供了 EMS 绑定(我从未测试过它,但我在客户的下载页面上看到了它)。

于 2011-06-17T12:34:26.790 回答