//1.0 IsApiRuntime
namespace 小型IIS服务器
{/// <summary>
/// 与IIS打交道 负责接收用户向服务器发送的请求报文 并将服务器的响应报文送往IIS
/// </summary>
public class IsApiRuntime
{
/// <summary>
/// 返回服务器的响应报文
/// </summary>
/// <param name="requestMsg"></param>
/// <returns></returns>
public static byte[] ProcessRequest(string requestMsg)
{
return HttpRuntime.ProcessRequest(requestMsg);
}
}
}
//2.0 HttpRuntime
namespace 小型IIS服务器
{
/// <summary>
/// asp.net 处理框架的核心
/// </summary>
public class HttpRuntime
{
public static byte[] ProcessRequest(string requestMsg)
{
//1.0 实例化HttpContext (上下文)
HttpContext context = new HttpContext(requestMsg);
//2.0 创建HttpAplication对象 对象名字为applicationInstance 以接口IHttpHandler的形式返回
IHttpHandler applicationInstance = HttpApplicationFactory.GetApplicationInstance();
//3.0 开始执行管道事件
applicationInstance.ProcessRequest(context);
return context.Response.GetResponseMessage();
}
}
}
//3.0 HttpContext
namespace 小型IIS服务器
{
/// <summary>
/// 负责管理用户向服务器发送的请求报文数据 以及 服务器向用户发送的响应数据 专业名词:Http上下文
/// </summary>
public class HttpContext
{
#region 0.0 构造函数
/// <summary>
/// 用户向服务器发送的请求报文
/// </summary>
private string requestMsg;
public HttpContext() { }
/// <summary>
/// 有参构造方法 将请求报文传进 并初始化上下文中的属性对象
/// </summary>
/// <param name="requestMsg"></param>
public HttpContext(string requestMsg)
{
this.requestMsg = requestMsg;
//初始化上下文中的属性对象
request = new HttpRequest(requestMsg);
response = new HttpResponse(request);
server = new HttpServerUtility();
}
#endregion
#region 1.0 Http上下文中的属性
HttpRequest request;
/// <summary>
/// 用户向服务器发送的请求报文数据
/// </summary>
public HttpRequest Request
{
get { return request; }
set { request = value; }
}
HttpResponse response;
/// <summary>
/// 服务器响应数据
/// </summary>
public HttpResponse Response
{
get { return response; }
set { response = value; }
}
HttpServerUtility server;
/// <summary>
/// 帮助类
/// </summary>
public HttpServerUtility Server
{
get { return server; }
set { server = value; }
}
#endregion
#region 2.0 RemapHandler 接收第8个事件创建好的页面对象
IHttpHandler remapHandler;
/// <summary>
/// RemapHandler 接收第8个事件创建好的页面对象
/// </summary>
public IHttpHandler RemapHandler
{
get { return remapHandler; }
set { remapHandler = value; }
}
#endregion
}
}