asp了解
第 1 节: 1-ASP.Net课前说明
1、网站目录一般不建在桌面上,有时候可能会涉及 权限的问题;
2、逻辑代码分两块运行的,一部分运行在服务器端,一部分运行在浏览器端中;
3、使用托控件,不能很好地梳理浏览器和服务器代码的优化。
4、安全性问题不高。
5、ASP.net Webform不会在项目中重度的使用。轻量级的Webform(repetor)还是会用的;
6、学习路线:
ASP.net(Core内核)--->Asp.net WebForm--->ASp.mvc(大项目,互联网项目,都是用的这个);
7、本次学习。用Chrome 谷歌浏览器;(没有IE版本的问题)(调试工具好用);
第 2 节: 2-浏览器和服务器的交互
1、注册表单,点击(谷歌浏览器)F12开发者工具。选择Network选项;
2、临时停车牌子,清除信息(清楚信息,只是清除了,浏览器请求的历史记录);
3、状态码:301重定向;
4、先加载Html标签,如果有js,css,图片,就最后加载;
5、选中一个请求的页面,post.请求过程中,可以在Form Data里查看表单数据;切换到Response产看,服务器的响应的内容;
第 3 节: 3-Socket简介和浏览器代码讲解
1、写简单的浏览器(服务器),了解浏览器(服务器)内部做了什么(尤其是对网站的优化,和安全性问题有助于理解);
2、Socket是进行网路编程的类,通过Socket 可以在两台计算机之间进行网络通讯;
3、能够看懂代码。能够修改一些代码 ,就ok, Socket不是本次学习重点;
4、浏览器和网站服务器之间都是Socket网络通讯;
5、向服务器发出指令:
GET/index.html HTTP/1.1
(表示请求)(请求的页面)(协议、版本号1.1(最新的是2.0))
6、Host:127.0.0.1:8080
<主机名><ip地址><端口号>
7、每个服务器软件监听一个端口号,别的软件就不能监听这个端口,发送给这个端口的数据只会被这个服务器软件软件收到;
8、每个指令后回车一次,最后一次的回车表示指令结束;
9、简易浏览器代码思路:
1)new出来一个socket对象,(构造函数,(两个参数))《不是重点》;
2)连接服务器,服务器的ip,端口号;http端口默认80;
3)NetworkStreame也是继承Stream类,只是它的构造函数,接收socket这个对象;
4)Stream实现了Idisposebeabe接口,使用using释放资源;
5)NetworkStream(读写socket通讯数据的流)逐字节的操作类,所以用StreamWrite 这样字节级别的类。来发送指令;
6)socket写完毕,开始读取socket,,,,StreamReader(读取完毕,关闭连接!)
第 4 节: 4-自己写浏览器代码实战
//在VS2010及以下,要用:new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp) using System; using System.Collections.Generic; using System.IO;//StreamWriter using System.Linq; using System.Net;//DnsEndPoint using System.Net.Sockets; using System.Text; using System.Threading.Tasks; namespace 简易浏览器 { class Program { static void Main(string[] args) { Socket socket = new Socket(SocketType.Stream, ProtocolType.Tcp); socket.Connect(new DnsEndPoint("127.0.0.1", 80));//连接服务器的ip地址,端口号 //写入套接字 using (NetworkStream netstream = new NetworkStream(socket)) using (StreamWriter writer = new StreamWriter(netstream)) { writer.WriteLine("GET /index.html HTTP/1.1"); // writer.WriteLine("GET / index.shtml HTTP/1.1");//访问如鹏主页 writer.WriteLine("Host:127.0.0.1:8080"); //writer.WriteLine("Host:http://www.rupeng.com"); writer.WriteLine();//空行表示,指令结束 } //读取套接字 using (NetworkStream netstream = new NetworkStream(socket)) using (StreamReader reader = new StreamReader(netstream)) { string line; while ((line=reader.ReadLine())!= null) { Console.WriteLine(line); } } socket.Disconnect(false); Console.ReadKey(); } } } 执行结果: HTTP/1.1 200 OK Content-Type: text/html Last-Modified: Thu, 28 May 2015 06:07:08 GMT Accept-Ranges: bytes ETag: "b4ea487c99d01:0" Server: Microsoft-IIS/7.5 X-Powered-By: ASP.NET Date: Thu, 28 May 2015 06:12:09 GMT Content-Length: 279 <!Doctype html> <html xmlns=http://www.w3.org/1999/xhtml> <head> <meta http-equiv=Content-Type content="text/html;charset=utf-8"> </head> <title></title> <body> <h1 align="center" font-color:red>??????asp.net?????????</h1> </body> </html>
第5节:浏览器是什么?
1、浏览器就是一个Socket网络客户端,主要帮助用户请求网站服务器上的内容,并且把服务器返回的内容渲染(绘制)为图形化内容。
2、通过“开发人员工具”查看:
3、 用户在浏览器输入http://www.rupeng.com/index.shtml
3、1、浏览器向DNS服务器请求www.rupeng.com的IP地址,
4、然后浏览器向rupeng服务器发出Socket请求“GET /index.shtml HTTP/1.1”等,
5、服务器把index.shtml的内容返回给浏览器,
6、浏览器解析HTML内容绘制页面,
7、遇到img则浏览器再次发出Socket请求获得图片内容,然后绘制图片,
8、遇到css、js文件等也同样如此。