(五)、WCF中的行为

 

  1. 行为(Behaviors)指的是那些影响WCF系统运行的设置。WCF系统中的行为分为服务行为(Service behavior)和操作行为(Operation behavior).常见的服务行为包括实例控制、并发控制、元数据发布。常见的操作行为包括事物流设置。

  2. 实例管理 通过ServiceBehavior特性的InstanceContextMode属性进行设置,
  3. 1.1,  PerCall 实例策略:当服务端采用了PerCall 实例策略后,每个客户端请求的消息会被分布到一个新的服务实例上。而一旦这个调用返回之后,服务实例则被销毁。

    PerCall调用流程

            1.2, PerSession 实例策略和会话,Persession是默认的实例策略,Persession代表了会话的实例管理模式。需要满足三方面的要求才能在客户端和服务端之间建立会话。

  4. 服务契约的会话设置
  5. 服务行为的实例模式设置
  6. 绑定的设置
  7.  

    (会话调用流程)

    1.2.1 服务契约的会话设置通过ServiceContractSessionMode属性设置

    1.2.2 服务行为的实例模式设置

    1.2.3 绑定的选择,NetTcpBinding,netNamedPipeBinding使用的协议本身具有传输层会话的能力,而wsHttpBinding,虽然无会话的HTTP协议,可以在头插入会话ID来模仿传输层会话。

    1.3 Single实例策略:类似于设计模式的单件模式,所以的客户端代理消息都会发送到同一个服务器的实例上。

  8. 并发管理 包含了如果管理被关联到同一服务实例上的不同消息,可以理解为多线程:
  9. 2.1 并发管理的设置(ConcurrencyMode)是枚举类型

    对于PerCall模式,任何一个服务实例都是被单线程调用,不存在并发。而对于PerSessionSingle模式,一个服务实例可能被多个线程访问。

    2.1.1 Single模式:提供同步锁

    2.1.2 Multiple并发模式。每个操作都允许客户端多个请求同时访问。提高运行效率,防止信息阻塞。

    2.1.3 Reetrant 并发模式和Single模式一样,只允许一个线程访问服务操作,在访问进入操作之前必须获得同步锁。不同的是,Reetrant模式解决了Single模式的死锁问题:当服务回调客户端操作时,返回消息将导致死锁。死锁原因:

  10. signle模式下回调客户端操作,如有返回消息将发生死锁
  11. 单例的服务端操作内调用其他服务,并且通过调用链返回服务本身。(?)
  12. 客户端代理被同一个应用程序域的其他服务引用,导致调用链返回到服务本身。(?)
  13. Reentrant模式解决死锁问题,当服务操作调用其他服务或者回调时,将会释放服务端的同步锁。这样就保证服务的回调消息或者调用链不会发生死锁。

    3. 元数据的发布:元数据可以视为一个服务的对外接口的描述,服务包含终结点的3要素:地址,绑定,契约

    3.1  HTTPGET方式发布元数据

     

    3.2 MEX终结点发布元数据

    WCFMEX终结点提供了基于不同通信协议的专门绑定,如mexTcpBindingmexNamedPipeBindingmexHttpBinding

  14. 事物管理
  15. 4.1 事物的基本概念和特性

    A(原子性-Atomicity)

    C (一致性- Consistency)事物必须从一个一致性状态到另一个一致性状态

    I (隔离性-Isolation)

    D(持续性-Durability

    4.2 单服务事物:整个事物的操作在一个服务中完成

    分布式服务:事物的操作涉及多个服务

    4.2.1 显示的使用事物类型:比如数据操作时。

    4.2.2 使用操作行为(OperationBehavior)声明事物

    4.3 分布式事务:一个事物有多个服务完成

    4.3.1 两段提交协议:事务协调器和多个事务组成

    4.3.2 事物的流动:事务有途径的从一个服务传到另外一个服务之中。

    满足条件:

  16. 设置绑定启动事务流动
  17. 设置操作契约启用事务流动
  18. <binding name="myBinding" transctionFlow="true"></binding> // 绑定事务流动

    操作事务流动通过声明TransactionFlow特性来实现。

    代码见后附件

    4.4 事务协议和事务管理器

  19. 轻量级协议(LightWeight Protocol)不能跨域服务边界,适用于统一应用程序域的单服务事务,性能是最好的
  20. OleTx协议:基于windows操作的事务协议,不能说、穿越防火墙
  21. WSAT协议,是web服务的标准协议,跨平台,穿越防火墙。
  22. 事务管理器:

  23. 轻量级事务管理器LTM
  24. 核心事务管理器KTM
  25. 分布式事务协调器DTC
  26.  

    代码下载

     

     

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值