WCF配置绑定基本概念浅析
创始人
2024-06-24 00:50:37
0

WCF对于开发人员来说是一个比较重要的开发插件,可以帮助我们轻松的实现一些特定的功能。在这里我们就先来了解一下WCF配置绑定的相关内容。通过编程方式或管理方式都可以WCF配置可靠性(以及有序传递)。如果我们启用了可靠性,则客户端与服务宿主端必须保持一致,否则客户端无法与服务通信。我们可以只对支持它的WCF配置绑定。例所示的服务端配置文件,使用了绑定配置节,启用了TCP绑定的可靠性。

例:启用TCP绑定的可靠性

  1. < system.serviceModel> 
  2.  < services>   
  3. < service name = "MyService">   
  4. < endpoint address = "net.tcp://localhost:8000/MyService" 
    binding = "netTcpBinding" bindingConfiguration = "ReliableTCP" 
    contract = "IMyContract"/>   
  5. < /service>   
  6. < /services>   
  7. < bindings>   
  8. < netTcpBinding>   
  9. < binding name = "ReliableTCP"> < reliableSession enabled = "true"/>   
  10. < /binding>   
  11. < /netTcpBinding> 
  12.  < /bindings>   
  13. < /system.serviceModel>  

至于编程配置方式,TCP绑定和WS绑定提供了略微不同的属性来实现WCF配置绑定。例如,NetTcpBinding绑定接受一个Boolean型的构造函数参数,用来启动可靠性:

  1. public class NetTcpBinding : Binding,...   
  2. {   
  3. public NetTcpBinding(...,bool reliableSessionEnabled);   
  4. //更多成员   

我们只能在对象的构造期间启用可靠性。如果通过编程方式设置可靠性,需要创建支持可靠性的绑定对象:

  1. Binding reliableTcpBinding = new NetTcpBinding(...,true);  

NetTcpBinding定义了只读的ReliableSession类,通过它获取可靠性的状态:

  1. public class ReliableSession {   
  2. public TimeSpan InactivityTimeout {get;set;}   
  3. public bool Ordered {get;set;}   
  4. //更多成员 }   
  5. public class OptionalReliableSession : ReliableSession {   
  6. public bool Enabled {get;set;}   
  7. //更多成员 }   
  8. public class NetTcpBinding : Binding,... {   
  9. public OptionalReliableSession ReliableSession {get;}   
  10. //更多成员 }  

理论上,服务代码和契约定义应该与它使用的绑定及属性无关。服务不应该考虑绑定,在服务代码中也不应该包含它所使用的绑定。不管WCF配置绑定是哪一种,服务都应该能够正常工作。然而实际上,服务的实现或者契约本身都会依赖于消息的有序传递(Ordered Delivery)。为了帮助契约或服务的开发者能够约束支持的绑定,WCF定义了DeliveryRequirementsA。

【编辑推荐】

  1. 深入探讨WCF缓存机制基本概念
  2. WCF选择绑定在实际应用中技巧分享
  3. Silverlight WCF服务正确组建方法浅谈
  4. WCF Address配置文件正确使用方法解读
  5. WCF协定各种不同类型概念解读

相关内容

热门资讯

PHP新手之PHP入门 PHP是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的...
网络中立的未来 网络中立性是什... 《牛津词典》中对“网络中立”的解释是“电信运营商应秉持的一种原则,即不考虑来源地提供所有内容和应用的...
各种千兆交换机的数据接口类型详... 千兆交换机有很多值得学习的地方,这里我们主要介绍各种千兆交换机的数据接口类型,作为局域网的主要连接设...
粉嫩如何诠释霸道 东芝M805... “霸道粉”是个什么玩意东芝M805拿过来的时候,笔者扑哧笑了,不是笑这款笔记本,而是笑这款产品的颜色...
什么是大数据安全 什么是大数据... 在《为什么需要大数据安全分析》一文中,我们已经阐述了一个重要观点,即:安全要素信息呈现出大数据的特征...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
全面诠释网络负载均衡 负载均衡的出现大大缓解了服务器的压力,更是有效的利用了资源,提高了效率。那么我们现在来说一下网络负载...
如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
30分钟搞定iOS自定义相机 最近公司的项目中用到了相机,由于不用系统的相机,UI给的相机切图,必须自定义才可以。就花时间简单研究...
Intel将Moblin社区控... 本周二,非营利机构Linux基金会宣布,他们将担负起Moblin社区的管理工作,而这之前,Mobli...