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

实例上下文

实例上下文是对服务实例的封装,是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. Schtasks 命令详解

    管理计划任务 SCHTASKS /parameter [arguments] 描述:     允许管理员创建.删除.查询.更改.运行和中止本地或远程系统上的计划任务. 参数列表:     /Creat ...

  2. 机器学习基石的泛化理论及VC维部分整理

    第四讲 机器学习的可行性 一.Hoeffding's Inequality \(P[\left | \nu -\mu  \right |>\epsilon ] \leq 2exp(-2\epsi ...

  3. python调试总结

    调试通常采用两种方式,打印日志调试以及运行时实时跟踪调试. 一.打印日志: 1. print不要看不起print,这是一切调试的起点,即便是调试Java或者C这种巨麻烦的编译语言,print仍然是常用 ...

  4. CSU1321+SPFA

    简单题 /* 简单的bfs */ #include<algorithm> #include<iostream> #include<string.h> #includ ...

  5. hadoop No FileSystem for scheme: hdfs

    http://stackoverflow.com/questions/17265002/hadoop-no-filesystem-for-scheme-file This is a typical c ...

  6. 【疯狂Java学习笔记】【理解面向对象】

    [学习笔记]1.Java语言是纯粹的面向对象语言,这体现在Java完全支持面向对象的三大基本特征:封装.继承.多态.抽象也是面向对象的重要组成部分,不过它不是面向对象的特征之一,因为所有的编程语言都需 ...

  7. nginx 详解

    #运行用户 #user  nobody;   #启动进程,通常设置成和cpu的数量相等或者2倍于cpu的个数(具体结合cpu和内存).默认为1 worker_processes  1;   #全局的错 ...

  8. libevent学习之二:Windows7(Win7)下编译libevent

    Linux下编译参考源码中的README文件即可,这里主要记录Windows下的编译. 一.准备工作 去官网下载最新的稳定发布版本libevent-2.0.22-stable 官网地址:http:// ...

  9. photoshop:模仿-广告放射背景

    模仿对象:图片大小960*400 过程: 1.新建文档,大小为:960*800 2.选择渐变工具,黑白从上往下渐变 3.滤镜->扭曲->波浪,参考设置 4.滤镜->扭曲->极坐 ...

  10. Django Navi 重用

    代码来自这里: base.html <html> <head>...</head> <body> ... {% block nav %} <ul ...