在本篇文章中,我们安全线相同的方式来介绍三种基于局域网的绑定,即NetNamedPipeBinding、NetTcpBinding与 NetMsmqBinding。 一、NetNamedPipeBinding NetNamedPipeBinding只能用于同一台机器上的不同进程之间的通信(IPC:Inter-Process Communication)。 在默认的情况下,NetNamedPipeBinding采用Transport安全模式。 NetNamedPipeBinding安全相关的应用编程接口如下面的代码片断所示。 和NetNamedPipeBinding类似,MsmqTransportSecurity并没有一个ClientCredentialType属性。
BasicHttpBinding WSHttpBinding WSDualHttpBinding NetNamedPipeBinding NetTcpBinding NetMsmqBinding None BasicHttpBinding WSHttpBinding WSDualHttpBinding NetNamedPipeBinding NetTcpBinding NetMsmqBinding None None作为客户端凭证类型(匿名客户端)之外,其它绑定的默认客户端凭证类型都是Windows; NetTcpBinding支持三种客户端凭证类型None、Windows和Certificate; NetNamedPipeBinding 因为除了BasicHttpBinding采用BasicHttpMessageCredentialType枚举表示其支持的客户端凭证类型之外,其它所有的绑定(不包括不支持Message安全模式的NetNamedPipeBinding BasicHttpBinding WSHttpBinding WSDualHttpBinding NetNamedPipeBinding NetTcpBinding NetMsmqBinding None
并支持联合安全性 HTTP/HTTPS Text,MTOM NetTcpBinding <netTcpBinding> 一个安全且经过优化的绑定,适用于WCF应用程序之间跨计算机的通信 TCP Binary NetNamedPipeBinding <netNamedPipeBinding> 一个安全,可靠且经过优化的绑定,适用于WCF应用程序之间跨计算机的通信 IPC Binary MsmqIntegrationBinding <msmqIntegrationBinding wsHttpBinding √ √ √ √ √ 良好 √ √ wsDualHttpBinding √ √ √ √ √ 良好 √ √ √ netTcpBinding √ √ √ √ 更佳 √ √ √ netNamedPipeBinding
在学习WCF的ABCB之前,我们先创建一个NetNamedPipeBinding绑定方式的服务。 10.128.42.223"; private const string _path = "/Hello"; private static readonly Binding _binding = new NetNamedPipeBinding HelloProxy : ClientBase<IHelloService>, IService { public static readonly Binding HelloBinding = new NetNamedPipeBinding
五、 NetNamedPipeBinding NetNamedPipeBinding,顾名思义,就是基于命名管道传输的绑定。 命名管道本身可以支持跨机器的通信,而在WCF中对NetNamedPipeBinding作了更加严格的限制,使其只能用于同一台机器的跨进程通信(IPC)。 所以在所有的绑定中,NetNamedPipeBinding将是性能最好的绑定类型。 我们照例通过分析绑定元素的方式来理解绑定本身的特性与能力。 先通过下面的代码列出NetNamedPipeBinding默认的绑定元素: 1: class Program 2: { 3: static void Main(string[] args) 4: { 5: NetNamedPipeBinding binding = new NetNamedPipeBinding(); 6:
BasicHttpBinding 二、WSHttpBinding、WS2007HttpBinding和WSDualHttpBinding 三、NetTcpBinding和NetNamedPipeBinding 三、NetTcpBinding和NetNamedPipeBinding 我们按照之前的方式来分析另外两个只要应用于局域网环境中的两个绑定,即NetTcpBinding和NetNamedPipeBinding 但是对于NetTcpBinding和NetNamedPipeBinding来说,如果采用Transport安全模式,最终的绑定元素集合还和采用的认证方式有关。 由于NetNamedPipeBinding只支持Transport安全模式,并且在该安全模式下默认使用Windows认证。 1: NetNamedPipeBinding binding = new NetNamedPipeBinding(NetNamedPipeSecurityMode.Transport); 2: binding.ListAllBindingElements
None 如果你将上面的测试程序用于其它的绑定(WSHttpBinding/WS2007DualHttpBinding、WSDualHttpBinding、NetTcpBinding、NetNamedPipeBinding 而用于设置NetTcpBinding和NetNamedPipeBinding基于Transport安全的TcpTransportSecurity和NamedPipeTransportSecurity类型中 你可以通过编程或者配置的方式来指定NetTcpBinding、NetNamedPipeBinding和NetMsmqBinding在Transport安全模式下的消息保护级别。
PrintTransactionFlowSupport(new NetTcpBinding()); 19: PrintTransactionFlowSupport(new NetNamedPipeBinding WSFederationHttpBinding Yes WS2007FederationHttpBinding Yes NetTcpBinding Yes NetNamedPipeBinding 对于NetTcpBinding和NetNamedPipeBinding来说,我们可以通过属性TransactionFlow设置或者获取绑定是否支持事务流转的开关,并通过TransactionProtocol 5: public TransactionProtocol TransactionProtocol { get; set; } 6: } 7: 8: public class NetNamedPipeBinding bool TransactionFlow { get; set; } 5: } 系统绑定的TransactionFlow和TransactionProtocol属性(仅限于NetTcpBinding和NetNamedPipeBinding
Service端: ServiceHost host = new ServiceHost( typeof (CacheService)); var NamePipe = new NetNamedPipeBinding ); Console.ReadLine(); host.Close(); Client端: ChannelFactory pipeFactory = new ChannelFactory(new NetNamedPipeBinding
WSHttpBinding:一个安全且可互操作的绑定,适合于非双工服务约定,支持会话,可靠会话 NetNamedPipeBinding:一个安全、可靠且经过优化的绑定,适用于 WCF 应用程序之间本机的通信
具体来说,<protocolMapping>配置节定义了四种传输协议(HTTP、TCP、Named Pipe和MSMQ)和对应的绑定类型(BasicHttpBinding、NetTcpBiding、NetNamedPipeBinding net.tcp" binding="netTcpBinding" bindingConfiguration=""/> 5: <add scheme="net.pipe" binding="<em>netNamedPipeBinding</em>
IIS/WAS寄宿的服务终结点不仅仅可以采用BasicHttpBinding、WSHttpBinding/WS2007HttpBinding等基于HTTP协议的绑定,也可以采用NetTcpBinding、NetNamedPipeBinding
NetNamedPipeBinding: 安全、可靠、高效的单机服务通讯方式。 NetMsmqBinding: 使用消息队列在不同机器间进行通讯。
、对于WSHttpBinding和WS2007HttpBinding,如果我们将安全模式设置为None(关闭安全会话)并且关闭可靠会话,他们也无法提供会话支持 (3)、对于NetTcpBinding和NetNamedPipeBinding
localhost/MyWCFConnection"); var dataServer = ChannelFactory<IDataServer>.CreateChannel(new NetNamedPipeBinding
} 对于几个我们常用的系统预定义绑定(BasicHttpBinding、WSHttpBinding、WSHttp2007Binding、WSDualHttpBinding、NetTcpBinding、NetNamedPipeBinding
而NetTcpBinding和NetNamedPipeBinding也提供了对TLS/SSL的支持,一般我们将TLS/SSL在TCP上的应用称为SSL Over TCP。
常见的系统绑定包括:BasicHttpBinding、WSHttpBinding、WS2007HttpBinding、WSDualHttpBinding、NetTcpBinding、NetNamedPipeBinding