SQlite+.net2.0 实现会话状态存储提供程序
/// <summary>
/// Juice网站会话状态数据存储提供类
/// </summary>
public sealed class SQLiteStoreProvider : SessionStateStoreProviderBase
{}
只要类继承SessionStateStoreProviderBase 并重写其中的抽象方法即可,由于msdn里边有,所以这里不再赘述
最后再web.config中配置为
<system.web>
<sessionState mode="Custom" cookieless="UseDeviceProfile" customProvider="JuiceSSExpress">
<providers>
<add name="JuiceSSExpress" type="Juice.Core.SessionState.SQLiteStoreProvider"/>
</providers>
</sessionState>
我采用的是将session数据串行化为二进制然后保存在数据库中,在提取的Session数据的时候用反串行二进制的方法,但是这样用起来却比我以前直接将会话状态数据保存在内存中慢了很多
以前只需要0.0003秒而现在却需要0.2786183s
当然这是因为我这两种情况只有我一个人访问所以还无法对比出来
所以正在用Web压力测试工具测试 等会把结果弄出来
同时正在考虑横向改变数据库提供方式比如用SqlServer和Access数据库再测试下
也正在考虑把纵向改变串行化的方式,看能不用用其他的串行化的方式来提高下性能
当然之所以做这么多的探讨,目的只是为了我的系统能适合更多的用户
因为有的站长没有sqlserver 所以是不能用sqlserver来提供会话状态存储数据的
有的站长只能用Access和Sqlite这种轻量级的但相对来说是免费的数据库,如果他们的用户多的话,所有数据保存在内存中估计会慢,所以正在探讨一种 数据库与SessionState提供程序的折中优化方式....
源码稍后公布
浙公网安备 33010602011771号