asp.net为每一个请求都实例化一个页面类么?
小弟有个问题,一直不解。。。比如我写了一个Default.aspx,对应的CodeBehind是Default:System.Web.UI.Page,那么对于用户的每一次请求,该类都会实例化一次么?还是像Tomcat一样,有一个线程池,里面实例化的类会在不同请求间复用。这个问题就牵扯到了线程安全的问题,如果asp.net像servlet那样,我就不能在CodeBehind中定义一个public int Var(这个Var跟用户请求相关),然后在前台的.aspx代码中引用了,因为这样做就线程不安全了。。恳请各位解答,谢谢! --------------------编程问答-------------------- 把网页缓存起来不就能实现了嘛! --------------------编程问答-------------------- 缓存并不能适用于所有情况,我想知道asp.net的一个页面类的生命周期只有一个请求么。。 --------------------编程问答-------------------- 访问一次就会调用线程池中一个工作线程去处理 --------------------编程问答-------------------- 菜鸟见解:先去内存中查找有没有机器代码,如果有的话直接调用,
如果内存中没有,就去查看IL,在没有的话,才重新实例化一个页面类。
不知道这样理解对不对 --------------------编程问答-------------------- 我的理解是的,每次Request,Codebehind中的页面类都会被实例化一次。 --------------------编程问答-------------------- 是会被实例化一次,WEBFORM中,每个页相当一个类,就是这样的, --------------------编程问答-------------------- 你的理解是正确的。但是asp.net所做的又不仅这些,它还会根据request重建那些服务器控件的状态和属性值。 --------------------编程问答-------------------- 每次请求都是全新的请求,这么理解的话是需要重新的去实例化的。
Tomcat的线程池也是会重新实例化的吧,一旦请求结束就不会记录上次请求的数据。
这个线程池的就是控制访问用户数量的,如果要比较iis和它比较合适
--------------------编程问答-------------------- 详解asp.net 请求处理机制 参见我的博客
http://www.cnblogs.com/cilence/archive/2012/05/28/2520712.html --------------------编程问答-------------------- 如果想要更深刻的研究,就看博客园各位大大的文章吧
补充:.NET技术 , ASP.NET