您的位置:首页 > 理论基础 > 计算机网络

http的请求和响应过程2

2013-03-03 10:53 302 查看
书接上文,本篇为鄙人阅读各位前辈的文章,根据自己的理解拙记一下。。。。。。。。。

上文中最大化的概括了一次http请求和响应,本节就来分段详细分析

1、在客户端浏览器中输入网址之后是如何找到网站所在服务器

    客户端在浏览器中输入网址http://www.xxxxxx.edu.cn并提交之后,首先由DNS服务器找到网址所在服务器的IP,找到IP之后要判断IP是否在同一个子网络,如果在同一子网络,则直接向服务器发送数据包,如果不是同一子网络,将数据包发送到客户端所在子网络的网关,由网关找到服务器所在的网关,网关之间通过路由的方式发送,服务器所在网关接收到数据包之后再找到服务器所在位置,将数据包发送给服务器。

自定义一个处理请求的Handler

//Web.Config文件中
<httpHandlers>
<add path="*.aspx" verb="*" type="SearchInfo.Handle"/>
<add path="*.ascx" verb="*" type="SearchInfo.Handle2"/>
</httpHandlers>
//SearchInfo是命名空间,Handle是自己定义处理请求的类。
//即:当一个请求Url后缀是 .aspx 时,就会交给自定的Handle类去处理

namespace SearchInfo
{
/// <summary>
/// Handle 的摘要说明
/// </summary>
public class Handle:IHttpHandler
{
public Handle()
{
//
// TODO: 在此处添加构造函数逻辑
//
}

#region IHttpHandler 成员

public bool IsReusable
{
get { throw new Exception("The method or operation is not implemented."); }
}

public void ProcessRequest(HttpContext context)
{
HttpContext.Current.Response.Write("自定义Handler处理请求aspx");
}

#endregion
}
}


所以,我们应该这样理解HttpHanlder:一个HttpHanlder用于响应一类特定的请求。


在请求的处理过程中,HttpApplication对象主要扮演着控制管线处理流程的作用,它负责推进整个处理流程, 除了在不同阶段引发不同的事件外(供HttpModule使用),HttpApplication对象还会根据当前请求寻找一个合适的IHttpApplicationFactory实例, 并最终得到一个IHttpHandler的实例用于处理请求。


      

            

         

当每次请求到来时要穿过httpModule到达httphandler,以便被响应。

而httpmodule就被配置在httpApplication中。

               


 即流程为:


每当请求Web服务器上的某些信息时,该请求首先会到达Http.SYS,然后Http.SYS将其发送到相应的应用程序池,应用程序池传给工作进 程并加载ISAPI扩展,然后HttpRuntime对象会被创建,并通过HttpModule和HttpHandler处理请求。

   


对于详细的HttpHandler和HttpModule可以在 Fish Li 的博客中:

用Asp.net写自己的服务框架选择HttpHandler还是HttpModule?

    学习参考:/article/4819749.html

         http://msdn.microsoft.com/zh-cn/library/ms178473(v=vs.80).aspx msdn解释

         http://kb.cnblogs.com/page/144577/

         http://kb.cnblogs.com/page/140611/

         /article/5578559.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: