读 [原创]我的WCF之旅(8):WCF中的Session和Instancing Management 后感, [源代码]
在做登陆状态/聊天室/即时通讯等必须用到的东东
1.涉及基础参数
1.1. ServiceContract的SessionMode
用于Contract上的枚举, 3种:
Allowed: 指定协定永支持会话
Required:指定协定必须会话绑定,否则将引发异常。BasicHttpBinding不支持会话,所以当使用BasicHttpBinding的时候毕会异常;
NotAllowed:指定协定永不支持启动会话的绑定。
1.2. ServiceBehavior的InstanceContextMode
用于Service上的枚举, 3种:
PerSession: 每个Service 代理类实例化一次则建立一次session和InstanceContext
PerCall:每次通过代理类实例调用一次,建立一次session和InstanceContext
Single: 单一session模式, 不管多少个代理类实例和多少次调用,永远就一个session和InstanceContext
1.3. ServiceContract各个Action上 OperationContract的属性
做用于Contract的Action上,其中3个属性比较关键
IsInitiating : 是否实现可在服务器上启动会话(如果存在会话)的操作。
IsOneWay : 是否返回答复消息。
IsTerminating : 在发送答复消息(如果存在)后,是否会导致服务器关闭会话。
2.问题
在PerSession时候, 服务端好像在客户端退出后不会自动销毁Session, 不知道怎么回事?
不知道客户端实例化代理类后长时间不操作, 对session影响是什么?