网站应用程序概要
阐述
网站应用程序工作过程:
- 通过浏览器向服务器发送请求(HTTP协议)
- 服务器接受浏览器的请求,处理请求回发服务器响应
- 浏览器接受响应展示
ASP.Net
Asp.Net 是用于开发网站的,本身并不是一个完整的程序,需要部署到服务器。
- 服务器(如IIS)用于监听浏览器的请求,服务器可以直接响应静态资源(如.html和.css)
- 动态资源由Asp.net通过程序动态生成Http响应(如动态生成html页面),再由服务器发回到流程器
所以Asp.Net 应用程序是用于处理Http 请求的程序,其中WebForm和MVC是在asp.net基础上的两种解决方式
HTTP服务
这里简单写个http服务,方便大家理解。浏览器输入http://localhost:8085/
回车得到响应
if (!HttpListener.IsSupported)
{
Console.WriteLine("Not Support");
}
string[] prefixes = new string[] { "http://localhost:8085/" };
HttpListener listener = new HttpListener();
foreach (string s in prefixes)
{
listener.Prefixes.Add(s);
}
//开启Http服务监听
listener.Start();
Console.WriteLine("Listening...");
while (true)
{
//接受客户端请求数据
HttpListenerContext context = listener.GetContext();
// 提取客户端请求对象
HttpListenerRequest request = context.Request;
// 服务端响应
HttpListenerResponse response = context.Response;
string html = @"<!DOCTYPE html>
<html>
<head>
<title>From HttpListener Server</title>
</head>
<body>
<h1>Hello,World.</h1>
</body>
</html>";
response.ContentLength64 = Encoding.UTF8.GetByteCount(html);
response.ContentType = "text/html;charset=UTF-8";
//out stream
Stream output = response.OutputStream;
StreamWriter writer = new StreamWriter(output);
writer.Write(html);
writer.Close();
if (Console.KeyAvailable)
{
break;
}
}
listener.Stop();
程序注意点:
- 这里直接用的
HttpListener
类监听的,其之前有两个基础本:第一个版本:通过Socket
完成网络通信;第二个版本在第一个基础上,TcpListener
对象,通过TCP协议。版本从网络协底层到高层;Socket
网络层编程(可以设置TCP协议或UDP协议通信),Http协议是在TCP协议上的应用层协议 Stream
概念的理解,Stream
的概念太抽象。
- 用途:从一种硬件向另外硬件传输数据建立的通道。如文件流(主要将硬盘数据读取到内存,或内存数据写入硬盘)
- 流:应考虑输入源和输出地。如控制台应用程序 键盘 默认为输入源, 屏幕 为流输出
- 流是一种通道概念,可以通过读取流和写入流完成信息交流,Asp.net 通过读取流获取客户端请求,写入流响应请求
StreamWriter
这里用的装饰者模式向流写入数据,在WebForm中通过这种方式生成html标签