讨论:大型web工程的session管理器构想
声明:抛砖引玉而已,期望讨论。
本人负责维护一个大型web项目中的其中一个子系统,面对各种session问题,于是有了这个构想
碰到的问题:
1.对session的胡乱使用:不论是不是重要数据,都使用session保存;
2.多个子项目session重名,互相覆盖:对于那些喜欢复制/粘贴完成开发的程序员所经手的项目,尤为明显;
为应对多人web工程session滥用的情况,设定session管理器;
对内:
? 封装、代理现有session
? 对信息的存取增加前缀——对不同子项目,对保存的键值对中的key追加前缀,避免重名覆盖;
? 实现方案1:通过路径,前缀对外部调用人员透明;
难点,路径必须统一管理;
? 实现方案2:存取时,多传一个子项目标示,建议使用枚举;
难点,方法要改,且无法控制调用者行为;
? 实现方案3:重写session实现类;
难点,对源代码要熟悉,碰到系统jar包升级要重新挠头;
? 记录存取情况——用于统计和管理;
管理:
? 绝对禁止开发人员使用session,所有对信息的存取都必须通过管理器;
? 对管理器的维护权限,只掌握在架构师或高级工程师等少数人手中
------解决方案--------------------收益了!大型项目确实很容易混淆
------解决方案--------------------增加前缀这个可以
我们现在做的项目每个子系统都有一个唯一的前缀,
不过子系统基本上不往session里存值,只有平台才往里面存值,
各个子系统取自己需要的信息