sessions模式 :: 风之谷

来源: BlogBus 原始链接: http://www.blogbus.com:80/blogbus/blog/diary.php?diaryid=165984 存档链接: https://web.archive.org/web/20041123131314id_/http://www.blogbus.com:80/blogbus/blog/diary.php?diaryid=165984


风之谷 有关ACE/TAO,还有CORBA的学习资料 <<<DII学习笔记 | 首页 | JAWS2 分析报告 IV>>> sessions模式 时间:2004-05-07 session是什么,翻译成中文很简单就是会话。 session有什么用呢?在学Web编程的时候,我的理解是session对象上下文提供了描述存储的环境,用来 共享传递页面与页面的信息。你可以把一次用户交互的会话信息(如用户名)存放在session对象中,只 要这个用户session还没有超时,你写的页面就可以访问这个session对象。 后来在J2EE中又提到了session对象,session的概念有进行了进一步的加强,session对象代表单独的客 户执行;可以是事务相关的;在底层数据库中更新共享数据,不负责直接展现数据库中的共享数据;生命周期 相对比较短,如果EJB容器崩溃,客户需要重新建立信的会话对象来继续执行操作。 虽然session用的时间很长了,但是很少考虑session的具体实现。在读过Doug Lea 有关sessions 模式的 描述之后,有点豁然开朗的感觉。现在就其中的有关问题描述内容摘录下来,希望能和大家继续讨论。 背景 抽象来说,sessions是由对资源的三种操作所组成。这三种操作分别为B(Beginning),M(Middle),和E (End)。sessions模式有以下的规则: 一个session是由一个单独的B操作所创建, B操作通常返回一个句柄(handle) (如 reference,id,pointer等)参数h。 在执行完一个B操作后,将会发生任意多个M操作,每个M操作都需要使用B操作获得的句柄h。 一个session的结束通过E操作进行的,E操作通常是需要使句柄h失效或者释放。一个E操作只有当M操作都执行完了,才能被执行。 用正则表达式来描述上面的规则 (B M* E) Examples C++ Objects: B = {new} M = { [messages to created object] } E = {delete} Transactions: B = {beginTransaction} M = { [messages to participating objects] } E = {commit, abort} Locking: B = {acquire} M = { [messages to locked objects] } E = {release} Unix Files: B = {open, dup, ... } M = {read, write, ...} E = {close} Network Channels and Sockets B = {connect, ... } M = {send, accept, ...} E = {disconnect, ...} CORBA Services: B = {create, duplicate} M = { [messages to service] } E = {release} 问题 就是要确保协议的正常执行 保证在执行M操作之前,B操作只发生一次 保证在执行E操作之前,所有的M操作都执行完 保证B操作是最先执行的 大家可以从下面的链接获取有关具体的实现的内容 http://g.oswego.edu/dl/pats/session.html jnn 发表于 2004-05-07 10:21 引用Trackback(0) | 编辑 评论 <a href=http://y-midgets-feetwarez.da.ru>y feet y-feet ( y-midgets-feetwarez.da.ru ) 发表于 2004-09-04 04:49 <a href=http://rpornstarsdownloadt.da.ru>r tv tv-r ( rpornstarsdownloadt.da.ru ) 发表于 2004-09-26 16:09 发表评论 最后更新 ACE Tutorial [翻译] 06 -page05 ACE Tutorial [翻译] 06 -page04 ACE Tutorial [翻译] 06 -page03 ACE Tutorial [翻译] 06 -page02 ACE Tutorial [翻译] 06 -page01 ACE Tutorial [翻译] 05 -page05 ACE Tutorial [翻译] 05 -page04 ACE Tutorial [翻译] 05 -page03 ACE Tutorial [翻译] 05 -page02 ACE Tutorial [翻译] 05 -page01