WCF - NetMsmqBinding与NetTcpBinding

Per*_*eru 8 c# wcf

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

我对这是什么意思有一个不同寻常的怀疑

脱机或断开连接,选择NetMsmqBinding

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

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

Stu*_*tLC 10

2个绑定完全不同.

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

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

现实世界的例子:

  • 我会用NetTcpBinding二进制序列高性能,微软WCF客户端和服务器之间,例如同步通信需要上传的文件,媒体等在那里Xml是没有用的(否则,我会使用wsHttpBinding同步Xml/ SOAP通讯)
  • 我将使用MSMQBindingDTC启用以确保2个或更多系统(例如财务)之间的可靠消息传递,其中至少一个端点在.Net中,以及"可兼容"服务器(不一定WCF,例如BizTalk,或其他EAI集线器或ESB总线,有适配器MSMQ,例如,桥之间存在MSMQ and MQSeries).消息通常采用Xml格式.

TL; DR

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

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