|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
如果需要重新编写代码,几乎任何一门计算机语言都可以跨平台了,还用得着Java嘛,而且像PHP/C#等语言不需要修改代码都可以跨Windows/Linux。asp.net|session NHibernate中的Session,在我的了解仿佛就相称于数据库中毗连。由于它也有Open/Close的办法,我没有研讨NHibernate的源码,不晓得这类了解是不是有误?我在网上搜了良多的关于Session的办理,年夜多都是在我必要数据库操纵的时分,就OpenSession(),操纵完后就CloseSession().这有点拟似如我们刚入手下手进修ADO.NET的时分,要Connection工具Open(),数据处置完后就Close().可是这里就带来了一个坏处,由于Connection的频仍的开关长短常损耗体系资本的。我记得之前在制造一个数据的录进界面的时,由于这个录进的界面数据元素对照多,并且良多DropDownList必要在数据库中读取数据并绑定。
如许在该页面的Page_Load中必要挪用响应工具的办法逐一从数据库中检索数据绑定DropDownList.由于我们这些工具的办法都是利用自力的Connection,都有本人的Connection的Open和Close。以是,招致这个页面一翻开就必要守候好长的工夫,对照慢。厥后我们将这些必要绑定DropDownList的数据经由过程一个数据处置成一个DataSet,并将DataSet中的DataTable与DropDownList绑定。如许只必要一次的Connection的Open/Close.页面快了很多多少。
以是,我以为上述的Session的办理举措不是很妥善。
厥后,我看了Cuyahoga开源项目中他的Session办理,他利用的“session-per-request”这类形式。从字面上了解就是他为每一个Request创立一个Session,直到这个哀求烧毁,那末这个Session也就Close了。而Cuyahoga他的做法和session-per-request有点分歧中央就是,他为每一个Request都创立了一个CoreRepository工具,CoreRepository是体系所必要的数据处置服务的类。他的做法是先创立了HttpModule(NHSessionModule)用来创立CoreRepository工具和烧毁CoreRepository工具,以下:
privatevoidContext_BeginRequest(objectsender,EventArgse)
{
//CreatetherepositoryforCoreobjectsandaddittothecurrentHttpContext.
CoreRepositorycr=newCoreRepository(true);
HttpContext.Current.Items.Add("CoreRepository",cr);
}
privatevoidContext_EndRequest(objectsender,EventArgse)
{
//ClosetheNHibernatesession.
if(HttpContext.Current.Items["CoreRepository"]!=null)
{
CoreRepositorycr=(CoreRepository)HttpContext.Current.Items["CoreRepository"];
cr.CloseSession();
}
}
如许在每次哀求的时分,会主动创立CoreRepository工具,当哀求终了后,就CloseSession(),在程序中经由过程HttpContext.Current.Items["CoreRepository"]就可以猎取CoreRepository工具了。
如许也就变相的办理了NHibernate中的Session,也就到达了“session-per-request”的这类形式。
具体的解说:经由过程完成IHttpModule初始化Nhibernate的Session
这类体例比下面的谁人每次操纵都必要创立Session,功能和速率应当进步了很多,接着我就想,每一个哀求都创立Session,是否是我们能够象创立ConnectionPool一样,也创立一个SessionPool,如许就每次哀求的时分不是间接创立Session,而是在我们的SessionPool中拿已创立好的Session,如许效力不是更好?!
以前学了大概半年时间的asp(没有机会做大系统,最多是自己对公司系统做些调整和修改还有一些小程序)。应该说开始接触asp.net是今年元月5号的事。现在很想把公司的系统重新用.net来架构,却不知道如何下手。 |
|