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

  1. 云栖社区>
  2. 博客>
  3. 正文

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

异步社区 2017-05-02 16:54:00 浏览1535
展开阅读全文

本节书摘来自异步社区《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应用程序开发领域的领导者。

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

网友评论

登录后评论
0/500
评论
异步社区
+ 关注