ASP.NET网站制作之Asp.Net中NHiernate的Session的办理
如果需要重新编写代码,几乎任何一门计算机语言都可以跨平台了,还用得着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来架构,却不知道如何下手。 主流网站开发语言之PHP:PHP的全名非常有趣,它是一个巢状的缩写名称——“PHP:HypertextPreprocessor”,打开缩写还是缩写。PHP是一种HTML内嵌式的语言(就像上面讲的ASP那样)。而PHP独特的语法混合了C,Java,Perl以及PHP式的新语法。它可以比CGI或者Perl更快速地执行动态网页。 在调试JSP代码时,如果程序出错,JSP服务器会返回出错信息,并在浏览器中显示。这时,由于JSP是先被转换成Servlet后再运行的,所以,浏览器中所显示的代码出错的行数并不是JSP源代码的行数。 现在的ASP.net分为两个版本:1.1和2.0Asp.net1.1用VS2003(visualstudio2003)编程。Asp.net2.0用VS2005(visualstudio2005)编程。现在一般开发用的是VS2003。 它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。 当然我们在选择Asp.net主机是,除了要考虑服务提供商在版本是否是实时更新以外,机房的环境和配置也是非常重要的,通常选择骨干网的机房,在速度和稳定性上会非常有保证。 微软又推出ASP.NET。这不是ASP的简单升级,而是全新一代的动态网页实现系统,用于一台WEB服务器建立强大的应用程序。是微软发展的新体系结构.NET的一部分,是ASP和.NET技术的结合。 微软又推出ASP.NET。这不是ASP的简单升级,而是全新一代的动态网页实现系统,用于一台WEB服务器建立强大的应用程序。是微软发展的新体系结构.NET的一部分,是ASP和.NET技术的结合。 对于中小项目来说.net技术是完全可以胜任,但为什么现在大型公司或网站都选择php或java呢?就是因为微软不够开放,没有提供从硬件到应用服务器再到业务应用的整套解决方案。
页:
[1]