《精通 ASP.NET MVC 5》----1.2 当今的Web开发

简介: 近年来,朝着Web标准兼容的趋势在增长。Web网站也在比以往更为广泛的设备和浏览器上使用,Web标准(HTML、CSS、JavaScript等)使人们有望在不同的设备上享受一致的浏览体验。现代Web平台不可忽视这种商业环境和开发者对Web标准兼容的追求。

本节书摘来自异步社区《精通 ASP.NET MVC 5》一书中的第1章,第1.2节,作者: 【美】Adam Freeman(弗瑞曼 A.),译者: 张成彬 , 徐燕萍 , 李萍 , 林逸 责编: 张涛, 更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.2 当今的Web开发

自Web Form首次发布以来,Web开发技术一直在迅速发展,集中表现在几个不同的方面。

1.2.1 Web标准与REST

近年来,朝着Web标准兼容的趋势在增长。Web网站也在比以往更为广泛的设备和浏览器上使用,Web标准(HTML、CSS、JavaScript等)使人们有望在不同的设备上享受一致的浏览体验。现代Web平台不可忽视这种商业环境和开发者对Web标准兼容的追求。

HTML 5已经进入主流运用范围,并给Web开发人员提供了丰富的功能,让客户端能够执行一些以前由服务器独自负责的工作。这些新功能以及日趋成熟的JavaScript库,例如,AngularJS、jQuery、jQuery UI和jQueryMobile等,意味着标准已经变得更为重要,并已形成了富Web应用程序的重要基础。

注:

本书涉及HTML 5、jQuery和其相关技术,但并不深入,因为这些都是有其自身内涵的主题。若需要更完整了解,可以参阅笔者在Apress出版的几本书籍:Pro AngularJS、Pro jQuery 2.0、Pro JavaScript for Web Apps,以及The Definitive Guide to HTML 5。

与此同时,表现式状态传输(Representational State Transfer,REST)已经成为应用程序在HTTP上互操作的主要体系架构,完全使SOAP(ASP.NET原先进行Web服务的支撑技术)黯然失色。REST根据表示真实世界实体的资源(URI)和表示在这些资源上可用的标准操作(HTTP方法)来描述一个应用程序。例如,你可能会更新(PUT)一个新的产品http://www.example.com/Products/Lawnmower (含义为更新一台除草机),或删除某客户(DELETE)http://www.example.com/Customers/Arnold-Smith 。这两个例子的含义为通过HTTP方法与资源地址的组合,就可以对资源执行相应的操作,而这种HTTP方法与资源地址的组合就是REST,执行这种操作的请求也称为REST化的请求。

当今的Web应用程序不只提供HTML服务,通常也必须将JSON或XML数据提供给各种客户端技术,比如AJAX以及本地智能手机等应用程序。利用REST,这会显得很自然。REST消除了Web服务与Web应用程序之间的差异,但这需要一种对HTTP和URL进行处理的方法,而这种方法不易得到ASP.NET Web Form的支持(因为Web Form请求的都是.aspx文件,因而难以实现REST的那种资源与HTTP方法相组合的操作)。

1.2.2 敏捷与测试驱动开发

在过去的十多年中,不仅Web开发得到了发展,整个软件开发行业也朝着敏捷方法学的方向转移。这可能包含许多不同的事情,但主要是指将软件项目的实施视为一种适应性的探索过程,以消除超前规划的阻碍和限制。敏捷方法学热衷于将一组特定的开发实践与促进和辅助这些实践的工具(通常是开源的)协同推进(例如以下所描述的测试驱动开发,就是让测试驱动开发这种开发方法与测试工具共同发展)。

测试驱动开发(Test-Driven Development,TDD)及其“近亲”行为驱动开发(Behavior-Driven Development,BDD),就是两个例子。其思想是,首先描述想要得到的行为范例(或称为测试规范)来设计软件,这样,任何时候通过执行依附于这一实现的一套测试,以验证应用程序的稳定性和正确性(在TDD/BDD开发中,你的软件是根据测试规范而实现的。于是,这套测试便可以随时用来验证你的这一实现)。.NET并不缺乏支持TDD/BDD的工具,但它们几乎无法与Web Form很好地工作。

单元测试工具(Unit Testing Tools):让你可以指定个别类或其他孤立的小型代码单元的行为。只有将软件设计成一个个独立的模块,才能有效地运用这些工具,这样每个测试可以独立地运行。遗憾的是,很少有Web Form应用程序能够以这种方式进行测试。
UI自动化工具(UI Automation Tools):让你能够根据应用程序的一个完整的运行实例,模拟一系列用户交互。这些工具可以用于Web Form,但当你对页面布局做微小改动时,它们都可能会崩溃。稍有差错,Web Form就会生成完全不同的HTML结构和元素的ID值,导致测试套件失效。
.NET开源和独立的软件供应商(Independent Software Vendor,ISV)团体已经生产了无数顶级质量的单元测试框架(NUnit、xUnit)、模仿框架(Moq、Rhino Mocks)、控制反转容器(Ninject、AutoFac)、持续集成服务器(Cruise Control、TeamCity)、对象关系映射器(NHibemate、Subsonic)等。传统的ASP.NET Web Form因其单片式设计(指用户界面及其后台处理逻辑被耦合在一起的设计方式),而不适用于这些工具和技术。因此,Web Form未能从这些项目中得到太多的“尊重”(意指这些工具在其设计过程中,很少会顾及它在Web Form中的可用性)。

1.2.3 Ruby on Rails

2004年Ruby on Rails还默默无闻,只是一个无名倡导者的开源项目。突然声名鹊起,改变了Web开发的规则。并不是因为它包含了革命性的技术,而在于其概念利用了已有要素,把它们以一种有说服力且有吸引人的方式融合在一起,而使现有平台相形见绌。

Ruby on Rails(或通常所说的Rails)采纳了MVC架构(将在第3章中描述)。通过运用MVC架构,并与HTTP协同工作,提倡约定优于配置,将对象-关系映射(Object-RelationalMapping,ORM)工具集成到它的内核,几乎无需太多努力Rails应用程序就可以建成。就好像Web开发一直以来就应该是这样。Rails表明,顺应Web标准和REST化并不困难。它也表明,当框架被设计成支持敏捷开发与TDD时,它们工作起来是最好的。从那时起,整个Web开发领域都被调动起来了。

1.2.4 Node.js

Web开发的另一个明显趋势是朝着以JavaScript作为主要编程语言的方向发展。AJAX首先展示了JavaScript是重要的,jQuery展示了它功能强大而雅致,而Google的开源V8 JavaScript引擎,则展示了它可以十分快速。如今,JavaScript正在成为一种重要的服务器端编程语言。它为一些非关系型数据库(包括CouchDB和Mongo等)提供数据存储和查询语言服务,并被用作服务器端平台的一种通用语言,如Node.js。Node.js出现于2009年,并很快得到了认可。其关键创新如下。

使用JavaScript:开发者只需要使用这一种语言,即可应对从客户端代码到服务器端逻辑,甚至对CouchDB等数据库的数据查询逻辑。
完全异步:在等待输入/输出(I/O)或任何其他操作时,Node.js的API不会显露出任何形式的线程阻塞。通过启动其操作,然后在该I/O完成时接收一个回调,便实现一个完整的I/O操作。这意味着,Node.js形成了非常有效的系统资源利用,使得每CPU可能处理数以万计的并发请求(其他平台只能期望将每CPU的并发请求限制在100次左右)。
Node.js仍是一种利基(Niche,一种小范围但很有作为的环境)技术。有点奇怪的是,它对Web应用程序开发的最大贡献即为提供了一个能够编写开发工具的相容的JavaScript引擎。许多新兴的客户端JavaScript框架,比如AngularJS,都具有使用Node.js的良好工具支持。

Node.js部署Web应用程序所采用的方法很慢。在有时间限制的情况下,建立实际应用程序的大多数业务,通常都需要诸如Ruby on Rails和ASP.NET MVC等全技术堆栈框架下的底层架构。这里提到的Node.js,只是把ASP.NET MVC的某些设计放在行业趋势的大背景下讨论。例如,ASP.NET MVC包含了异步控制器(Asynchronous Controller,第19章描述),这就是一种以非阻塞I/O处理HTTP请求,并提高每CPU处理更多请求的方式。

相关文章
|
16天前
|
开发框架 前端开发 JavaScript
ASP.NET Web Pages - 教程
ASP.NET Web Pages 是一种用于创建动态网页的开发模式,采用HTML、CSS、JavaScript 和服务器脚本。本教程聚焦于Web Pages,介绍如何使用Razor语法结合服务器端代码与前端技术,以及利用WebMatrix工具进行开发。适合初学者入门ASP.NET。
|
13天前
|
前端开发 安全 JavaScript
2025年,Web3开发学习路线全指南
本文提供了一条针对Dapp应用开发的学习路线,涵盖了Web3领域的重要技术栈,如区块链基础、以太坊技术、Solidity编程、智能合约开发及安全、web3.js和ethers.js库的使用、Truffle框架等。文章首先分析了国内区块链企业的技术需求,随后详细介绍了每个技术点的学习资源和方法,旨在帮助初学者系统地掌握Dapp开发所需的知识和技能。
2025年,Web3开发学习路线全指南
|
19天前
|
存储 前端开发 JavaScript
如何在项目中高效地进行 Web 组件化开发
高效地进行 Web 组件化开发需要从多个方面入手,通过明确目标、合理规划、规范开发、加强测试等一系列措施,实现组件的高效管理和利用,从而提高项目的整体开发效率和质量,为用户提供更好的体验。
27 7
|
16天前
|
开发框架 .NET PHP
ASP.NET Web Pages - 添加 Razor 代码
ASP.NET Web Pages 使用 Razor 标记添加服务器端代码,支持 C# 和 Visual Basic。Razor 语法简洁易学,类似于 ASP 和 PHP。例如,在网页中加入 `@DateTime.Now` 可以实时显示当前时间。
|
24天前
|
开发框架 搜索推荐 数据可视化
Django框架适合开发哪种类型的Web应用程序?
Django 框架凭借其强大的功能、稳定性和可扩展性,几乎可以适应各种类型的 Web 应用程序开发需求。无论是简单的网站还是复杂的企业级系统,Django 都能提供可靠的支持,帮助开发者快速构建高质量的应用。同时,其活跃的社区和丰富的资源也为开发者在项目实施过程中提供了有力的保障。
|
23天前
|
开发框架 JavaScript 前端开发
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势。通过明确的类型定义,TypeScript 能够在编码阶段发现潜在错误,提高代码质量;支持组件的清晰定义与复用,增强代码的可维护性;与 React、Vue 等框架结合,提供更佳的开发体验;适用于大型项目,优化代码结构和性能。随着 Web 技术的发展,TypeScript 的应用前景广阔,将继续引领 Web 开发的新趋势。
35 2
|
1月前
|
前端开发 API 开发者
Python Web开发者必看!AJAX、Fetch API实战技巧,让前后端交互如丝般顺滑!
在Web开发中,前后端的高效交互是提升用户体验的关键。本文通过一个基于Flask框架的博客系统实战案例,详细介绍了如何使用AJAX和Fetch API实现不刷新页面查看评论的功能。从后端路由设置到前端请求处理,全面展示了这两种技术的应用技巧,帮助Python Web开发者提升项目质量和开发效率。
50 1
|
1月前
|
XML 安全 PHP
PHP与SOAP Web服务开发:基础与进阶教程
本文介绍了PHP与SOAP Web服务的基础和进阶知识,涵盖SOAP的基本概念、PHP中的SoapServer和SoapClient类的使用方法,以及服务端和客户端的开发示例。此外,还探讨了安全性、性能优化等高级主题,帮助开发者掌握更高效的Web服务开发技巧。
|
2月前
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
151 3
|
1月前
|
设计模式 前端开发 数据库
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第27天】本文介绍了Django框架在Python Web开发中的应用,涵盖了Django与Flask等框架的比较、项目结构、模型、视图、模板和URL配置等内容,并展示了实际代码示例,帮助读者快速掌握Django全栈开发的核心技术。
162 45