Fork me on GitHub

我对asp.net管道模型的理解

参考:http://www.tracefact.net/tech/001.html
https://www.xuebuyuan.com/zh-hant/470245.html

我们的web程序被iis启动之后,它是处于什么样的状态的,它应该是由.netframework这个平台下的某个程序 ——A程序激活的吧,这个程序会把我们写的网站处于一直运行的状态吗?还是说只有请求来临的时候,才激活我们的网站呢?我觉得吧,请求那么多,每次来一个都需要程序去激动我们的状态肯定太慢了,所以应该是这个网站被A程序激活后,就一直运行在了.net平台之下,然后来一个请求就创建一个线程来处理请求,而这个线程里就是一个独立的Appdomain吧,它里面就是有一个完整的管道处理流程。

其实iis与.net下的web组件之间的通信是靠一个接口aspNet_isapi(Internet Server Application Programe Interface,互联网服务器应用程序接口)来相互通信的,这个接口把请求封装成httpRuntime能认识的HttpWorkerRequest对象,放在一个容器里面。再由.netframework的A程序分配线程去这个容器里取HttpWorkerRequest对象给我们的HttpRuntime对象,之后由HttpRuntime的processrequest开始我们的管道处理流程。

管道处理流程中,与我们程序最有关系的就是Module和Handler了,这两个可以让程序员自己扩展我们的程序,module的意义是每个请求都会通过它,module里面大概有19个事件可以自定义代码。而handler是对特别的路径、文件、请求方式做过滤的。

 

posted @ 2020-05-28 15:42  HelloLLLLL  阅读(235)  评论(0编辑  收藏  举报