C# WCF-NetMsmqBinding与NetTcpBinding

C# WCF-NetMsmqBinding与NetTcpBinding,c#,wcf,C#,Wcf,我阅读这篇文章是为了选择绑定选项 我不寻常地怀疑什么是 脱机或断开连接的交互,请选择NetMsmqBinding 这是否意味着即使服务未运行,客户机仍在使用该服务 你能分享一些实时的例子吗 这两种绑定完全不同 NetTcpBinding可以被认为是一种MS专有格式(通常为二进制),在概念上类似于RPC(例如,可用于替换.NET Remoting)。它是同步的,即客户端和服务器必须同时联机,并且客户端(几乎)立即收到响应 MSMQ是Microsoft推出的一种面向消息的中间件解决方案,它围绕异步

我阅读这篇文章是为了选择绑定选项

我不寻常地怀疑什么是

脱机或断开连接的交互,请选择NetMsmqBinding

这是否意味着即使服务未运行,客户机仍在使用该服务


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

这两种绑定完全不同

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

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

现实世界的例子:

  • 我会将
    NetTcpBinding
    与二进制序列化结合使用,以满足Microsoft WCF客户端和服务器之间的高性能、同步通信需求,例如在
    Xml
    无效的地方上载文件、媒体等(否则,我将使用
    wsHttpBinding
    进行同步
    Xml
    /
    SOAP
    消息传递)
  • 我将在启用DTC的情况下使用
    MSMQBinding
    ,以确保两个或多个系统(如金融系统)之间的可靠消息传递,至少有一个端点位于.Net中,并且有一个“兼容”服务器(不一定是
    WCF
    ,例如
    BizTalk
    ,或其他
    EAI
    集线器或
    ESB
    总线,它们具有
    MSMQ
    适配器,例如
    MSMQ和MQSeries
    之间存在桥接)。消息通常采用
    Xml
    格式
TL;DR

这是否意味着即使服务未运行,客户机仍在使用该服务


是。如果
MSMQ
在本地运行,客户端将获得立即返回成功响应(表明消息已排队)。但这并不意味着服务器已成功接收到消息。

回答得好,我在许多复杂系统中广泛使用了WCF,只想增加我的两分钱。1.避免默认使用WCF,除非它提供RESTful Web服务中缺少的东西;是h的9/10倍WCF的eadache根本不值这个奖励。2.NetTcpBinding可以说是最好的(当然也是最快的——不包括命名管道)在我个人的经验中,绑定选项。然而,正如海报所解释的,它没有任何内置冗余。同意-已经4年了,xml现在主要由JSON服务重新绘制,WebApi现在在RESTful世界中已经超过了WCF。