这是三篇文章中的第一篇IIS篇,介绍了IIS的体系结构。另外两篇为Server篇和Browser篇,分别介绍了可插式Web应用程序在服务器端和客户端的实现,重点描述了一种可独立构建、替换和纠错的程序设计风格。这种程序设计风格对修改是封闭的,易于演化积累,易于测试。
背景知识
- 设计模式 Command模式、Singleton模式、Factory模式、Builder模式、Facade模式、Adapter模式、Chain Of Responsibility模式和Observer模式
- HTTP协议 HTTP1.0/1.1
- OOP and JavaScript
- ASP .Net体系结构 IHttpModule IHttpHandler
- 数据库访问 最小化更换Data Provider的成本
目标
探索可独立构建、替换和纠错的程序设计风格。
IIS篇
IIS相关的主题非常丰富,这里只是给出了一些要点。详细内容可以参考A low-level Look at the ASP.NET Architecture和ASP.NET Internals – IIS and the Process Model两篇文章。
IIS 5.x Process Model
IIS 6.x Process Model
我们从上面两图比较一下IIS 5.x和IIS 6.x,可见IIS 6.x将IIS 5.x中的inetinfo.exe和aspnet_wp.exe两进程的功能整合到了w3wp.exe一个进程中。同时增加了一个kernel,用来将请求分发给不同的应用程序池。应用程序池为应用程序的隔离提供了一种机制,使得不同的应用程序池中的应用互不影响,这比IIS 5.x进步了一大节。
ASP.Net Pipleline Request Flow
图中涂黑的地方我们可以做些工作。