回顾一般处理程序

今天帮同学解答一个问题的时候,涉及到一般处理程序(末尾的链接讲了IHttpHandler 管道处理)了,之前在大三的时候接触过,以后再也没有接触过;现在做个笔记总价一下;

在一般处理程序里,有个IsReusable,百度翻译:可重用的

IsResuable属性指示是否可以重用于其他IHttpHandler实例;

如果设置为true,能提高性能,但要注意线程之间安全性问题 ;如果设置为false,则线程是安全的

一般情况下,都会设置成false,虽然不是性能最优,但是最安全(反正就是设置为false,就是保证安全之类的;)
1 public bool IsReusable
2         {
3             get
4             {
5                 return false;
6             }
7         }

当我们打开一个网页的时候,不管请求的是静态的还是动态的资源,IIS会根据ISAPI(微软和Process软件公司联合提出的Web服务器上的API标准)这一标准,将请求的文件根据文件后缀名的不同,转 交给不同的处理程序。打开IIS可以看到,大部分文件都交给了aspnet_isapi.dll进行处理,但是aspnet_isapi.dll不可能对 所有文件都进行一样方式的处理。

为了了解aspnet_isapi.dll如何进行进一步处理的,我们可以打开C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\Web.config文件。可以看到,在<httpHandler>节点中将不同的文件类型映射给不同的handler去处理;

一般的html文件请求后台可以请求一般处理程序;

一般处理程序的启动函数是:

 1 namespace WebApplication1
 2 {
 3     /// <summary>
 4     /// 通常是实现IHttpHandler接口,因为不必继承自Page类,
 5     /// 所以没有那么多事件需要处理,不必消耗太多资源,所以性能方面要比aspx高
 6     /// </summary>
 7     public class Handler1 : IHttpHandler
 8     {
 9 
10         //ProcessRequest这个方法虽然是无返回值,但是我们可以通过context.Response.Write("字符串类型")向外输入数据
11         //还有就是这个方法,就是程序的‘主函数’,程序的运行从这里开启;
12         public void ProcessRequest(HttpContext context)
13         {
14             context.Response.ContentType = "text/plain";
15 
16             context.Response.Write("Hello World");
17         }
18 
19         public bool IsReusable
20         {
21             get
22             {
23                 return false;
24             }
25         }
26     }
27 }
View Code

  

猜你喜欢

转载自www.cnblogs.com/ZkbFighting/p/8965602.html