8

我正在阅读这篇文章http://weblogs.asp.net/spano/archive/2007/10/02/choosing-the-right-wcf-binding.aspx 来选择绑定选项。

我对什么意思有一个不寻常的疑问

离线或断开交互,选择 NetMsmqBinding

这是否意味着即使服务没有运行仍然客户端使用该服务?

你能分享一些实时的例子吗?

4

1 回答 1

10

2个绑定是完全不同的。

  • NetTcpBinding可以被认为是一种 MS 专有格式(通常是二进制),在概念上类似于RPC(例如,可用于替换.NET Remoting)。它是同步的,即客户端和服务器必须同时在线,并且客户端(几乎)立即收到响应。

  • MSMQ是微软的一个面向消息的中间件解决方案,它围绕异步队列展开——例如,如果在客户端发送消息时目标服务器处于脱机状态,则消息将在客户端排队,直到服务器重新联机。每个队列只是一种方式,尽管可以通过从服务器到客户端的第二个队列来实现双向通信。发送 WCF MSMQ 消息需要MSMQ在客户端上安装服务。队列上的消息可以有一个传递“超时”,否则将被放置在一个适用的死信队列中。

现实世界的例子:

  • 我将使用NetTcpBinding二进制序列化来满足 Microsoft WCF 客户端和服务器之间的高性能、同步通信需求,例如上传文件、媒体等无用的地方Xml(否则,我将wsHttpBinding用于同步Xml/SOAP消息传递)
  • 我将使用MSMQBinding启用 DTC 来确保 2 个或多个系统(例如财务)之间的可靠消息传递,其中至少一个端点位于 .Net 中,以及“兼容”服务器(不一定WCF,例如BizTalk,或其他EAI集线器或ESB总线)有适配器MSMQ,例如,之间存在桥梁MSMQ and MQSeries)。消息通常采用某种Xml格式。

TL;博士

这是否意味着即使服务没有运行仍然客户端使用该服务

是的。如果MSMQ在本地运行,客户端将立即返回成功响应(表示消息已排队)。然而,这并不意味着该消息已被服务器成功接收。

于 2012-09-10T10:52:02.553 回答