Session State Pattern会话状态模式
- 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已经内建了会话状态功能的实现.
- 最简单的方法是把会话数据放在应用Server的内存中.
- 使用时机
- 最大的好处是简单,已有内建的支持.
- 需要编程来实现会话维护.
- DataBase Session State
- 将会话数据作为已提交数据保存到DB中.
- 运行机制
- 会话的局部数据.即不能在整体提交到DB之前影响系统的其他部分的数据.
- 在每个数据行上加上ispending来区分是否是会话数据.
- 将会话ID保存为一个临时字段(先不存到DB中).查询时过滤SessionID不为空来获取真正的记录,来滤掉临时数据.
- 使用临时表来暂存会话数据.当会话提交时再写会真实表.
- 同时,需要在会话取消时有清除会话数据的机制.
- 会话的局部数据.即不能在整体提交到DB之前影响系统的其他部分的数据.
- 使用时机
- DB会话状态和Server会话状态的唯一区别是会话数据是否存储在DB中.
- 选择时,取决于便于集群和故障恢复的程度.
- 性能.
- 无状态的对象提供了Server性能,时缓冲和集群更容易.但是在处理每个请求时需要多花时间来进行DB读/写.
- DB会话状态和Server会话状态的唯一区别是会话数据是否存储在DB中.
Session State Pattern会话状态模式的更多相关文章
- State Pattern -- 状态模式原理及实现(C++)
主要参考<大话设计模式>和<设计模式:可复用面向对象软件的基础>两本书.本文介绍命令模式的实现. 问题出发点 在实际开发中,我们经常会遇到这种情况:一个对象有多种状态,在每一个 ...
- 十一个行为模式之状态模式(State Pattern)
定义: 当一个对象有多个状态,并且在每个状态下有不同的行为,可以使用状态模式来在其内部改变状态时改变其行为,而客户端不会察觉状态的改变,仍使用同样的方法或接口与对象进行交互. 结构图: Context ...
- 深入浅出设计模式——状态模式(State Pattern)
模式动机 在很多情况下,一个对象的行为取决于一个或多个动态变化的属性,这样的属性叫做状态,这样的对象叫做有状态的 (stateful)对象,这样的对象状态是从事先定义好的一系列值中取出的.当一个这样的 ...
- 二十四种设计模式:状态模式(State Pattern)
状态模式(State Pattern) 介绍允许一个对象在其内部状态改变时改变它的行为.对象看起来似乎修改了它所属的类. 示例有一个Message实体类,对它的操作有Insert()和Get()方法, ...
- 乐在其中设计模式(C#) - 状态模式(State Pattern)
原文:乐在其中设计模式(C#) - 状态模式(State Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 状态模式(State Pattern) 作者:webabcd 介绍 允 ...
- 第20章 状态模式(State Pattern)
原文 第20章 状态模式(State Pattern) 状态模式 概述: 当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类. 状态模式主要解决的是当控制一个对象状态的条件表 ...
- C#设计模式之十九状态模式(State Pattern)【行为型】
一.引言 今天我们开始讲"行为型"设计模式的第六个模式,该模式是[状态模式],英文名称是:State Pattern.无论是现实世界,还是面向对象的OO世界,里面都有一个东西, ...
- 状态模式-State Pattern(Java实现)
状态模式-State Pattern 在状态模式(State Pattern)中,类的行为是基于它的状态改变的.当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类. State接口 ...
- C#设计模式之十八状态模式(State Pattern)【行为型】
一.引言 今天我们开始讲“行为型”设计模式的第六个模式,该模式是[状态模式],英文名称是:State Pattern.无论是现实世界,还是面向对象的OO世界,里面都有一个东西,那就是对象.有对象当然就 ...
随机推荐
- opengl之vsh、fsh简易介绍+cocos2dx 3.0 shader 变灰
认识着色器 理解OpenGL渲染管线,对于学习OpenGL非常重要.下面是OpenGL渲染管线的示意图:(图中淡蓝色区域是可以编程的阶段) 此图是从wiki中拿过来的,OpenGL的渲染管线主要包括: ...
- linux centos各种问题解决汇总
1. Linux终端启动图形化程序界面时报错: No protocol specified问题: 这是因为Xserver默认情况下不允许别的用户的图形程序的图形显示在当前屏幕上. 如果需要别的用户的图 ...
- 【如何快速的开发一个完整的 iOS 直播 app】(美颜篇)
来源:袁峥Seemygo 链接:http://www.jianshu.com/p/4646894245ba 前言 在看这篇之前,如果您还不了解直播原理,请查看这篇文章如何快速的开发一个完整的iOS直播 ...
- n-1位数
描述 已知w是一个大于10但不大于1000000的无符号整数,若w是n(n≥2)位的整数,则求出w的后n-1位的数. 输入 第一行为M,表示测试数据组数.接下来M行,每行包含一个测试数据. 输出 ...
- 小小的封装了一个pie的echarts
function showData(ele,arr1,arr2){ var myChart2 = echarts.init(document.getElementById(ele)); var opt ...
- Java SortedSet接口
该SortedSet的接口扩展集Set并声明了一组按升序排序的行为.除了通过集定义的那些方法中,SortedSet接口声明总结于下表的方法: 有几种方法没有任何条目包含在调用Set的时候抛出一个NoS ...
- css初接触
一.简介:CSS 即 级联样式表 . 它是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言. css是能够真正做到网页表现与内容分离的一种 ...
- C语言中的命名空间
C语言中的命名空间 命名空间是为了解决 "在相同作用域内如何区分 相同的标识符". 说明: ①只有在相同作用域的情况下才能使用到命名空间去区分标识符,在嵌套的作用域.不同的作用域区 ...
- TaskUtil多线程与定时任务
package com.taoban.util; /** * 执行单次任务或定时任务工具类(用于减少new Thread()和new Timer()的使用) */ public class Tas ...
- IQueryable与IEnumberable的区别
IEnumerable接口 公开枚举器,该枚举器支持在指定类型的集合上进行简单迭代.也就是说:实现了此接口的object,就可以直接使用foreach遍历此object: IQueryable 接口 ...