ASP.NET请求过程-基本过程
输⼊域名->DNS解析->指定IP 服务器(如果⽹页直接输⼊IP地址则直接到服务器)->请求到达服务器->HTTP.SYS接受HTTP请求->转发给ISAPI(是⼀个内置服务,他是IIS服务器的⼀个组件),检查当前请求的后缀。(后缀的配置在 处理程序映射 服务⾥⾯)->根据后缀(asp mvc默认管道给他添加⼀个asd后缀) 管道通信给aspnet_isapi(注意这个是给sap⽤的 其他的还有php_isapi
java_isapi等)->把⽹站的请求封装为httpworkrequest->然后⼜把httpworkerequest传给httpruntime(httpruntime是可以再程序中访问到的,他是asp程序的⼊⼝),然后httpruntime创建⼀个appdomain->然后到达httpapplicationfactory,他是http应⽤程序的⼀个⼯⼚->他会创建出⼀个httpapplication(管道模型就是来⾃他)
推荐⽂章
上图(来⾃⽹络)中httpruntime和httpapplicatonfactory是浅颜⾊,因为他们是单例的。说明这两个对象在程序中只有⼀次创建。
每次过来请求都会创建⼀个httpapplication,但是httpapplicationfactory内部维护了⼀个对象池,每次创建的httpapplication使⽤完之后不会马上被销毁。会放在池⼦⾥。
关键字解释
应⽤程序池:IIS中的概念,就是⽹站运⾏时的内存空间。
应⽤程序域::为了保证代码的键壮性CLR希望不同服务功能的代码之间相互隔离,这种隔离可以通过创建多个进程来实现,但操作系统中创建进程是即耗时⼜耗费资源的⼀件事,所以在CLR中引⼊了AppDomain的概念,AppDomain主要是⽤来实现同⼀进程中的各AppDomain之间的隔离
HttpRuntime:ttpRuntime在ASP.NET处理请求中负责的是创建HttpContext对象以及调⽤HttpApplicationFactory创建HttpApplication。
HTTPApplicationFactory:创建HttpApplication,对HttpApplication池管理。
HttpApplication:就是⼀个⽤户请求。
HttpContext:⽤户请求以及后台处理的信息都放在这个类型⾥⾯,⾥⾯包含了⽤户请求过程遇到的事件(分别可以通过Module和global.asax指定)
aspnet和net的区别Module:对HttpApplication中事件 进⾏注册。是⼀个观察者模式(加配置⽂件)。
Handler:所有的请求都回到Handler(⽆论是原来的webform 还是现在的mvc。就连⼀个图⽚都是的。)。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论