WCF的状态设定

WCF的状态设定是由以下两步完成的,首先要在ServiceContract里面利用参数SessionMode来使Session有效化,具体代码为:[ServiceContract(SessionMode=SessionMode.Required)];其次是在ServiceBehavior里面利用参数InstanceContextMode来设定到底使用那一种Session方式,具体代码如下:[ServiceBehavior(InstanceContextMode=InstanceContextMode.PerSession)]。
WCF支持的SessionMode有如下三种:
SessionMode.Allowed:默认选项,允许但不强制使用Session。
SessionMode.NotAllowed:不允许使用Session。
SessionMode.Required:强制使用Session。
WCF支持的InstanceContextMode也有三种:
InstanceContextMode.PerCall:为User的每一次调用生成一个SessionID,Session生命周期:调用开始->调用结束。(注:这种方式和不使用Session功能应该是一样的)
InstanceContextMode.PerSession:为每一个用户生成一个SessionID。Session生命周期:客户端代理生成->客户端代理关闭。(这种方式最像原先的Session)
InstanceContextMode.Single: 生成一个唯一的SessionID,所有用户共用,生命周期:Host创建->Host关闭。(应用设计模式中的Singleton模式,像原先的Application)
文中的实例是以PerSession为例,当然,这里的Session和原来的Session还是有一些区别的,具体如下:
(1)并没有一个显示的Session容器供存放数据用;
(2)Session的销毁和原先的Session不相同。
WCF中的Session可以在以下三种情况下销毁:
(a)利用函数销毁,如文中示例,在函数ReleaseSession()上用[OperationContract(IsTerminating=true)]表明客户端可以通过调用该函数销毁Session。
(b)客户端代理关闭,Session也会自动销毁。
(c)通过TimeOut时间销毁,默认是10分钟,这个时间客户端和服务器端都可以设定,以较短的时间为有效时间。
因此,个人认为,WCF中的Session的可控性更强一些。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值