一 ISAPI模型
web服务器主要是一个服务器应用程序,使用了大量的internet协议,而且他通常还实现了自己的应用程序编程接口,最早的是CGI,现在,IIS中的ISAPI也是一个这样的接口。
ISAPI模型
1 使用该模型时,IIS不为每个请求生成一个单独的进程,而是将ISAPI组件加载到自己的进程中,接着调用该DLL上的入口点来进行处理
2 ISAPI模型组件的结构:该DLL主要有2个函数,GETEXTENSIONVERSION和GETEXTENSIONPROC,前者由于加载服务器扩展时,设置ISAPI服务器扩展的版本和名称,且他只被调用一次。
3 ISAPI扩展是CGI应用程序在IIS进程内的对应部件。他是一个在IIS或另一宿主应用程序中的DLL,每次调用时生成一个实例,修改便重新加载。
4 ISAPI筛选器是在服务器处理服务器事件时对他们进行截取的组件。
二 HTTP处理程序
概念:他是一个实现了IHTTPHANDLER接口的类,用于对请求的资源进行真正的处理,他是.NET组件。
ASP.NET有自己内部的HTTP处理程序,其中aspx页面就是一个HTTP处理程序,同时,我们可以自定义HTTP处理程序以处理我们的请求。
自定义HTTP处理程序的实现:
1 实现IHTTPHANDLER接口的REQUESTPROC方法。
2 在WEB.CONFIG文件进行注册。
三 HTTP模块
概念:他是实现了IHTTPMODULE接口的类,负责监听应用程序级事件,同样是一个.NET组件。
ASP.NET有自己内部的HTTP模块,同时,我们可以自定义HTTP模块。
自定义HTTP模块的实现:
1 实现接口的2个方法,int()和dipose(),前者主要初始化模块,定义监听事件,后者是清除出了内存以为的所有资源。
其实HTTP处理程序和HTTP模块就如同ISAPI扩展和ISAPI筛选器,只不过前者是.NET组件,后者是CGI,都是一种编程模型。