endpoint 3: address = "net.msmq://localhost/private/MyServiceQueue1" 4: binding = "netMsmqBinding 具体例子,同一个服务具有两个终结点Endpoint1和Endpoint2,它们采用NetMsmqBinding,并且共享相同的地址(意味着采用共享同一个消息队列)。 从这可以看出寄宿服务具有两个基于NetMsmqBinding的终结点,它们的契约分别为IHello和IGoodBye,并且具有相同的地址。 > 2: <configuration> 3: <system.serviceModel> 4: <bindings> 5: <netMsmqBinding > 2: <configuration> 3: <system.serviceModel> 4: <bindings> 5: <netMsmqBinding
NetMsmqBinding的Security属性的类型为NetMsmqSecurity。 而表示NetMsmqBinding采用的安全模式的Mode属性返回一个NetMsmqSecurityMode枚举。 NetMsmqSecurityMode枚举的定义反映了NetMsmqBinding支持的安全模式集与其它系统定义绑定都不太一样。 此外,NetMsmqBinding并不支持Mixed(TransportWithMessageCredential)。在默认的情况下,NetMsmqBinding采用Transport安全模式。 这是因为在Transport模式下,NetMsmqBinding总是采用Windows凭证。
BasicHttpBinding WSHttpBinding WSDualHttpBinding NetNamedPipeBinding NetTcpBinding NetMsmqBinding None Mixed模式; 除了WSDualHttpBinding,所有的绑定都支持Transport模式; 只有BasicHttpBinding支持TransportCredentialOnly模式; 只有NetMsmqBinding BasicHttpBinding WSHttpBinding WSDualHttpBinding NetNamedPipeBinding NetTcpBinding NetMsmqBinding None 其它绑定的默认客户端凭证类型都是Windows; NetTcpBinding支持三种客户端凭证类型None、Windows和Certificate; NetNamedPipeBinding和NetMsmqBinding BasicHttpBinding WSHttpBinding WSDualHttpBinding NetNamedPipeBinding NetTcpBinding NetMsmqBinding None
为此WCF为我们提供了两种不同的built-in binding: NetMsmqBinding:从提供的功能和使用 方式上看,NetMsmqBinding和一般使用的binding,比如basicHttpBinding 四、Sample1:NetMsmqBinding 我们首先做一个基于NetMsmqBinding Sample,实现的功能就是我们开篇所提出的Order Delivery。 我们说过,NetMsmqBinding和一般的binding在实现的功能和变成模式上完全一样。 ><configuration> <system.serviceModel> <bindings> <netMsmqBinding> ><configuration> <system.serviceModel> <bindings> <netMsmqBinding>
MsmqIntegrationBinding <msmqIntegrationBinding> 一个绑定,适用于WCF应用程序和现有消息队列(也称为MSMQ)应用程序之间跨计算机的通信 MSMQ Binary NetMsmqBinding <netMsmqBinding> 一个排队绑定,适用于WCDF应用程序之间跨计算机的通信 MSMQ Binary NetPeerTcpBinding <netPeerTcpBinding> 一个支持多计算机安全通信的绑定 wsDualHttpBinding √ √ √ √ √ 良好 √ √ √ netTcpBinding √ √ √ √ 更佳 √ √ √ netNamedPipeBinding √ √ 最佳 √ √ netMsmqBinding
但是我们编写的扩展方法不能用于Transport模式下的NetMsmqBinding。 不过在表示NetMsmqBinding基于Transport安全的类型MsmqTransportSecurity中具有一个MsmqProtectionLevel属性返回采用的消息保护级别。 从应用在该属性上的DefaultValueAttribute特性的定义中,我们可以直接看出NetMsmqBinding在Transport模式下默认采用的消息保护级别为Sign。 对于NetMsmqBinding,你可以通过MsmqTransportSecurity的MsmqProtectionLevel进行设置。 你可以通过编程或者配置的方式来指定NetTcpBinding、NetNamedPipeBinding和NetMsmqBinding在Transport安全模式下的消息保护级别。
.: {0}", order.OrderNo); } NetMsmqBinding binding = new NetMsmqBinding(); \private$\orderprocessor"/> </appSettings> <system.serviceModel> <bindings> <netMsmqBinding \private$\orderresponse"/> </appSettings> <system.serviceModel> <bindings> <netMsmqBinding //localhost/private/orderresponse"/> </appSettings> <system.serviceModel> <bindings> <netMsmqBinding bindings> <client> <endpoint address="net.msmq://localhost/private/orderprocessor" binding="<em>netMsmqBinding</em>
WSHttpBinding、WS2007HttpBinding和WSDualHttpBinding 三、NetTcpBinding和NetNamedPipeBinding 四、NetMsmqBinding 我们来接着分析最后一种类型的绑定,即NetMsmqBinding,我们直接将我们定义的ListAllBindingElements扩展方法应用三个具有不同安全模式(Transport、Message和 Both)的NetMsmqBinding对象上。 1: NetMsmqBinding binding = new NetMsmqBinding(NetMsmqSecurityMode.Transport); 2: Console.WriteLine Console.WriteLine("Message:"); 7: binding.ListAllBindingElements(); 8: 9: binding = new NetMsmqBinding
BasicHttpBinding、WSHttpBinding、WSHttp2007Binding、WSDualHttpBinding、NetTcpBinding、NetNamedPipeBinding和NetMsmqBinding ),除了NetMsmqBinding的ReceiveSynchronously属性可以是True外,其他绑定的该属性总是返回False。 也就是说,除了NetMsmqBinding,其他的绑定总是以异步的方式进行消息的接收,这样可以及时地处理同时抵达的消息请求,并极大的改善服务的吞吐量。 而对于NetMsmqBinding来说,它的ReceiveSynchronously属性和ExactlyOnce具有相同的值。
从输出结果来看,除了BasicHttpBinding、NetMsmqBinding和MsmqIntegrationBinding三种,其余的系统绑定均包含TransactionFlowBindingElement NetNamedPipeBinding()); 20: //MSMQ Binding 21: PrintTransactionFlowSupport(new NetMsmqBinding WS2007FederationHttpBinding Yes NetTcpBinding Yes NetNamedPipeBinding Yes NetMsmqBinding No MsmqIntegrationBinding No 由于BasicHttpBinding基于WS-I Basic Profile标准的绑定,而两个基于MSQM的绑定(NetMsmqBinding
WSHttpBinding:一个安全且可互操作的绑定,适合于非双工服务约定,支持会话,可靠会话 NetNamedPipeBinding:一个安全、可靠且经过优化的绑定,适用于 WCF 应用程序之间本机的通信,支持会话 NetMsmqBinding
protocolMapping>配置节定义了四种传输协议(HTTP、TCP、Named Pipe和MSMQ)和对应的绑定类型(BasicHttpBinding、NetTcpBiding、NetNamedPipeBinding和NetMsmqBinding binding="netNamedPipeBinding" bindingConfiguration=""/> 6: <add scheme="net.msmq" binding="<em>netMsmqBinding</em>
NetMsmqBinding: 使用消息队列在不同机器间进行通讯。 NetPeerTcpBinding: 使用 P2P 协议在多机器间通讯。
BasicHttpBinding、WSHttpBinding/WS2007HttpBinding等基于HTTP协议的绑定,也可以采用NetTcpBinding、NetNamedPipeBinding和NetMsmqBinding
--NetMsmqBinding:使用.NET Framework创建与其他WCF终结点的排队消息连接。
System.ServiceModel.Channels.NamedPipeTransportBindingElement 除了上述的五种绑定类型,WCF中还定义了其他一些绑定,比如NetMsmqBinding
BasicHttpBinding、WSHttpBinding、WS2007HttpBinding、WSDualHttpBinding、NetTcpBinding、NetNamedPipeBinding和NetMsmqBinding