; SP NET是一个非常强大的构建Web应用的平台 它提供了极大的灵活性和能力以致于可以用它来构建所有类型的Web应用 绝大多数的人只熟悉高层的框架如 WebForms 和 WebServices 这些都在ASP NET层次结构在最高层
这篇文章的资料收集整理自各种微软公开的文档 通过比较 IIS IIS IIS 这三代 IIS 对请求的处理过程 让我们熟悉 ASP NET的底层机制 并对请求(request)是怎么从Web服务器传送到ASP NET运行时有所了解 通过对底层机制的了解 可以让我们对 有更深的理解
IIS 的 请求处理过程
IIS 的请求处理过程
对图的解释
IIS x 一个显著的特征就是 Web Server 和真正的 ASP NET Application 的分离 作为 Web Server 的IIS运行在一个名为 InetInfo exe 的进程上 InetInfo exe 是一个Native Executive 并不是一个托管的程序 而我们真正的 ASP NET Application 则是运行在一个叫做 aspnet_wp 的 Worker Process 上面 在该进程初始化的时候会加载CLR 所以这是一个托管的环境
ISAPI 指能够处理各种后缀名的应用程序 ISAPI 是下面单词的简写 Internet Server Application Programe Interface 互联网服务器应用程序接口
IIS 模式的特点
首先 同一台主机上在同一时间只能运行一个 aspnet_wp 进程 每个基于虚拟目录的 ASP NET Application 对应一个 Application Domain 也就是说每个 Application 都运行在同一个 Worker Process 中 Application之间的隔离是基于 Application Domain 的 而不是基于Process的 其次 ASP NET ISAPI 不但负责创建 aspnet_wp Worker Process 而且负责监控该进程 如果检测到 aspnet_wp 的 Performance 降低到某个设定的下限 ASP NET ISAPI 会负责结束掉该进程 当 aspnet_wp 结束掉之后 后续的 Request 会导致ASP NET ISAPI 重新创建新的 aspnet_wp Worker Process
最后 由于 IIS 和 Application 运行在他们各自的进程中 他们之间的通信必须采用特定的通信机制 本质上 IIS 所在的 InetInfo 进程和 Worker Process 之间的通信是同一台机器不同进程的通信(local interprocess munications) 处于Performance的考虑 他们之间采用基于Named pipe的通信机制 ASP NET ISAPI和Worker Process之间的通信通过他们之间的一组Pipe实现 同样处于Performance的原因 ASP NET ISAPI 通过异步的方式将Request 传到Worker Process 并获得 Response 但是 Worker Process 则是通过同步的方式向 ASP NET ISAPI 获得一些基于 Server 的变量
IIS 的 请求处理过程
IIS 的 请求处理过程
对图的解释
IIS x 是通过 InetInfo exe 监听 Request 并把Request分发到Work Process 换句话说 在IIS x中对Request的监听和分发是在User Mode中进行 在IIS 中 这种工作被移植到kernel Mode中进行 所有的这一切都是通过一个新的组件 sys 来负责注 为了避免用户应用程序访问或者修改关键的 *** 作系统数据 windows提供了两种处理器访问模式 用户模式(User Mode)和内核模式(Kernel Mode) 一般地 用户程序运行在User mode下 而 *** 作系统代码运行在Kernel Mode下 Kernel Mode的代码允许访问所有系统内存和所有CPU指令在User Mode下 sys接收到一个基于 aspx 的 request 然后它会根据IIS中的 Metabase 查看该基于该 Request 的 Application 属于哪个Application Pool 如果该Application Pool不存在 则创建之 否则直接将 request 发到对应Application Pool 的 Queue中每个 Application Pool 对应着一个Worker Process w wp exe 毫无疑问他是运行在User Mode下的 在IIS Metabase 中维护着 Application Pool 和worker process的Mapping WAS(Web Administrative service)根据这样一个mapping 将存在于某个Application Pool Queue的request 传递到对应的worker process(如果没有 就创建这样一个进程) 在 worker process 初始化的时候 加载ASP NET ISAPI ASP NET ISAPI 进而加载CLR 最后的流程就和IIS x一样了 通过AppManagerAppDomainFactory 的 Create方法为 Application 创建一个Application Domain 通过 ISAPIRuntime 的 ProcessRequest处理Request 进而将流程进入到ASP NET >
以上就是关于比较IIS5、IIS6、IIS7的ASP.net请求处理过程全部的内容,包括:比较IIS5、IIS6、IIS7的ASP.net请求处理过程、iis应用程序池中的最大工作进程数,是什么意思用最通俗,最直白的语言给我解答,谢谢!、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)