实例管理旨在解决服务实例的激活和服务实例生命周期的控制,会话的目的是在于保持相同客户端(服务代理)多次服务调用的状态。

实例上下文

实例上下文是对服务实例的封装,是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 实例化与会话的更多相关文章

  1. WCF初探-26:WCF中的会话

    理解WCF中的会话机制 在WCF应用程序中,会话将一组消息相互关联,从而形成对话.会话”是在两个终结点之间发送的所有消息的一种相互关系.当某个服务协定指定它需要会话时,该协定会指定所有调用(即,支持调 ...

  2. <转>WCF实例化模式与高并发处理

    WCF实例化模式与高并发控制 1.实例化模式InstanceModel 1.1 PerCall:单调模式 每次调用都会产生一个实例 例[ServiceBehavior(InstanceContextM ...

  3. WCF系列教程之WCF实例化

    本文参考自http://www.cnblogs.com/wangweimutou/p/4517951.html,纯属读书笔记,加深记忆 一.理解WCF实例化机制 1.WCF实例化,是指对用户定义的服务 ...

  4. 重温WCF之WCF中可靠性会话(十四)

    1.WCF中可靠性会话在绑定层保证消息只会被传输一次,并且保证消息之间的顺序.当使用TCP(Transmission Control Protocol,传输控制协议)通信时,协议本身保证了可靠性.然而 ...

  5. WCF系列教程之WCF中的会话

    本文参考自http://www.cnblogs.com/wangweimutou/p/4516224.html,纯属读书笔记,加深记忆 一.WCF会话简介 1.在WCF应用程序中,回话将一组消息相互关 ...

  6. WCF基础之会话、实例和并发

    这篇笔记是一些概念性的东西. 会话,借用百科上的描述就是一个客户与服务器之间的不中断的请求响应序列.wcf的会话模式是通过服务契约的SessionModel进行设置的,其值为枚举,分别为:Allowe ...

  7. WCF - 实例与会话

    实例上下文 实例上下文是对服务实例的封装 是WCF管理服务实例生命周期的依托  一个WCF服务通过ServiceHost进行寄宿 开启服务后当接收到请求 则会判断当前是否存在实例上下文 如果存在 则通 ...

  8. WCF初探-27:WCF中的实例化

    理解WCF中的实例化机制 “实例化”是指对用户定义的服务对象以及与其相关的 InstanceContext 对象的生存期的控制.也就是说我们的客户端程序在调用服务端方法时,需要实例化一个服务端代理类对 ...

  9. 传说中的WCF(11):会话(Session)

    在标题中我加了一个大家都很熟悉的单词——Session,熟吧?玩过Web开发的朋友肯定在梦中都会见到她. 在Web中为什么要会话呢?毕竟每个用户在一个Web应用中可能不止进行一次操作,比如,某二手飞机 ...

随机推荐

  1. Cube and EarthDistance

    前言:项目中用到了postgreSQL中的earthdistance()函数功能计算地球上两点之间的距离,中文的资料太少了,我找到了一篇英文的.讲的很好的文章 ,特此翻译,希望能够帮助到以后用到ear ...

  2. 【postgresql】创建自增SEQUENCE

    CREATE SEQUENCE circlefence_id_seq START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1; alte ...

  3. C# list 筛选FindAll

    例如:参数a.list b.ModelId:根据ModelId参数进行筛选 /// <summary> /// 根据ModelId筛选查询出对应的数据 /// </summary&g ...

  4. csu 1306 Manor(优先队列)

    http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1306 1306: Manor Time Limit: 1 Sec  Memory Limit: 1 ...

  5. TCP/IP长连接和短连接

    http://www.cnblogs.com/bigwalnut/articles/2129070.html TCP/IP通信程序设计的丰富多样性 刚接触TCP/IP通信设计的人根据范例可以很快编出一 ...

  6. 设计模式之:组合模式(Composite)

    支持原创:http://blog.csdn.net/hguisu/article/details/7530783 设计模式(七)组合模式Composite(结构型) 1. 概述 在数据结构里面,树结构 ...

  7. 以守护进程方式启动firefly

    原地址:http://www.9miao.com/question-15-53966.html 最近看源码,查了半天,没找到已守护进程方式启动firefly的方法,自己改了改写了一个,废话不多说直接上 ...

  8. Python的作用域

    Python的作用域 转自:http://www.cnblogs.com/frydsh/archive/2012/08/12/2602100.html Python是静态作用域语言,尽管它自身是一个动 ...

  9. Shell命令合集

    Ccat zdd 浏览文件zdd的内容cat zdd1 zdd2 浏览多个文件的内容cat -n zdd浏览文件zdd的内容并显示行号 cd 回到起始目录,也即刚登陆到系统的目录,cd后面无参数cd ...

  10. JSON用法简介

    [JSON简介] jsoncpp 主要包含三种类型的 class:Value.Reader.Writer.jsoncpp 中所有对象.类名都在 namespace Json 中,包含 json.h 即 ...