阐述
网站应用程序工作过程:
- 通过浏览器向服务器发送请求(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标签