• Client Session State 客户会话状态.
    • 在Client端保存会话状态.
    • 运行机制
      • Client在每次请求时会把所有的会话数据传给Server,Server在响应时把所有的会话状态传给Client.
      • 可以是完全无状态的Server.
      • 通常使用可序列化的DTO对象来传递数据.
      • 在HTML中,可选的是:URL参数,表单的隐藏域,Cookie.
    • 使用时机
      • 支持无状态的Server对象.从而提供了最大的集群性能和容错恢复.
      • 适合于小数据量.当数据量大时,保存和传输会有较大的延迟.
      • 安全问题.所有送到客户的数据都很容易泄露或被篡改.而加密又会影响性能.
      • 会话标识号一般使用Client会话状态.
  • Server Session State服务器会话状态
    • 将会话状态以序列化的形式存放在Server端.
    • 运行机制
      • 最简单的方法是把会话数据放在应用Server的内存中.

        • 将会话数据以会话标识号为键存在内存映射表中.
        • Server以客户给出的会话标识号取出会话数据.
        • 这种方式,需要足够的内存.且没有Server集群.
      • 不吧会话数据放在内存中,而是序列化后持久保存.
        • 序列化方式:二进制,文本(XML).
        • 持久化到哪里.
          • 最简单的是放在应用Server的文件系统或者本地数据库中.
          • 为了支持集群和故障恢复.需要放在公共访问的地方.如共享服务器.问题是需要更长的事件激活服务器.
        • 保存到DB中:以会话标识号为键值,序列化LOB来存放序列化后的会话状态.
          • 需要对作废的会话进行处理.
      • 应用服务器已经开始提供自动的支持.
        • .Net已经内建了会话状态功能的实现.
    • 使用时机
      • 最大的好处是简单,已有内建的支持.
      • 需要编程来实现会话维护.
  • DataBase Session State
    • 将会话数据作为已提交数据保存到DB中.
    • 运行机制
      • 会话的局部数据.即不能在整体提交到DB之前影响系统的其他部分的数据.

        • 在每个数据行上加上ispending来区分是否是会话数据.
        • 将会话ID保存为一个临时字段(先不存到DB中).查询时过滤SessionID不为空来获取真正的记录,来滤掉临时数据.
        • 使用临时表来暂存会话数据.当会话提交时再写会真实表.
      • 同时,需要在会话取消时有清除会话数据的机制.
    • 使用时机
      • DB会话状态和Server会话状态的唯一区别是会话数据是否存储在DB中.

        • 选择时,取决于便于集群和故障恢复的程度.
      • 性能.
        • 无状态的对象提供了Server性能,时缓冲和集群更容易.但是在处理每个请求时需要多花时间来进行DB读/写.

Session State Pattern会话状态模式的更多相关文章

  1. State Pattern -- 状态模式原理及实现(C++)

    主要参考<大话设计模式>和<设计模式:可复用面向对象软件的基础>两本书.本文介绍命令模式的实现. 问题出发点 在实际开发中,我们经常会遇到这种情况:一个对象有多种状态,在每一个 ...

  2. 十一个行为模式之状态模式(State Pattern)

    定义: 当一个对象有多个状态,并且在每个状态下有不同的行为,可以使用状态模式来在其内部改变状态时改变其行为,而客户端不会察觉状态的改变,仍使用同样的方法或接口与对象进行交互. 结构图: Context ...

  3. 深入浅出设计模式——状态模式(State Pattern)

    模式动机 在很多情况下,一个对象的行为取决于一个或多个动态变化的属性,这样的属性叫做状态,这样的对象叫做有状态的 (stateful)对象,这样的对象状态是从事先定义好的一系列值中取出的.当一个这样的 ...

  4. 二十四种设计模式:状态模式(State Pattern)

    状态模式(State Pattern) 介绍允许一个对象在其内部状态改变时改变它的行为.对象看起来似乎修改了它所属的类. 示例有一个Message实体类,对它的操作有Insert()和Get()方法, ...

  5. 乐在其中设计模式(C#) - 状态模式(State Pattern)

    原文:乐在其中设计模式(C#) - 状态模式(State Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 状态模式(State Pattern) 作者:webabcd 介绍 允 ...

  6. 第20章 状态模式(State Pattern)

    原文 第20章 状态模式(State Pattern) 状态模式  概述:   当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类. 状态模式主要解决的是当控制一个对象状态的条件表 ...

  7. C#设计模式之十九状态模式(State Pattern)【行为型】

    一.引言   今天我们开始讲"行为型"设计模式的第六个模式,该模式是[状态模式],英文名称是:State Pattern.无论是现实世界,还是面向对象的OO世界,里面都有一个东西, ...

  8. 状态模式-State Pattern(Java实现)

    状态模式-State Pattern 在状态模式(State Pattern)中,类的行为是基于它的状态改变的.当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类. State接口 ...

  9. C#设计模式之十八状态模式(State Pattern)【行为型】

    一.引言 今天我们开始讲“行为型”设计模式的第六个模式,该模式是[状态模式],英文名称是:State Pattern.无论是现实世界,还是面向对象的OO世界,里面都有一个东西,那就是对象.有对象当然就 ...

随机推荐

  1. Android-----使用Button特效 selector+shape

    当然除了使用drawable这样的图片外今天谈下自定义图形shape的方法,对于Button控件Android上支持以下几种属性shape.gradient.stroke.corners等. 我们就以 ...

  2. PHP中header用法详解带范例(转)

    header的用法 header()函数的作用是:发送一个原始 HTTP 标头[Http Header]到客户端.标头 (header) 是服务器以 HTTP 协义传 HTML 资料到浏览器前所送出的 ...

  3. 清除SQL Server 2008中登陆时的历史记录

    win7 在地址栏直接输入下面路径,删除SqlStudio.bin文件%AppData%\Microsoft\Microsoft SQL Server\100\Tools\Shell

  4. C++删除字符串中特定的字符

    原文:https://snipt.net/aolin/c-6/ //处理string类型的方法del_sp(string &str)待测试 //处理C-Style的方法可用,可以考虑将该方法改 ...

  5. Thrift安装问题

      1.error: Bison version 2.5 or higher must be installed on the system! 哈哈,Bison版本低了吧,用下面的命令 wget ht ...

  6. ubuntu 设置IP,设置网关

    1. 检验是否可以连通,就使用ping命令ping 网关 开始的时候总是现实unreachable 2. 设置IP sudo ifconfig eth0 133.133.133.190 netmask ...

  7. iOS runtime 运行时( 三 )

    上一篇 聊的是: 在不知道一个对象有什么属性的情况下, 获取对象的所有属性,然后可以改变属性的值, 今天我们谈谈 怎么通过Category(类别)+runtime 给一个类 添加一个新的属性,一般情况 ...

  8. Python操作MySQL之SQLAlchemy

      SQLAlchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进行数据库操作,简言之便是:将对象转换成SQL,然后使用数据API执行SQL并获取执行结 ...

  9. 通过layer的contents属性来实现uiimageview的淡入切换

    #import "ViewController.h" @interface ViewController () @property(nonatomic,strong)CALayer ...

  10. Android(java)学习笔记267:Android线程池形态

    1. 线程池简介  多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力.     假设一个服务器完成一项任务所需时间为:T1 创建线程时间, ...