【发布时间】:2016-05-17 14:00:25
【问题描述】:
我正在阅读这篇文章http://weblogs.asp.net/spano/archive/2007/10/02/choosing-the-right-wcf-binding.aspx 来选择绑定选项。
我对
的含义有一个不寻常的疑问离线或断开交互,选择NetMsmqBinding
这是否意味着即使服务没有运行,客户端仍在使用该服务?
你能分享一些实时的例子吗?
【问题讨论】:
我正在阅读这篇文章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,以确保 2 个或多个系统(例如财务)之间的可靠消息传递,其中至少一个端点位于 .Net 和“兼容”服务器(不一定是 WCF ,例如BizTalk,或其他具有MSMQ 适配器的EAI 集线器或ESB 总线,例如MSMQ and MQSeries 之间存在桥接)。消息通常采用Xml 格式。TL;DR
这是否意味着即使服务没有运行,客户端仍在使用该服务
是的。如果MSMQ在本地运行,客户端会立即得到返回成功响应(表示消息已经排队)。但这并不意味着服务器已成功接收到消息。
【讨论】: