WCF 实例化与会话
实例管理旨在解决服务实例的激活和服务实例生命周期的控制,会话的目的是在于保持相同客户端(服务代理)多次服务调用的状态。
实例上下文
实例上下文是对服务实例的封装,是WCF管理服务实例生命周期的依托,System.ServiceModel.InstanceContext
实例上下文模式
可以简单的理解为服务端的服务实例与客户端的服务代理之间的关联方式。有以下三种:
1 单调模式:对于每个服务调用,不论是相同还是不同的客户端,WCF总是创建一个全新的服务实例和实例上下文对象来处理服务调用请求,当服务操作执行完毕后,实例上下文对象和被封装的服务实例被回收。
2 会话模式:会话的目的在于保持来自相同客户端多次服务调用之间的状态。在会话实例上下文模式下,WCF为每个服务代理对象分配一个单独的服务实例上下文对象,来自相同服务代理的所有服务调用请求,都将分发给相同的服务实例上下文处理。
3 单例模式:WCF为每个服务维护一个并且仅维护一个服务实例上下文。
通过ServiceBehaviorAttribute特性的InstanceContextMode属性进行实例上下文模式的设置。
客户端识别机制
会话是基于客户端和服务的,对于不同的传输协议,WCF采用的客户端识别机制是不同的。
1 传输会话 TCP是基于连接的通信协议,天生就具备会话的特性,TCP连接就是通信双方会话的体现,我们将传输提供原生支持的会话称为传输会话,基于TCp和IPC(通过命名管道提供的跨进程通信)的会话均属于传输会话。
2 非传输会话 Http是无状态的,本身不可能实现针对客户端的识别的,只能将客户端标识置于消息之中,让服务据此识别客户端,WCF在请求消息中添加一个会话ID号来解决客户端的识别问题。
会话模式
System.ServiceModel.SessionMode枚举表示会话模式,Allowed,Required和NotAllowed三个枚举分别表示允许,强制和不允许使用会话。
用于定义服务契约的ServiceContractAttribute特性具有一个SessionMode属性用于定义采用的会话模式
会话的初始与中止
OperationContractAttribute具有两个布尔类型的IsInitiating和IsTerminating属性分别用于定义初始和终止会话的操作。
如果会话尚未开启, IsInitiating属性被设置为True的操作的调用会自动开启会话,而当IsTerminating属性为True的操作被调用之后,当前会话会被关闭。IsInitiating和IsTerminating属性的默认值分别为True和False。
会话模式,绑定与实例上下文模式
1 如果采用单调实例上下文模式,服务实例上下文的提供方式总是基于每次的服务调用的,所以采用单调实例上下文模式的服务永远是单调服务。
2 单例服务决定于单例实例上下文模式
3 会话服务由会话模式,绑定和实例上下午模式三者决定
WCF 实例化与会话的更多相关文章
- WCF初探-26:WCF中的会话
理解WCF中的会话机制 在WCF应用程序中,会话将一组消息相互关联,从而形成对话.会话”是在两个终结点之间发送的所有消息的一种相互关系.当某个服务协定指定它需要会话时,该协定会指定所有调用(即,支持调 ...
- <转>WCF实例化模式与高并发处理
WCF实例化模式与高并发控制 1.实例化模式InstanceModel 1.1 PerCall:单调模式 每次调用都会产生一个实例 例[ServiceBehavior(InstanceContextM ...
- WCF系列教程之WCF实例化
本文参考自http://www.cnblogs.com/wangweimutou/p/4517951.html,纯属读书笔记,加深记忆 一.理解WCF实例化机制 1.WCF实例化,是指对用户定义的服务 ...
- 重温WCF之WCF中可靠性会话(十四)
1.WCF中可靠性会话在绑定层保证消息只会被传输一次,并且保证消息之间的顺序.当使用TCP(Transmission Control Protocol,传输控制协议)通信时,协议本身保证了可靠性.然而 ...
- WCF系列教程之WCF中的会话
本文参考自http://www.cnblogs.com/wangweimutou/p/4516224.html,纯属读书笔记,加深记忆 一.WCF会话简介 1.在WCF应用程序中,回话将一组消息相互关 ...
- WCF基础之会话、实例和并发
这篇笔记是一些概念性的东西. 会话,借用百科上的描述就是一个客户与服务器之间的不中断的请求响应序列.wcf的会话模式是通过服务契约的SessionModel进行设置的,其值为枚举,分别为:Allowe ...
- WCF - 实例与会话
实例上下文 实例上下文是对服务实例的封装 是WCF管理服务实例生命周期的依托 一个WCF服务通过ServiceHost进行寄宿 开启服务后当接收到请求 则会判断当前是否存在实例上下文 如果存在 则通 ...
- WCF初探-27:WCF中的实例化
理解WCF中的实例化机制 “实例化”是指对用户定义的服务对象以及与其相关的 InstanceContext 对象的生存期的控制.也就是说我们的客户端程序在调用服务端方法时,需要实例化一个服务端代理类对 ...
- 传说中的WCF(11):会话(Session)
在标题中我加了一个大家都很熟悉的单词——Session,熟吧?玩过Web开发的朋友肯定在梦中都会见到她. 在Web中为什么要会话呢?毕竟每个用户在一个Web应用中可能不止进行一次操作,比如,某二手飞机 ...
随机推荐
- [摘] SQLPLUS Syntax
You use the SQLPLUS command at the operating system prompt to start command-line SQL*Plus: SQLPLUS [ ...
- 使用NPIO操作Excel
using System; using System.Collections.Generic; using System.Linq; using System.Text; using NPOI.SS. ...
- sybase下convert函数第三个参数(时间格式)
convert(varchar(10),字段名,转换格式) 比如:1.select user_id,convert(varchar(10),dayts,11) as dates from tb_use ...
- 彻底卸载网易UU网游加速器的方法
昨天跟朋友一起玩游戏,网速感觉不怎么好就下了一个免费的网易UU加速器来给对战平台加速,结果加速了以后网速更差,我晕,于是想卸载,可这个加速器口只有一个exe文件,不用安装,但在第一次加速时记得安装了一 ...
- 在系统方法中调用navigationController的标准写法
在系统方法中调用navigationController的标准写法 -(void)viewWillAppear:(BOOL)animated{ [super viewWillAppear:animat ...
- bnuoj 31796 键盘上的蚂蚁(搜索模拟)
http://www.bnuoj.com/bnuoj/contest_show.php?cid=2876#problem/31796 [题意]: 如题,注意大小写情况 [code]: #include ...
- Excel 隐藏功能区命令
Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",False)"
- vbe6ext.olb不能被加载 宏内存溢出
今天想玩一下PowerPoint的宏,却发现玩不起来!!! 另外,每次打开ppt时都会提示vbe6ext.olb不能加载. 网上说重新下载个vbe6ext.olb然后复制到相应的路径.我也试着下载,然 ...
- PD name 和 comment 互换
1 PowerDesigner中批量根据对象的name生成comment的脚本 执行方法:Open PDM -- Tools -- Execute Commands -- Run Script --- ...
- #pragma预处理指令讲解
在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作.#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的 ...