我正在浏览这篇文章http://weblogs.asp.net/spano/archive/2007/10/02/choosing-the-right-wcf-binding.aspx http://weblogs.asp.net/spano/archive/2007/10/02/choosing-the-right-wcf-binding.aspx选择绑定选项。
我对这句话的含义产生了不寻常的怀疑
离线或断开连接交互,选择 NetMsmqBinding
这是否意味着即使服务没有运行,客户端仍然使用该服务?
你能分享一些实时的例子吗?
这两种绑定完全不同。
NetTcpBinding
可以被认为是 MS 专有格式(通常是二进制),其概念类似于RPC
(例如可以用来替换.NET Remoting
)。它是同步的,即客户端和服务器必须同时在线,并且客户端(几乎)立即收到响应。
MSMQ
是 Microsoft 的面向消息的中间件解决方案,它围绕异步队列 - 例如如果客户端发送消息时目标服务器处于离线状态,则该消息将在客户端上排队,直到服务器重新上线。尽管可以通过从服务器到客户端的第二个队列实现双向通信,但每个队列只是一种方式。发送 WCF MSMQ 消息需要MSMQ
服务安装在客户端上。队列上的消息可以有传递“超时”,否则将被放置在适用的死信队列中。
现实世界的例子:
- 我会用
NetTcpBinding
通过二进制序列化实现 Microsoft WCF 客户端和服务器之间的高性能、同步通信需求,例如将文件、媒体等上传到何处Xml
不会有用(否则,我会使用wsHttpBinding
对于同步Xml
/ SOAP
消息传递)
- 我会用
MSMQBinding
启用 DTC 以确保 2 个或更多系统(例如财务系统)之间的可靠消息传递,至少其中一个端点位于 .Net 中,并且有一台“兼容”服务器(不一定WCF
, e.g. BizTalk
, 或其他EAI
集线器或ESB
带有适配器的巴士MSMQ
,例如之间存在桥梁MSMQ and MQSeries
)。消息通常位于Xml
format.
TL;DR
这是否意味着即使服务没有运行,客户端仍然使用该服务
Yes. If MSMQ
is running locally, the client will get an immediate return successful response (indicating that the message has been queued). This does not however mean that the message has been successfully received by the server.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)