设为首页 收藏本站
查看: 1211|回复: 0

[经验分享] 从IIS到PAGE对象:ASP.NET之旅

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-8-14 11:46:45 | 显示全部楼层 |阅读模式
今天上午写了一会儿代码,松一口气,想想这几天看<深入剖析ASP.NET组件设计>似乎有颇多领悟
第三章讲述了从请求一个ASPX页面到产生HTML代码并发送给客户端的全过程
整个过程好似一个接力赛一般,而客户端的请求就是那根接力棒,且看IIS和ASP.NET是如何处理的呢,下面的步骤是细化和分解了的一个请求以及处理过程
1,客户端输入网址
2,IE请求DNS解析并定位到目标主机发送请求
------------------------------以上发生于客户端---------------------------
(我有时候甚至觉得浏览器这个说法不太恰当,IE更像一个客户代理的角色,想想看,帮客户发送请求,把请求的反馈展示给客户,这不是代理角色的功能吗?)
3,服务器端的IIS守护进程接受到请求
4,根据域名找到对应主机头的站点(WEB应用)
5,根据请求页面文件的扩展名找到相应的ISAPI RUNTIME
6,ISAPI RUNTIME接受请求,连带请求的数据一起转发给ASP_WP(ASP.NET的工作进程)
-----------------------------以上由IIS和ISAPI扩展完成---------------------------------------------------------
(比较像接力赛吧请求-->IIS-->ISAPI-->ASP_WP)
7,ASP_WP会建立或选择一个ASP.NET应用程序来处理请求(初次请求或者在无任何请求发生后的一段时间后再次请求,才会建立应用,平时应用一旦建立,除非内存紧张或闲置一段时间,否则,此应用一直存在)
8,ASP_WP将请求再转至应用程序的HTTPRUNTIME
--------------------------以上由ASP_WP工作进程完成----------------------------------------------
9,接下来,HTTPRUNTIME开始处理请求,HTTPRUNTIME负责建立HTTPCONTEXT对象,HTTPCONTEXT对象管理着SESSION,HTTPRUNTIME会用访问者信息填充HTTPCONTEXT
10,HTTPRUNTIME接着建立HTTPAPPLICATION,这个过程是通过向HTTPAPPLICATIONFACTORY请求得到的
11,HTTPRUNTIME接着加载各种HTTPMODULE,比如SESSION MODULE
--------------------------以上由HTTPRUNTIME负责完成----------------------------------------------------------------------
12,HTTPAPPLICATION被建立后,权力就交到它手中了,它负责加载各种HTTPHANDLE
13,HTTPAPPLICATION根据页面类型找到相应的HANDLEFACTORY,比如ASPX页面,就对应着PAGEHANDLEFACTORY
14,HANDLEFACTORY通过解译,然后再编译相应的ASPX页面,创建出一个PAGE对象
15,HTTPAPPLICATION运行此PAGE对象,产生相应的HTML页面然后发送给客户端
-----------------------以上上HTTPAPPLICATION完成----------------------------------------------------
可以看出,每一段都有一个主控对象,这个对象的功能就是负责创建或者请求创建用于处理请求的下一个对象,并将请求转发给它
整个过程请求由IIS-->ISAPI-->ASP_WP工作进程-->HTTPRUNTIME-->HTTP APPLICATION一步一步完成
而且你会发现,世界上充满了服务与被服务,以及流式层次式的服务模型
不管ISO7层模型也好
还是WEB服务器的运作原理
还是ASP.NET的处理过程中
显著的三个特点就是:服务型(总有一个对象为一些对象提供服务),流式(数据或信息,总是沿着某条固有路线在流动),层次式(服务总是一层一层进行,而且越来越接近于目标)
这好比,你要吃一个面包,要经过以下过程:
农民收割小麦(最低等)-->小麦被送到加工厂加工成页粉(精细了一些吧)-->面包坊买来面粉做成面包-->面包送进商场-->你买到了面包
整个过程中,前者总是为后者提供东西(数据),后者总是为前者提供服务(服务)
另外,你的目标是面包,因此,你只会向商场买,你不会向农民或者加工厂买,虽然一开始看起来,这东西(数据)离你的想象差距很大,简直是不着边,可是,随着一层一层对数据的加工,你最终得到了想要的,并且,数据每流入下一层,就看起来更接近你的要求了吧

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-98919-1-1.html 上篇帖子: .net对IIS的管理 下篇帖子: 备份IIS
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表