//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 } }