模拟实现ASP.NET框架的基本功能(一)
2017-03-08 23:34
429 查看
//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
}
}
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
}
}
相关文章推荐
- 模拟实现ASP.NET框架基本功能(三)
- ASP.NET SingalR + MongoDB 实现简单聊天室(一):搭建基本框架
- 基于ASP.NET+easyUI框架实现图片上传功能(表单)
- ASP.NET中的GridView控件功能基本实现
- 通过ASP.NET Ajax技术模拟实现NBA比赛文字直播功能
- 简单的asp.net模拟邮箱系统基础实现(二 (1)具体版块功能的实现及关键代码之注册页面)
- 【无私分享:从入门到精通ASP.NET MVC】从0开始,一起搭框架、做项目(5.1) 登录功能的实现,开始接触Spring IOC、DI
- ASP.NET实现Cookie功能的三个基本操作(写入,读取,删除)
- ASP.NET实现Cookie功能的三个基本操作(写入,读取,删除)
- 简单的asp.net模拟邮箱系统基础实现(二 (2)具体版块功能的实现及关键代码之登陆页面)
- 用三层架构实现登录,并模拟后台审核功能,未审核成功不予登录(ASP.NET)
- ASP.NET实现Cookie功能的三个基本操作(写入,读取,删除)
- 基于ASP.NET+easyUI框架实现图片上传功能(判断格式+即时浏览 )
- 基于ASP.NET+easyUI框架实现图片上传功能(表单)
- asp.net frameset 框架页面伸缩功能实现
- 简单的asp.net模拟邮箱系统基础实现(二 (3)具体版块功能的实现及关键代码之母版页和写信界面)
- 基于ASP.NET+easyUI框架实现图片上传功能(判断格式+即时浏览 )
- 【无私分享:从入门到精通ASP.NET MVC】从0开始,一起搭框架、做项目(5.5) 登录功能的实现,完善登录功能
- 简单的asp.net模拟邮箱系统基础实现(二 (4)具体版块功能的实现及关键代码之收件和写信)
- ASP.NET中用C#类实现Javascript的基本功能