星空网 > 软件开发 > ASP.net

ASP.NET MVC 5系列 (六):EF实现嵌入式和分布式的Session

ASP.NET默认的InProc模式的Session既浪费内存又在网站重启时存在数据丢失问题,SQLServer模式的Session只支持SQL Server又需要命令行配置。使用EntityFramwork实现Custom既可以利用EntityFramework实现自定义的SessionProvider既可以避免数据丢失又不用捆绑到Sql Server上,还可以采用CodeFirst的自动生成数据库的方式,让我们不再需要命令行配置。

我们可以按照实际情况,对低配置单个网站采用嵌入式数据库,对负载均衡的Session统一使用分布式的Session服务器避免状态丢失,更可以在后期不用修改原有代码,只通过修改web.config方便的添加和切换其他提供了EntityFramework的数据库。

1.定义实体:

实体的代码我通过EntityFramework的插件从数据库反向生成了ASP.NET Session的实体代码,参考github上其他的Session提供程序进行了修改,将2个表合并,依然支持不同Application级别的Session存取。

ASP.NET MVC 5系列 (六):EF实现嵌入式和分布式的Session

 

2.自定义提供程序:

主要的参考三个来源:

(1)MongoDB-ASP.NET-Session-State-Store(https://github.com/AdaTheDev/MongoDB-ASP.NET-Session-State-Store)

(2)SQLiteSessionStateStore(https://github.com/micahlmartin/SQLiteSessionStateStore)

(3)System.Web.SessionState.SqlSessionStateStore(ILSpy)

ASP.NET MVC 5系列 (六):EF实现嵌入式和分布式的Session

 

3.配置web.config

通过切换Provider的connectionStringName属性可以切换不同的数据连接。

ASP.NET MVC 5系列 (六):EF实现嵌入式和分布式的Session

 

4.测试功能:

只是简单的测试了读写。
ASP.NET MVC 5系列 (六):EF实现嵌入式和分布式的Session

 

5.查看结果:


ASP.NET MVC 5系列 (六):EF实现嵌入式和分布式的Session

6.演示代码:


我已经上传到http://git.oschina.net/myshare/EntityFramework.SessionStateStoreProvider。包括之前提到的Sqlite的Code First生成数据库的代码,也从github原作者哪里fork后导入到git osc,方便大家参考(http://git.oschina.net/myshare/SQLiteCodeFirst)。

ASP.NET MVC 5系列 (六):EF实现嵌入式和分布式的Session

 

7.Nuget程序包:

 https://www.nuget.org/packages/EfSessionStateProvider/

这是第一次使用Nuget程序包的相关打包上传功能,上传这个包主要是为了学习Nuget的相关功能。主要参考自http://www.cnblogs.com/daxnet/archive/2013/05/07/3064577.html。推荐一下。

ASP.NET MVC 5系列 (六):EF实现嵌入式和分布式的Session




原标题:ASP.NET MVC 5系列 (六):EF实现嵌入式和分布式的Session

关键词:ASP.NET

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流