ASP.NET Process Model之一 IIS 和 ASP.NET ISAPI
文件大小: 86k
源码售价: 10 个金币 积分规则     积分充值
资源说明:我觉得这个问题涉及到IIS和ASP.NETASP.NET Runtime的处理模型的问题,并不是三言两语就能说清楚的,所以决定写这样一篇介绍IIS和ASP.NET Runtime Process Model的文章,谈谈我对此的一个粗浅的认识,如果有什么不对的地方,希望大家及时指正。 ISAPI是ASP.NET在IIS 5.x中的接口,它是一个动态链接库(DLL),用于接收IIS转发的HTTP请求并将其传递给ASP.NET运行时。aspnet_isapi.dll是这个ISAPI扩展的具体实现,它负责与IIS的通信以及与ASP.NET运行时的交互。 在IIS 5.x中,当请求到达aspnet_isapi.dll后,ISAPI扩展会启动或复用一个名为aspnet_wp.exe的工作进程(Worker Process)。这个工作进程是由ASP.NET运行时管理的,它包含了.NET Framework的公共语言运行时(CLR)和ASP.NET的相关组件。aspnet_wp.exe会创建一个应用程序域(AppDomain),并在其中执行ASP.NET页面或服务的代码。每个ASP.NET应用程序都有自己的工作进程,它们独立运行,确保了应用间的隔离。 aspnet_wp.exe与InetInfo.exe之间的通信是通过IIS的ISAPI过滤器和扩展机制完成的。IIS接收到HTTP请求后,根据请求的目标文件类型查找相应的ISAPI扩展,然后通过管道机制将请求数据传递给aspnet_isapi.dll。aspnet_isapi.dll再将请求数据封装成适当的对象,如HttpRequest和HttpResponse,然后交给ASP.NET运行时进行处理。 ASP.NET运行时接收到请求后,会触发一系列处理步骤,包括但不限于以下: 1. **模块处理**:ASP.NET的管道模型(Pipeline)由一系列HttpModule组成,它们按照配置的顺序对请求进行预处理。这些模块可以实现身份验证、URL重写、缓存等功能。 2. **页面生命周期**:对于ASP.NET页面,系统会创建Page对象,执行初始化、加载视图状态、绑定事件、回发数据验证、呈现控件等一系列操作。 3. **业务逻辑和数据访问**:在此阶段,开发者编写的代码会被执行,可能涉及数据库查询、业务逻辑处理等。 4. **呈现响应**:一旦业务逻辑处理完成,ASP.NET将生成HTML响应,并通过HttpResponse对象返回给客户端。这包括设置响应头、添加cookie、写入HTML内容等。 5. **清理和卸载**:请求处理完成后,ASP.NET会释放相关资源,包括关闭数据库连接、清理内存等。 在IIS 6中,处理模型有所改变,引入了新的Application Pool概念,多个应用程序可以共享一个工作进程,提高了资源利用率和性能。此外,IIS 6的进程管理更加灵活,可以根据需要自动回收和重启工作进程,以保持服务的稳定性和响应性。 总结来说,ASP.NET Process Model是ASP.NET应用程序在IIS上运行的核心机制,它涉及到IIS的请求处理、ISAPI扩展的使用、以及ASP.NET运行时的内部工作流程。理解这个模型对于优化ASP.NET应用程序的性能、调试问题以及设计高效的应用架构至关重要。随着技术的发展,IIS 7及更高版本的处理模型又有新的改进,例如集成模式使得IIS和ASP.NET更紧密地协同工作,但基本原理依然沿袭了IIS 5.x和6的设计思路。
本源码包内暂不包含可直接显示的源代码文件,请下载源码包。