Tuesday 8 March 2005

分布式系统模式笔记(四)

     N久都没有写读书记了,~~~倒不是俺最近没有学习,实在是没有时间更新,(小样!你就别为自己的不负责任推托啦~~~狂扁!·#、¥%……—)



      另外一方面,偶也有小小的忏悔,本来打算和banianMM学习一下认真感悟书的,但是无奈啊,读书笔记都写成ZZ帖子了,实在比较汗颜~~~~还有一个小小的方面就是偶发现偶帖子上面潜水人士实在多,但是却没有回帖, 0  0 好有挫败感阿。不管了,继续继续 .......



  Client  Session State   VS  Server Session State



Client 部分:



基本想法:将state保存在Client部分。而server端是stateless的。简单的有几种实现方式:

URL parameters   优点:简单实现,缺点:SIZE有限制。如果采用SessionID,需要修改URL,那么将影响一些系统的书签功能。



hidden field:在网页上面不显示。在请求和读取请求返回消息的时候存取hidden field的state,优点:比较简单。缺点:安全性差,hidden仅仅针对网页可视性而言,若察看源代码就可以看到state  = =



Cookie:缺点;cookie的安全性也不好,而且容易被IE禁用。不能完全依赖。



何时使用?



支持Stateless server,支持clustering failover,(这是client 较server 的优点。)

安全性能差,解决方案需要封装,以及拆封的过程,需要性能的Cost做代价。



Server Session state



Keep the session state on a serer system in a serialized form.



Server Session State 有很多不好的假设:

no clustering , no fail(集中管理,不支持集群)

实现中主要解决两个问题:

1、用什么形式存储?

a、二进制  优点:简单,需要存储空间小,缺点:不可读,版本控制会出现问题。

b、xml文件  

2、在哪里存储?

数据库,index by session Id



实现:

.net下的session 管理,在Web server端。