ASP.NET入门经典

快速导航

第一章 ASP.NET 6.0 入门

1.1 ASP.NET vNext简介

.NET Framework在2002年发布了第一版,ASP.NET允许更清晰地分隔代码隐藏(处理过程的代码)和标记(建立显示界面的代码)。

在2008年,微软推出了一个新的框架支持内容创建和导航,也就是ASP.NET MVC。

Version Release .NET Framework
MVC 1 2009.03
MVC 2 2010.03
MVC 3 2011.01 .NET Framework 4.0
MVC 4 2012.09 .NET Framework 4.0
MVC 5 2013.10 .NET Framework 4.5

1.1.1 HTTP协议

请求方法:

动词 描述
GET 请求资源,多次得到同一个资源。
POST 请求资源,每次创建资源新版本,多次创建多个实例。
PUT 如果资源存在,则修改;如果不存在,则新增。
DELETE 删除指定资源。
OPTIONS 返回服务器针对特定资源所支持的HTTP请求方法,也可以利用向web服务器发送‘*’的请求来测试服务器的功能性。
HEAD 与GET一样,但响应中不包含消息体
TRACE 回显服务器收到的请求,主要用于测试或诊断
CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。

响应代码分5类:

  • 100~199:信息性
  • 200~299:成功
  • 300~399:重定向
  • 400~499:客户端错误
  • 500~599:服务器端错误

部分常见的状态码如下所示:

描述
100 继续。客户端应当继续发送请求。客户端应当继续发送请求的剩余部分,或者如果请求已经完成,忽略这个响应。
101 转换协议。在发送完这个响应最后的空行后,将会切换到在Upgrade 消息头中定义的那些协议。只有在切换新的协议更有好处的时候才应该采取类似措施。
102 继续处理。由WebDAV(RFC 2518)扩展的状态码,代表处理将被继续执行。
200 请求成功。处理方式:获得响应的内容,进行处理。
201 请求完成,结果是创建了新资源。新创建资源的URI可在响应的实体中得到
202 请求被接受,但处理尚未完成 处理方式:阻塞等待。
204 服务器端已经实现了请求,但是没有返回新的信息。如果客户是用户,则无须为此更新自身的文档视图。处理方式:丢弃。
300 该状态码不被HTTP/1.0的应用程序直接使用, 只是作为3XX类型回应的默认解释。存在多个可用的被请求资源。处理方式:若程序中能够处理,则进行进一步处理,如果程序中不能处理,则丢弃。
301 请求到的资源都会分配一个永久的URL,这样就可以在将来通过该URL来访问此资源。处理方式:重定向到分配的URL。
302 请求到的资源在一个不同的URL处临时保存。处理方式:重定向到临时的URL。
304 请求的资源未更新。
400 非法请求。
401 未授权。
403 禁止。
404 没有找到 。
500 服务器内部错误。服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。一般来说,这个问题都会在的源代码出现错误时出现。
501 服务器无法识别。服务器不支持当前请求所需要的某个功能。当服务器无法识别请求的方法,并且无法支持其对任何资源的请求。
502 错误网关。作为网关或者工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。
503 服务出错。由于临时的维护或者过载,服务器当前无法处理请求。这个状况是临时的,并且将在一段时间以后恢复。

无状态协议:每个请求都不会识别任何先前请求,每个请求-响应都是完全独立的。

微软IIS是Windows系统自带的Web服务器,但默认情况下不安装。

1.1.2 HTML5

HTML5在2014年10月制订完成,之前的版本是HTML4,在1997年制订,两者之间经历了17年。

1.1.3 ASP.NET Web Forms

自.NET首次发布开始,ASP.NET Web Forms就是.NET通用架构的一部分。每个实际页面由两个文件组成 —— .aspx和.aspx.cs。该框架会自动生成HTML,并隐藏了很多自动生成的HTML。

客户端和服务器之间的主要通信模型是PostBack方法,在该方法中,页面在浏览器中呈现,用户执行一些操作,使用相同的资源名,又发送回服务器。每个页面既负责内容创建,又响应内容变化。

1.1.3.1 ViewState

因为HTTP是无状态协议,因此需要视图状态(ViewState)来管理。视图状态是页面里的一个隐藏字段:

<input type='hidden' name='_VIEWSTATE' value='...' />

ASP.NET通过解析value值来获取页面各个项的前一个版本。

假定某个页面有好几次PostBack,在某一次PostBack中修改了标签的值,控件初始化时会先置为默认值,然后再从ViewState中分析出是否需要更改为新值。

改变的项越多,需要跟踪的信息就越多,ViewState的值就越大。这些信息是双向传递的,先从服务器传递给客户端,然后又送回服务器。

默认情况下,每个控件都启动了ViewState,开发人员可以自行控制。

1.1.3.2 事件和页面生命周期

生命周期各阶段

生命周期中的阶段是通过一组事件呈现的,如下图所示:

生命周期事件

WebForms事件分为两个级别,Page级别和Control级别。

1.1.3.3 控件库

控件主要分为4类:

  • HTML 服务器控件:传统HTML元素的包装器(Wrapper)。
  • Web 服务器控件:不仅仅只是普通HTML元素,还包括增强功能,如日历控件。
  • 验证控件:在客户端和服务器上提供支持,确保数据在发送前是正确的,并且到达后也是正确的。
  • 用户控件:开发人员创建的重复应用的控件。

1.1.4 ASP.NET MVC

WebForms主要是基于页面的方式来设计Web应用,就像下面这样:

直接Page返回

而MVC主要抽象出更多层,如下面这样,通过Action来决定显示哪个View,相同的Model也可以绑定在不同的View上进行显示:

ASP.NET MVC

WebForms在客户端显示的是页面,而MVC则不同,显示的是视图,WebForms采用文件系统方式来呈现内容,z直接转换为相应的文件位置,而MVC则基于特定事件执行的"操作类型"进行显示:

WebForm和MVC的区别

1.1.5 WebForms和MVC的相似性

两者并非对立,只是方式上的不同,各有各的优缺点。随着VS2015和ASP.NET 5.0的发布,我们可以在一个Web应用里同时使用ASP.NET WebForms和ASP.NET MVC解决各种业务问题。

1.2 安装使用Visual Studio

详情可参见:https://www.twle.cn/l/yufei/aspnetcore/dotnet-aspnet-setup-window.html

1.3 示例应用

我们将开发一个应用程序RentMyWrox,同时支持WebForms和MVC。

1.4 练习

  • HTML和HTTP的区别是什么。
  • ViewState有什么作用。
  • 请简单介绍一下MVC架构。

扩展资料

原文地址:https://www.cnblogs.com/zenronphy/p/BeginASPDotNetLearningChapter1.html