《精通 ASP.NET MVC 3 框架(第三版)》----第1章 设计思路 1.1 Web开发简史

简介: ASP.NET MVC是微软研发的Web开发框架,它整合了“模型—视图—控制器(MVC)”架构的高效与整洁,敏捷开发中最新的思想与技术,以及当前ASP.NET平台的精华部分。ASP.NET MVC可以完全替代传统的ASP.NET Web Form,除了一些微不足道的Web小项目,在各种Web开发项目中它都具有明显的优势。

本节书摘来自异步社区《精通 ASP.NET MVC 3 框架(第三版)》一书中的第1章,第1节,作者: 【美】Adam Freeman , Steven Standerson,译者: 林逸 , 李萍 , 更多章节内容可以访问云栖社区“异步社区”公众号查看。

第1章 设计思路

精通 ASP.NET MVC 3 框架(第三版)
ASP.NET MVC是微软研发的Web开发框架,它整合了“模型—视图—控制器(MVC)”架构的高效与整洁,敏捷开发中最新的思想与技术,以及当前ASP.NET平台的精华部分。ASP.NET MVC可以完全替代传统的ASP.NET Web Form,除了一些微不足道的Web小项目,在各种Web开发项目中它都具有明显的优势。在本章中,你将了解微软当初创建ASP.NET MVC的原因,与它的前辈和替代品之间的区别,以及ASP.NET MVC 3的新特性。

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

1.1 Web开发简史

精通 ASP.NET MVC 3 框架(第三版)
要理解ASP.NET MVC的特色及其设计目标,有必要考察一下Web开发的历史。近年来,微软的Web开发平台演变得越加强大,如表1-1所示,每一个新平台都修正了它前一版本中的不足。


612da4eb737e1941181cfc780aaf03f25e56d164
  • CGI 是Web服务器与返回动态内容的任意可执行程序进行连接的一种标准方法。其规范由美国国家超级计算应用中心(NCSA)维护。

1.1.1 传统的ASP.NET Web Form

ASP.NET在2002年刚问世时,给Web开发领域带来了巨大的转变。图1-1描述了当时微软的技术堆栈。


d7e538804e61c206a8870a7b8a7468f2b7c793a7

(注:此图的含义为,Web Form建立在ASP.NET之上,而ASP.NET又建立在.NET平台之上,MVC所起的作用是替代这里的Web Form。——译者注)

作用于将用户界面(UI)模拟为服务器端控件对象层的办法,微软试图利用Web Form把HTTP(具有无状态本质)和HTML(当时许多开发人员尚不熟悉)都隐藏起来。每个控件在请求期间都跟踪自己的状态(通过View State),在需要时把自己渲染成HTML,并自动地将客户端事件(如按钮点击)与相应的服务器端事件处理代码相关联。结果,Web Form被设计成在Web上传递传统的事件驱动式GUI(图形用户界面)的一个巨大的抽象层。

其思想是,让Web开发在感觉上与Windows Form开发相同。开发者不再需要以一系列独立的HTTP请求和响应进行工作,可以认为它是一种状态化的UI。我们可以忘记Web及其无状态本质,转而用一种“拖—放”式设计器来创建UI,并假想或至少假装,所有事情都发生在服务器上。

1.1.2 SP.NET Web Form表单的问题在哪里

传统的ASP.NET Web Form开发曾是一种了不起的思想,但事实证明它更加复杂。随着时间的推移,Web Form在实际项目中显现出了一些缺陷:

视图状态负荷:跨请求状态维护的实际机制(称为视图状态)导致在客户端与服务器之间传输大块数据。这种数据即使在最适度的Web应用程序中也达到几百KB,而且它来回于每次请求之间,以很长的响应时间令网站访问者不悦,且增加了服务器的带宽需求。

页面生命周期:连接客户端事件与服务器端事件处理代码的机制(是页面的部分生命周期)格外复杂和棘手。很少有开发者在不产生视图状态错误或不发现某些事件处理程序莫明失效的情况下,能够在程序运行期间成功地维护控件层。

关注分离的错误理解:ASP.NET的后台代码模型提供了一种手段,把应用程序代码从它的HTML标记中提取出来,并放到一个独立的后台代码类中。这种逻辑与表现的分离曾得到了广泛的赞许,但在实际应用中,却又鼓励开发者在这些怪异的后台代码类中把表现代码(如操纵服务器端控件树)与它们的应用程序逻辑(如维护数据库数据)混在一起。最终结果是脆弱和难以理解的。

HTML上的受限控制:服务器控件将自己渲染成HTML,但并不是你所希望的那种必要的HTML。在ASP.NET 4之前,这种HTML输出通常不符合Web标准,或不能很好地使用CSS。而且,服务器控件会生成不可预知且复杂的ID值,结果,这些ID难以用JavaScript进行访问。这些问题在ASP.NET 4中减少了,但仍然不容易得到你所期望的HTML。

遗漏抽象:Web Form试图尽可能地隐去HTML和HTTP。当你试图实现自定义行为时,时常需要放弃抽象,这迫使你需要反过来开发回传的事件机制,或采取笨拙的方法,以使它生成所希望的HTML。再则,这种抽象可能对有能力的Web开发者构成一个极大的障碍。

低可测试性:ASP.NET的设计者们恐怕未曾预料到,自动测试会成为软件开发的重要组成部分。因此,他们设计的这种紧耦合体系结构不适合单元测试也就不足为奇了。集成测试也很具挑战性。

ASP.NET一直在不断改进,版本2.0添加了一组标准的应用程序组件,可以减少开发者需要编写的代码量。2007年发布的AJAX是微软对Web 2.0/AJAX疯狂时代的回应,它支持富客户端交互,同时也简化了开发者的工作。最新版的ASP.NET 4能够生成更易于预测且与标准兼容的HTML标记,但依然存在许多内在的局限性。

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

相关文章
|
8月前
|
开发框架 前端开发 Go
【GoGin】(0)基于Go的WEB开发框架,GO Gin是什么?怎么启动?本文给你答案
Gin:Go语言编写的Web框架,以更好的性能实现类似Martini框架的APInet/http、Beego:开源的高性能Go语言Web框架、Iris:最快的Go语言Web框架,完备的MVC支持。
635 1
|
开发框架 前端开发 JavaScript
ASP.NET Web Pages - 教程
ASP.NET Web Pages 是一种用于创建动态网页的开发模式,采用HTML、CSS、JavaScript 和服务器脚本。本教程聚焦于Web Pages,介绍如何使用Razor语法结合服务器端代码与前端技术,以及利用WebMatrix工具进行开发。适合初学者入门ASP.NET。
|
Java API 数据库
构建RESTful API已经成为现代Web开发的标准做法之一。Spring Boot框架因其简洁的配置、快速的启动特性及丰富的功能集而备受开发者青睐。
【10月更文挑战第11天】本文介绍如何使用Spring Boot构建在线图书管理系统的RESTful API。通过创建Spring Boot项目,定义`Book`实体类、`BookRepository`接口和`BookService`服务类,最后实现`BookController`控制器来处理HTTP请求,展示了从基础环境搭建到API测试的完整过程。
596 4
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
1015 3
|
12月前
|
开发框架 JSON 中间件
Go语言Web开发框架实践:路由、中间件、参数校验
Gin框架以其极简风格、强大路由管理、灵活中间件机制及参数绑定校验系统著称。本文详解其核心功能:1) 路由管理,支持分组与路径参数;2) 中间件机制,实现全局与局部控制;3) 参数绑定,涵盖多种来源;4) 结构体绑定与字段校验,确保数据合法性;5) 自定义校验器扩展功能;6) 统一错误处理提升用户体验。Gin以清晰模块化、流程可控及自动化校验等优势,成为开发者的优选工具。
|
12月前
|
开发框架 安全 前端开发
Go Web开发框架实践:模板渲染与静态资源服务
Gin 是一个功能强大的 Go Web 框架,不仅适用于构建 API 服务,还支持 HTML 模板渲染和静态资源托管。它可以帮助开发者快速搭建中小型网站,并提供灵活的模板语法、自定义函数、静态文件映射等功能,同时兼容 Go 的 html/template 引擎,具备高效且安全的页面渲染能力。
|
12月前
|
开发框架 JSON 中间件
Go语言Web开发框架实践:使用 Gin 快速构建 Web 服务
Gin 是一个高效、轻量级的 Go 语言 Web 框架,支持中间件机制,非常适合开发 RESTful API。本文从安装到进阶技巧全面解析 Gin 的使用:快速入门示例(Hello Gin)、定义 RESTful 用户服务(增删改查接口实现),以及推荐实践如参数校验、中间件和路由分组等。通过对比标准库 `net/http`,Gin 提供更简洁灵活的开发体验。此外,还推荐了 GORM、Viper、Zap 等配合使用的工具库,助力高效开发。
|
人工智能 自然语言处理 JavaScript
测试工程师要失业?Magnitude:开源AI Agent驱动的端到端测试框架,让Web测试更智能,自动完善测试用例!
Magnitude是一个基于视觉AI代理的开源端到端测试框架,通过自然语言构建测试用例,结合推理代理和视觉代理实现智能化的Web应用测试,支持本地运行和CI/CD集成。
2334 15
测试工程师要失业?Magnitude:开源AI Agent驱动的端到端测试框架,让Web测试更智能,自动完善测试用例!
|
11月前
|
前端开发 Java API
Spring Cloud Gateway Server Web MVC报错“Unsupported transfer encoding: chunked”解决
本文解析了Spring Cloud Gateway中出现“Unsupported transfer encoding: chunked”错误的原因,指出该问题源于Feign依赖的HTTP客户端与服务端的`chunked`传输编码不兼容,并提供了具体的解决方案。通过规范Feign客户端接口的返回类型,可有效避免该异常,提升系统兼容性与稳定性。
749 0
|
开发框架 搜索推荐 数据可视化
Django框架适合开发哪种类型的Web应用程序?
Django 框架凭借其强大的功能、稳定性和可扩展性,几乎可以适应各种类型的 Web 应用程序开发需求。无论是简单的网站还是复杂的企业级系统,Django 都能提供可靠的支持,帮助开发者快速构建高质量的应用。同时,其活跃的社区和丰富的资源也为开发者在项目实施过程中提供了有力的保障。
1095 157