• 笔记:实例管理


    为了支持服务端的本地特性,WCF定义了行为的概念。一个行为,就是本地的服务特性,他不会影响到服务的通信模式。ServiceBehaviorAttribute的InstanceContextModel属性是控制服务上的实例模式。

    单调服务(InstanceContextModel.PerCall)
    特点:每次Client代理请求,WCF都会创建一个服务实例,调用完后销毁。

    1、传统的C/S模式,每个Client长期占用一个Service实例,这样服务端很浪费资源,只能支持为数不多的Client。
    2、PerCall是根据需求才创建实例,而且在调用方法后立即销毁。所以Service会少于Client,可以支持更多的Client。
    3、单调服务需要load状态,销毁时保存状态,状态共享比较适合分布式负载均衡(Load-balancing)
    4、客户端不必去Dispose或ClearUp,这是服务端的工作。
    5、单调服务具有良好的可伸缩性和对事物的支持
    6、PerCall类似于Remoting的SingleCall

    会话服务(InstanceContextModel.PerSession)
    特点:和传统的CS模式一样,Client发出请求和Service建立独立的持久的连接,直到Client关闭。Service和Proxy共同持有一个Session。
    1、InstanceContextModel 默认是PerSession模式。
    2、关闭Proxy时,客户端异步调用Dispose,销毁实例。
    3、NetTcpBinding和NetNamedPipeBinding,WCF会关联客户端的连接。
    4、BaseHttpBinding无法保持会话。
    5、WsHttpBinding可以通过信息头的SessionId来模拟传输层会话,因为SessionId是唯一的。
    6、ServiceContract(SessionModel.Allowed | Required | NotAllowed) 默认是Allowed
    7、若要设计一个会话契约,推荐使用Required
    8、NotAllowed 禁止会话层传输,此时要把InstanceContextModel设为PerCall
    9、配置一致性,如果服务时限的其中一个契约是会话契约,其他契约最好也是会话契约。
    10、InstanceContextModel为PerCall,则SessionModel无效。SessionModel设为NotAllowed,则为PerCall
    11、Service通过OperationContext.Current.SessionId获取 Client通过Proxy.InnerChannel.SessionId获取
    12、PerSession同理与Remoting的客户端激活模式

    单例服务(InstanceContextModel.Singleton)
    特点:单例服务是一种极端的共享式服务,所有的客户端都将独自连接相同的实例(Well-Known),其生存周期是无限的,只有在关闭宿主时才会被释放。
    1、单例服务不需要客户端维护单例实例的会话,也不需要使用支持传输层会话的绑定。
    2、同一时间内只能有一个客户端能够访问单例服务。


    分布操作(Demarcating Operation)
    为了方法的有步骤的执行,WCF允许契约设计者制定契约操作为启动或终止的会话操作。使用OperationContract的特性IsInitiating和IsTerminating划分会话的执行步骤。
    1、分布操作支持PerSession和Singleton模式。
    2、IsInitiating默认为true IsTerminating默认为false
    3、IsTerminating被设为true,则该方法执行完后终止会话,相反则持续会话。
    实例停用(Context Deactivation)
    限流(Throttling)
  • 相关阅读:
    Echarts之内嵌圆环图v5.1.2
    VueX+VueRouter+Cookie实现简单登录页
    命令行安装MySQL
    mysql常用语句
    网际互联及OSI七层模型:
    阿里ICON图标,使用教程
    前端开发小技巧整理
    SQL语句
    web笔记
    jQuery
  • 原文地址:https://www.cnblogs.com/mad/p/1598006.html
Copyright © 2020-2023  润新知