应用程序(Application)、应用程序域(AppDomains)与应用程序池(AppPool)的简介和相互联系

 

虽然这些是基本的概念,但对理解asp.net实现原理还是很有用,这些概念还是挺容易忘记的.

应用程序
:asp.net将应用程序定义为所有文件、页、处理程序、模块和可执行代码的总和,该应用程序可在 Web 应用程序服务器上的给定虚拟目录(及其子目录)的范围内调用或运行.

应用程序域: AppDomain是一个应用程序执行的独立环境,为执行托管代码提供隔离、卸载和安全边界. .net应用程序是由许多程序集组成的,然而不像win32程序,.net程序是在应用程序域中执行.应用程序域不同于win32的进程.实际上,一个进程可以有任意多的AppDomains,每个Appdomain之间是完全隔离的.运行在不同Appdomain中应用程序是不能共享信息的(全局变量,静态字段),除非用remoting.

服务器上的每个应用程序都在唯一的应用程序域中执行.asp.net在应用程序的生存期内维护HttpApplication实例池(应用程序的多个实例),asp.net自动指派其中的某个实例处理应用程序接收到的每个传入http请求,所指派的特定HttpApplication实例负责管理请求的整个生存期,并仅在请求完成后才被重新使用.

在应用程序域和线程之间没有一对一的关联,多个线程可以属于一个应用程序域,尽管给定的线程并不局限于一个应用程序域,但在任何给定时间,线程都在一个应用程序域中执行."(来自.NET FrameWork SDK)多线程就是同一个应用程序域会有多个线程在上面执行.
可以对AppDomain进行动态加载卸载程序集.AppDomain是程序集的执行环境,程序集作为静态实体,其可以被多个appDomain加载执行.

应用程序池:IIS6可以将单个的Web应用程序或多个站点分隔到一个独立的进程(称为应用程序池),可以包含许多应用程序域.应用程序池以独立进程的方式极大的提高了Web服务器的安全和稳定性.还可以方便的构建web garden,通过指定某个应用程序池的最大工作进程工作数量实现.

参考资料:
http://chs.gotdotnet.com/quickstart/aspplus/doc/applications.aspx
http://www.codeproject.com/books/1893115593_6.asp
http://dev.csdn.net/article/22/22457.shtm Created by jecray
http://weblogs.asp.net/owscott/archive/2007/09/02/application-vs-appdomain.aspx

你可能感兴趣的:(application)