《ASP.NET MVC 4 实战》----第 1 章 绪论 1.1 发展阶段

简介: boll ASP.NET简史 boll MVC模式介绍 boll ASP.NET MVC 3/4的新特性 ASP.NET MVC是微软.NET平台上的一个Web开发框架,它为开发者提供了一种构建结构良好的Web应用程序的方式。

本节书摘来自异步社区《ASP.NET MVC 4 实战》一书中的第1章,第1.1节,作者: 【美】Jeffrey Palermo , 【美】Jimmy Bogard , 【美】Eric Hexter , 【美】Matthew Hinze , 【英】Jeremy Skinner,译者: 徐燕萍 , 李萍 , 林逸 , 更多章节内容可以访问云栖社区“异步社区”公众号查看。

第 1 章 绪论

ASP.NET MVC 4 实战
本章内容
boll ASP.NET简史

boll MVC模式介绍

boll ASP.NET MVC 3/4的新特性

ASP.NET MVC是微软.NET平台上的一个Web开发框架,它为开发者提供了一种构建结构良好的Web应用程序的方式。自2007年首次公布预览版以来,作为Web Form的替代品,ASP.NET MVC的普及度已明显提高,现在很多大型Web应用程序都是使用这一技术构建的。

虽然微软长期以来一直在发展Web开发的工具和框架,但ASP.NET MVC却以整洁的代码、关注分离和可测试性对先前的努力形成了一种重要转移。

在这第一章中,我们将简要考察微软Web平台的历史,并介绍MVC设计模式。最后,提一提通过本书可考察到的一些ASP.NET MVC新特性。如果你有ASP.NET MVC以前版本的经验,可以跳到第2章。

让我们先简要看看.NET平台上的Web开发是如何演变的。

本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

1.1 发展阶段

ASP.NET MVC 4 实战
根据在微软平台上建立Web应用程序的时间长短,你或多或少会经历以下痛苦。20世纪90年代,开发人员使用运行在服务器上的可执行程序来构建交互式网站。这些程序(CGI,公共网关接口,是当时常用的技术)接受Web请求,并负责创建HTML响应。模板是特定的,而且程序难以编写、调试和测试。20世纪90年代后期,经过短暂的HTX模板和IDC连接器阶段之后,微软推出了活动服务器页面(Active Server Pages),即ASP。ASP将模板带入了Web应用程序。服务器页面是一种HTML文档和动态脚本的混合体。虽然这种替代方案向前迈进了一大步,但服务器页面很快变得十分臃肿,而且这种组合式的代码和标记几乎无法辨认。

2002年年初,微软发布了第一版.NET框架,这是经典ASP开发领域的一个巨大转移。

1.1.1 .NET平台

.NET对熟悉经典ASP动态脚本的开发人员而言,是一个巨大的转移。.NET引入了几种新的编程语言,这些语言被编译成相同的中间语言,以便在.NET的公共语言运行时(Common Language Runtime,CLR)上运行。最初,这些语言包括C#、Visual Basic.NET以及J#等,所有这些都是静态的类型化语言。

随着时间的推移,这些在CLR上可用的语言已经得到演化。对于最新版的.NET框架(.NET 4),可以使用以下语言:


28c9b3d3d25be917b67b0850ceec9396a69113e3

除了这些语言之外,.NET 4还包含了一个新的动态语言运行时(Dynamic Language Runtime,DLR),它让动态编程语言可以在CLR上运行。这些语言包括IronRuby和IronPython,它们是流行的Ruby和Python编程语言(在.NET平台上)的开源实现。DLR特性现在对诸如C#之类的静态类型化.NET语言也是可用的。(各部分之间的相互关系见图1.1 —译者注)


7fa75b7dbb479af3299d186eb4f4f9a42e533286

除了支持数种编程语言之外,.NET框架还提供了框架类库(Framework Class Library,FCL)—一个含有大量执行各种任务的类的集合库。用于Web开发的ASP.NET库是这个集合的一部分。

1.1.2 ASP.NET Web Form

ASP.NET Web Form是微软建立在核心的ASP.NET库之上的第一个Web开发框架,而且它完全不同于ASP开发人员以前所处理的事物。

Web Form是围绕事件驱动的页面生命周期而建立的,在渲染的页面上可以触发事件。作为开发人员,你可以对这些事件进行挂接,以便在页面生命周期的某个时刻运行代码。用户界面元素被定义为控件,每个控件负责自身的渲染过程,并有一组自己的事件。这种方法虽然对于具有Visual Basic 6或Windows Form背景的开发人员来说较为熟悉,但传统的Web开发人员却感觉背道而驰,因为它背离HTTP基础而进行了抽象,并在Web上强迫实行状态化模型,然而,Web本质上是无状态的。

当Web Form第一次发布时,受困扰的程序员要搜索神奇的事件,以便在这些事件中添加几行必要的简单代码,以使页面在需要时正常工作,但服务器端事件生命周期却随活动而引发了爆炸式增长。Web Form还引入了视图状态(ViewState)的概念,将其用于维护你正在使用状态化模型的假象(因为Web本质上是无状态的,状态化模型实际上是抽象出来的假象—译者注)。

虽然理论上可行,但随着应用程序的复杂性增加,视图状态崩溃了。由于整个应用程序的状态都必须存储在每一个生成页面的输出之中,即使简单的页面也可能有数百KB大小。由于诸如Visual Studio之类的工具鼓励将SQL查询这样的数据访问嵌入到页面逻辑之中,开发的最佳实践被忽视了。Web Forms框架最大的失误也许是把所有事情都紧密地耦合在System.Web命名空间之中。单元测试后台代码文件中的代码毫无希望,现在再看许多尚存的Web Form应用程序,其Page_Load方法可能有数页之长。尽管早期版本的Web Form有一些缺陷,但ASP.NET以及更大的.NET框架对Web应用程序市场已经形成了巨大冲击。如今,我们看到许多著名的网站都运行在ASP.NET平台之上。该平台在市场上已经证明了自己,而且,当与运行在Windows上的IIS相结合时,ASP.NET可以很容易地支持在大型数据中心运行的复杂Web应用程序。

ASP.NET MVC框架利用了ASP.NET的成功,推动ASP.NET成为Web应用程序开发领域的领导者。

本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

相关文章
|
3月前
|
开发框架 JSON JavaScript
ASP.NET Core3.1实战教程---基于Jquery单文件上传
ASP.NET Core3.1实战教程---基于Jquery单文件上传
26 0
|
3月前
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
38 0
|
1月前
|
开发框架 前端开发 .NET
C# .NET面试系列六:ASP.NET MVC
<h2>ASP.NET MVC #### 1. MVC 中的 TempData\ViewBag\ViewData 区别? 在ASP.NET MVC中,TempData、ViewBag 和 ViewData 都是用于在控制器和视图之间传递数据的机制,但它们有一些区别。 <b>TempData:</b> 1、生命周期 ```c# TempData 的生命周期是短暂的,数据只在当前请求和下一次请求之间有效。一旦数据被读取,它就会被标记为已读,下一次请求时就会被清除。 ``` 2、用途 ```c# 主要用于在两个动作之间传递数据,例如在一个动作中设置 TempData,然后在重定向到另
95 5
|
4月前
|
前端开发 JavaScript Java
Spring Boot中Spring MVC的基本配置讲解与实战(包括静态资源配置,拦截器配置,文件上传配置及实战 附源码)
Spring Boot中Spring MVC的基本配置讲解与实战(包括静态资源配置,拦截器配置,文件上传配置及实战 附源码)
49 1
|
4月前
|
存储 前端开发 Java
Spring Boot中Spring MVC的表单标签库与数据绑定讲解与实战(附源码 超详细必看)
Spring Boot中Spring MVC的表单标签库与数据绑定讲解与实战(附源码 超详细必看)
33 0
|
4月前
|
设计模式 前端开发 Java
Spring Boot之Spring MVC的工作原理 以及使用eclipse开发Spring MVC的Web应用实战(附源码)
Spring Boot之Spring MVC的工作原理 以及使用eclipse开发Spring MVC的Web应用实战(附源码)
45 0
|
5月前
|
开发框架 自然语言处理 前端开发
基于ASP.NET MVC开发的、开源的个人博客系统
基于ASP.NET MVC开发的、开源的个人博客系统
51 0
|
8月前
|
SQL 开发框架 前端开发
[回馈]ASP.NET Core MVC开发实战之商城系统(完:内附源码)
经过一段时间的准备,【ASP.NET Core MVC开发实战之商城系统】已经完成,目前代码已开发完成,先将全部内容整理分享,如有不足之处,还请指正。
106 0
|
8月前
|
开发框架 前端开发 .NET
[回馈]ASP.NET Core MVC开发实战之商城系统(六)
经过一段时间的准备,新的一期【ASP.NET Core MVC开发实战之商城系统】已经开始,在之前的文章中,讲解了商城系统的整体功能设计,页面布局设计,环境搭建,系统配置,及首页【商品类型,banner条,友情链接,降价促销,新品爆款】,商品列表页面,商品详情,购物车等功能的开发,今天继续讲解订单管理功能开发,仅供学习分享使用,如有不足之处,还请指正。
214 0
|
8月前
|
存储 开发框架 前端开发
[回馈]ASP.NET Core MVC开发实战之商城系统(五)
经过一段时间的准备,新的一期【ASP.NET Core MVC开发实战之商城系统】已经开始,在之前的文章中,讲解了商城系统的整体功能设计,页面布局设计,环境搭建,系统配置,及首页【商品类型,banner条,友情链接,降价促销,新品爆款】,商品列表页面,商品详情等功能的开发,今天继续讲解购物车功能开发,仅供学习分享使用,如有不足之处,还请指正。
114 0