Core MVC是一次彻底的转变。它强调整洁的架构,设计模式和可测试性,并且不会试图隐藏Web的工作方式。
Core MVC中的新功能,以及在实践中体验框架的使用方式。
平台的最佳部分。本章将介绍Microsoft创建 Core MVC中的新增的内容。
在Web Forms中,Microsoft试图通过将UI建模为具有层次结构的服务器端对象,来隐藏无状态的HTTP以及当时许多开发人员并不熟悉的HTML。每个控件都会追踪各个请求的状态,在需要时将其渲染为HTML,并自动地将客户端事件(比如点击按钮)与相应的服务器端事件处理代码连接起来。实际上,Web Forms是一个旨在于在Web上也提供传统的事件驱动型GUI的巨大抽象层。
model)提供了一种将应用程序代码从HTML标记中取出并分解为单独的代码隐藏类的方法。这样做是为了分离逻辑和表示,但实际上,这鼓励开发人员把表示逻辑(操纵服务器端的控件等)和其对应的程序逻辑(操纵数据库等)混合在class中的一大坨代码里,导致其难以维护和理解。
- False sense of separation of concerns: 的早期版本中,渲染出来的HTML不符合Web标准,也很难使用CSS。并且,服务器控件会生成没办法预测也没办法用JavaScript访问的复杂ID属性。在最近的Web Forms版本中,这些问题已经得到了改善,但获得想要的HTML还是一件很难的事情。
- 直接使用默认实现(对于大部分应用程序来说已经足够了)。
- 继承默认实现类,自定义子类以调整其的行为。
API和支持实时通信的SignalR。新的框架增加了他们自己的配置和约定,且每个框架都有自己的长处和怪异之处,总体结果来看,就是一团糟。
Linux and Core是一个全新的框架。它更简单,易于使用,并且甩掉了来自Web Forms的历史遗留问题。而且,它基于.NET Core,因此支持在各种平台和容器上开发Web应用程序和部署。
Core MVC体系结构为应用程序变得可维护和可测试提供了一个良好的开始,因为可以自然地将不同的问题分解为独立的部分。此外,每个 Core MVC框架都可以被隔离并替换为单元测试,这可以使用任何流行的开源测试框架来执行,比如在第一章中将介绍的xUnit 7。
The Core platform and the MVC控制器编写干净、简单的单元测试,以及提供框架组件的Mock实现来模拟任何场景。即使你以前从未写过单元测试,这也是一个好的开始。
Clean URLs were hard to implement in earlier frameworks, but 平台随着每个主要版本的发展而发展,支持了乃至定义了现代编程的最新技术。 Core构建的,因此它的API可充分利用C#程序员熟悉的语言和运行时创新,包括await关键字、扩展方法、lambda表达式、匿名类型、动态类型以及LINQ。
与以前的Microsoft Web开发平台不同,你可以自由下载 Core MVC的源代码,甚至修改和编译自己的版本。当你的调试跟踪进入到系统组件中,并且想要进入其代码(甚至读取原始程序员的注释)时,这是非常宝贵的。 如果正在构建高级组件,并希望查看存在哪些开发可能性或内置组件实际如何工作,这也很有用。
我将从”所谓 Core MVC适用于现代Web开发的方式,并描述了每个 Core MVC