在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
这几天上网翻阅了不少前辈们的关于iis和asp.net运行原理的博客,学的有点零零散散,花了好长时间做了一个小结(虽然文字不多,但也花了不少时间呢),鄙人不才,难免有理解不道的地方,还望前辈们不吝赐教。 这篇博客主要是描述asp.net程序在iis6.0上的一个执行过程。
HTTP.SYS:Win2003和winXP SP2的核心操作系统组件,,能够让任何应用程序通过它提供的接口,以http协议进行信息通讯。 优点:
简单来说它是独立于IIS之外的,任何http请求都会首先被它侦听到 W3SVC:1. 没有第三方应用程序的代码 2. 根据配置数据的设置创建和监视w3wp.exe,由工作线程运行Web网站应用。 3. 总是处于运行状态,因此它能够监视Web应用的健康状况,并在必要时采取行动。由于这一策略,服务器能够根据用户指定的参数监视和重新启动应用程序。 Application Pool(应用程序池):1. 在IIS6.0中,每一个用户web应用程序都会运行在一个应用程序池中。这个应用程序池可以是IIS默认的应用程序池,也可以是用户自定义的应用程序池。 2.作为一个宿主程序,每个应用程序池中都会运行着一个或者多个用户web应用程序。 3.在应用程序池中,存在着一个或者多个工作进程(一个以上叫Web园)。每个工作进程只能属于一个特定的应用程序池,由这些工作进程来负责管理应用程序池中的用户web应用程序。 w3wp.exe(工作进程):默认情况下,IIS 6.0在工作进程隔离模式下运行,在这种模式中,对于每一个Web应用,IIS 6.0都用一个独立的w3wp.exe的实例来运行它。 因此,工作进程隔离模式不存在 进程内(In-Process)应用程序存在的问题,有效地提高了可靠性和安全性。可靠性的提高是因为一个Web应用的故障不会影响到其他Web应用,也不会影响http.sys,每一 个Web应用由W3SVC单独地监视其健康状况。安全性的提高是由于应用程序不再象IIS 5.0和IIS4.0的进程内应用那样用System帐户运行,默认情况下,w3wp.exe的所有 实例都在一个权限有限的“网络服务”帐户下运行,必要时,还可以将工作进程配置成用其他用户帐户运行。 Metabase(元数据):
1.BeginRequest:asp.net开始处理请求的第一个事件,表示处理的开始。 2.AuthenticateRequest:验证请求,一般用来取得请求的用户信息。 3.PostAuthenticateRequest:已经获取请求的用户信息。 4.AuthorizeRequest:授权,一般用来检查用户的请求是否获得权限。 5.PostAuthorizeRequest:用户请求已经获得授权。 6.ResolveRequestCache:获取以前处理缓存的处理结果,如果以前缓存过,那么,不用再进行请求的处理工作,直接返回缓存的结果。 7.PostResolveRequestCache:已经完成缓存的处理工作。 8.PostMapRequestHandler:已经根据用户的请求,创建了请求的处理器对象。 9.AcquireRequestState:取得请求的状态,一般用于session 10.PostAcquireRequestState:已经获得了session 11.PreRequestHandlerExecute:准备执行处理程序。 12.PostRequestHandlerExecute:已经执行了处理程序 13.ReleaseRequestState:释放请求的状态。 14.PostReleaseRequestState:已经释放了请求的状态。 15.UpdateRequestCache:更新缓存。 16.PostUpdateRequestCache:已经更新了缓存。 17.LogRequest:请求的日志操作 18.PostLogRequest:已经完成请求的日志操作。 19.EndRequest:本次请求处理完成。 |
请发表评论