asp.net请求响应模型原理随记回顾

系统 2104 0

asp.net请求响应模型原理随记回顾_第1张图片

 

asp.net请求响应模型原理随记回顾:

根据一崇敬的讲师总结:(会存在些错误,大家可以做参考)

1.-当在浏览器输入url后,客户端会将请求根据http协议封装成为http请求报文。并通过主socket创建新的socket对象传输请求报文。(请求服务器端的端口为80端口)

2.当socket到达80端口后,这时监听80端口的socket会创建新的socket代理来,开辟新的socket端口,进行通信,请求报文信息会被操作系统的内核模式kernalModel的http.sys(驱动级别)进行解析并负责将请求分发具体的处理程序。(http.sys其实可以看做是插件模型,即管道模型,通过系统注册表向这个管道注册处理程序,这样请求信息就会被注册处理程序截获过滤执行)。

3.http.sys解析出请求时80端口并根据注册表找到对应处理程序,之后交给了寄宿在svchost.exe中的w3svc服务,它会判断请求文件的后缀,如果是静态页,js等静态资源,便直接在iis内部处理再通过通信端口返回响应信息。如果是.aspx,就会找到相应的处理程序(可以看出iis也是插件模型)即aspnet_isapi.dll(非托管用c++写的)。

4. aspnet_isapi.dll会通过ecb操作系统句柄(标志系统一些资源)这样托管环境就能访问报文信息(可以看出aspnet_isapi.dll是托管和非托管环境的一个桥梁);之后传给isapiruntime,通过ecb指针创建一个httpworkrequest对象(对http报文做最初的封装处理)之后再交给httpruntime对象,它会对httpworkrequest对象做进一步封装,通过创建httpcontext,将httpworkrequest封装到httpcontext的httprequest对象中(返回的相应报文会封装到httpcontext的httpresponse中)。

5.之后HttpApplicationFactory创建一个HttpApplication管道(这里使用了对象池,因为HttpApplication通过反射创建好资源,如果对象池中有的话,直接取出来,和线程池,应用程序池,一般处理程序池都是一样的,httpapplication管道当然也是插件模型了,通过httpModule注册事件),这时httpcontext会流经这个管道,注册的处理程序便可以截获过滤httpcontext了。(httpallication共有23个事件,19个事件可以让开发者使用,-httpapplication的第7个事件获得缓存,8事件:创建最终处理当前请求的handler实例;在11和12个事件之间会调用执行一般处理程序(handler的pr方法处理请求);)

asp.net请求响应模型原理随记回顾_第2张图片

 

 

asp.net请求响应模型原理随记回顾


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论