前进中的蜗牛

番茄大叔

水滴穿石,非一日之功;没有量变,何来质变。

网站应用程序概要

阐述

网站应用程序工作过程:

  1. 通过浏览器向服务器发送请求(HTTP协议)
  2. 服务器接受浏览器的请求,处理请求回发服务器响应
  3. 浏览器接受响应展示

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的概念太抽象。
  1. 用途:从一种硬件向另外硬件传输数据建立的通道。如文件流(主要将硬盘数据读取到内存,或内存数据写入硬盘)
  2. 流:应考虑输入源和输出地。如控制台应用程序 键盘 默认为输入源, 屏幕 为流输出
  3. 流是一种通道概念,可以通过读取流和写入流完成信息交流,Asp.net 通过读取流获取客户端请求,写入流响应请求
  4. StreamWriter 这里用的装饰者模式向流写入数据,在WebForm中通过这种方式生成html标签
posted @ 2018-05-29 18:31  LoveTomato  阅读(248)  评论(0编辑  收藏  举报