《精通 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处理更多请求的方式。

相关文章
|
5月前
|
开发框架 前端开发 JavaScript
ASP.NET Web Pages - 教程
ASP.NET Web Pages 是一种用于创建动态网页的开发模式,采用HTML、CSS、JavaScript 和服务器脚本。本教程聚焦于Web Pages,介绍如何使用Razor语法结合服务器端代码与前端技术,以及利用WebMatrix工具进行开发。适合初学者入门ASP.NET。
|
5月前
|
开发框架 .NET PHP
ASP.NET Web Pages - 添加 Razor 代码
ASP.NET Web Pages 使用 Razor 标记添加服务器端代码,支持 C# 和 Visual Basic。Razor 语法简洁易学,类似于 ASP 和 PHP。例如,在网页中加入 `@DateTime.Now` 可以实时显示当前时间。
|
8月前
|
开发框架 监控 前端开发
在 ASP.NET Core Web API 中使用操作筛选器统一处理通用操作
【9月更文挑战第27天】操作筛选器是ASP.NET Core MVC和Web API中的一种过滤器,可在操作方法执行前后运行代码,适用于日志记录、性能监控和验证等场景。通过实现`IActionFilter`接口的`OnActionExecuting`和`OnActionExecuted`方法,可以统一处理日志、验证及异常。创建并注册自定义筛选器类,能提升代码的可维护性和复用性。
117 3
|
8月前
|
开发框架 .NET 中间件
ASP.NET Core Web 开发浅谈
本文介绍ASP.NET Core,一个轻量级、开源的跨平台框架,专为构建高性能Web应用设计。通过简单步骤,你将学会创建首个Web应用。文章还深入探讨了路由配置、依赖注入及安全性配置等常见问题,并提供了实用示例代码以助于理解与避免错误,帮助开发者更好地掌握ASP.NET Core的核心概念。
174 3
|
8月前
|
开发框架 前端开发 .NET
VB.NET中如何利用ASP.NET进行Web开发
在VB.NET中利用ASP.NET进行Web开发是一个常见的做法,特别是在需要构建动态、交互式Web应用程序时。ASP.NET是一个由微软开发的开源Web应用程序框架,它允许开发者使用多种编程语言(包括VB.NET)来创建Web应用程序。
192 6
|
8月前
|
前端开发 安全 Java
技术进阶:使用Spring MVC构建适应未来的响应式Web应用
【9月更文挑战第2天】随着移动设备的普及,响应式设计至关重要。Spring MVC作为强大的Java Web框架,助力开发者创建适应多屏的应用。本文推荐使用Thymeleaf整合视图,通过简洁的HTML代码提高前端灵活性;采用`@ResponseBody`与`Callable`实现异步处理,优化应用响应速度;运用`@ControllerAdvice`统一异常管理,保持代码整洁;借助Jackson简化JSON处理;利用Spring Security增强安全性;并强调测试的重要性。遵循这些实践,将大幅提升开发效率和应用质量。
117 7
|
8月前
|
开发框架 JavaScript 前端开发
|
8月前
|
前端开发 测试技术 开发者
MVC模式在现代Web开发中有哪些优势和局限性?
MVC模式在现代Web开发中有哪些优势和局限性?
|
9月前
|
开发者 前端开发 Java
架构模式的诗与远方:如何在MVC的田野上,用Struts 2编织Web开发的新篇章
【8月更文挑战第31天】架构模式是软件开发的核心概念,MVC(Model-View-Controller)通过清晰的分层和职责分离,成为广泛采用的模式。随着业务需求的复杂化,Struts 2框架应运而生,继承MVC优点并引入更多功能。本文探讨从MVC到Struts 2的演进,强调架构模式的重要性。MVC将应用程序分为模型、视图和控制器三部分,提高模块化和可维护性。
78 0
|
9月前
|
Java 开发者 前端开发
Struts 2、Spring MVC、Play Framework 上演巅峰之战,Web 开发的未来何去何从?
【8月更文挑战第31天】在Web应用开发中,Struts 2框架因强大功能和灵活配置备受青睐,但开发者常遇配置错误、类型转换失败、标签属性设置不当及异常处理等问题。本文通过实例解析常见难题与解决方案,如配置文件中遗漏`result`元素致页面跳转失败、日期格式不匹配需自定义转换器、`<s:checkbox>`标签缺少`label`属性致显示不全及Action中未捕获异常影响用户体验等,助您有效应对挑战。
145 0

热门文章

最新文章