.net之asp web application快速入门(2)
application的生存期
一个asp.net application创建于服务器第一次被请求时,在那之前不会有asp.net代码在执行。接受第一次请求后,一个httpapplication实例池被创建,并激活了application_onstart事件。httpapplication实例处理这个请求及随后发生的请求,直到最后的实例退出,接着就触发application_onend事件。
注意,在每一个实例中httpapplication的init以及dispose方法都被调用,因此在application_onstart 和 application_onend事件间将被调用多次。在一个asp.net
application中,只有这些事件在所有httpapplication实例中被共享。
关于多线程
如果我们以application范围类型使用对象,我们就应该注意asp.net是并发处理请求的,从而application对象可以被多个线程所访问。因此,如果下面例子中的代码在同一时间被不同的客户机访问,它就是危险的,可能不会达到预期目的。为对照方便,我们列出了使用vb、c#以及jscript三种语言编写的代码:
<%
application["counter"] = (int32)application["counter"] + 1;
%>
<%
application("counter") = ctype(application("counter") + 1, int32)
%>
jscript
<%
application("counter") = int32(application("counter") + 1);
%>
为了实现安全的线程处理,我们可以通过lock和unlock方法处理这个application对象。请看下面使用vb、c#以及jscript三种语言编写的代码:
<%
application.lock();
application["counter"] = (int32)application["counter"] + 1;
application.unlock();
%>
<%
application.lock()
application("counter") = ctype(application("counter") + 1, int32)
application.unlock()
%>
jscript
<%
application.lock();
application("counter") = int32(application("counter") + 1);
application.unlock();
%>
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器