选择用一个新的框架学习和开发是一项巨大的投资,因此尽早确定它是否适合你很重要。本章提供了一些有关ASP.NET Core的背景知识,如:它是什么,它是如何工作的,以及为什么您应该考虑它来构建Web应用程序。
如果您是.NET开发的新手,本章将帮助您了解.NET环境。对于现有的.NET开发人员,本章将提供指导并说明现在是否是考虑将重点转移到.NET Core和.NET 5.0的适当时机,以及ASP.NET Core与以前版本的ASP.NET相比可以提供的优势。
在本章结束时,您应该对.NET环境、.NET 5.0的作用以及ASP.NET Core工作的基本机制有了一个很好的概述,因此,不用多说,让我们深入了解吧!
1.1 ASP.NET Core 简介
ASP.NET Core是一个跨平台、开源的Web应用程序框架,您可以使用它快速构建动态的、服务器端呈现的应用程序。您也可以使用ASP.NET Core创建可供移动应用程序、基于浏览器的单页应用程序(如Angular和React)或其他后端应用程序使用的HTTP API。
ASP.NET Core为构建应用程序提供了结构、帮助函数和框架,这使您不用自己编写大量代码。ASP.NET核心框架代码首先处理客户端请求,然后调用应用程序业务逻辑中的方法,如图1.1所示,该业务逻辑是应用程序的核心。您可以在这里与其他服务交互,例如数据库或远程API,但您的业务逻辑通常不直接依赖于ASP.NET Core。
图1.1 典型的ASP.NET核心应用程序由几个层组成。ASP.NET Core 框架代码处理来自客户端的请求,解释复杂的网络代码。然后,框架调用您使用框架提供的原语编写的处理程序(RazorPages和WebAPI控制器)。最后,这些处理程序调用应用程序的业务逻辑,这些业务逻辑通常是C#类和对象,没有任何特定于ASP.NET Core 的依赖关系。
在本小节中,我们主要介绍
- 使用Web框架的原因
- 以前的ASP.NET框架的优点和局限性
- 什么ASP.NET Core 及其推动力
在本节结束时,您应该对ASP.NET Core的创建原因、其设计目标以及您可能想要使用它的原因有一个很好的理解。
1.1.1 使用web框架
如果你是网络开发的新手,那么进入一个有很多流行语和大量不断变化的产品的领域可能会让人望而却步。您可能会想,如果它们都是必需的,那么从服务器返回文件真的有那么困难吗?
嗯,在不使用web框架的情况下构建静态Web应用程序是完全可能的,但其功能将受到限制。一旦你想提供任何安全性或灵活性,你就很可能会遇到束手无策,这时,最初吸引你的简单感将在你眼前变得非常渺小。
正如桌面或移动开发框架可以帮助您构建本地应用程序一样,ASP.NET Core 使编写Web应用程序相比从头开始构建,显得一切都会更快、更容易、更安全。它包含一些常见的库,如:
- 创建动态变化的网页
- 允许用户登录您的Web应用
- 允许用户使用其Facebook帐户使用OAuth登录到您的Web应用
- 为构建可维护的应用程序提供通用结构
- 读取配置文件
- 提供图像文件
- 记录对Web应用的请求
任何现代web应用程序的关键都是生成动态网页的能力。动态网页可以根据当前登录的用户显示不同的数据,也可以显示用户提交的不同内容。如果没有动态框架,就不可能登录网站或在页面上显示任何类型的个性化数据。简而言之,像亚马逊、eBay和Stack Overflow(见图1.2)这样的网站是不可能实现的。
图1.2 Stack Overflow 网站(https://stackoverflow.com)通过使用ASP.NET Core,几乎完全是动态内容。
ASP.NET的优点和局限性
ASP.NET Core是Microsoft 于2016年6月发布的ASP.NET Web框架的更新。ASP.NET的早期版本已经进行了许多增量更新,重点是提高开发人员的生产效率并优先考虑向后兼容性。ASP.NET Core通过进行重大的架构更改,重新思考web框架的设计和构建方式,打破了这一趋势。
ASP.NET Core 在很大程度上归功于其ASP.NET的传承,虽然许多功能从以前版本继承而来,但是ASP.NET Core 是一个新的框架。整个技术栈已经被完全重写,其中包括Web框架和底层平台。
变化的核心是ASP.NET一直以来保持的能够在与其他现代框架进行比较时保持领先的思想,但不管如何,现有的.NET开发人员还是可以继续保持足够熟悉程度。
要了解微软为什么决定构建一个新的框架,必须了解以前的ASP.NET Web框架的优点和局限性。
ASP.NET的第一个版本于2002年作为.NETFramework1.0的一部分发布,以响应当时传统的ASP和PHP脚本环境。ASP.NET WebForm 允许开发人员使用图形设计器和参考桌面应用程序构建技术的简单事件模型来快速创建Web应用程序。
ASP.NET Framework 允许开发人员快速创建新的应用程序,但随着时间的推移,Web开发生态发生了巨大的变化。ASP.NET WebForm 在构建更大的应用程序时遇到了许多问题。特别是其缺乏可测试性、复杂的状态模型以及生成HTML的能力不足(使客户端开发变得困难)导致开发人员不得不重新评估使用其他选项的框架与工具的必要性。
作为回应,微软于2009年发布了ASP.NET MVC的第一个版本,该版本基于模型-视图-控制器模式,这是其他框架(如Ruby on Rails、Django和Java Spring)中使用的常见Web设计模式。该框架允许您将UI元素与应用程序逻辑分离,使测试更容易,并对HTML生成过程提供了严格的控制。
ASP.NET MVC自第一次发布以来又经历了四次迭代,但它们都是基于System.Web.dll 文件提供的相同底层框架构建的。此库是.NET Framework的一部分,因此它与所有版本的Windows一起预装,并包含ASP.NET在构建Web应用程序时使用的所有核心代码。
这种依赖既有优点也有缺点。一方面,ASP.NET框架是一个可靠的、经过实战测试的平台,适合在Windows上构建Web应用程序。它提供了广泛的功能,这些功能已经在生产环境中使用多年,几乎所有Windows Web开发人员都知道它。
另一方面,这种依赖限制了对底层System.Web.dll 文件的更改。这些更改影响深远,因此推出速度缓慢。这限制了ASP.NET自由发展的程度,导致发布周期仅每隔几年发生一次。另外,与Windows Web主机 Internet信息服务(IIS)的显式耦合,这也阻止了它在非Windows平台上的使用。
最近,微软宣布.NET Framework已“完成”。它不会被删除或替换,但也不会发布任何新功能。因此,基于System.Web.dll 的ASP.NET也不会发布新功能或更新。
近年来,许多Web开发人员开始研究可以在Windows以及Linux和macOS上运行的跨平台Web框架。微软觉得是时候创建一个不再与Windows捆绑在一起的框架了,于是ASP.NET Core 诞生了。
1.1.2 什么是ASP.NET Core?
使用ASP.NET Core创建Web框架的动机具有以下四个主要特点:
- 跨平台运行和开发
- 采用模块化架构,便于维护
- 完全作为开源软件开发
- 适用于Web开发的当前趋势,例如客户端应用程序和部署到云环境
为了实现所有这些目标,微软需要一个可以为创建基本对象(如列表和字典)以及执行简单的文件操作提供底层库的平台。到目前为止,ASP.NET开发一直专注并依赖于只适用于Windows的.NET Framework。对于ASP.NET Core,Microsoft创建了一个在Windows、Linux和macOS上运行的轻量级平台,称为.NET Core(以及.NET 5.0),如图1.3所示。
图1.3 ASP.NET Core、ASP.NET、.NET Core/.NET 5.0和.NET Framework之间的关系。ASP.NET Core在.NET Core和.NET 5.0上运行,因此它可以跨平台运行。相反,ASP.NET仅在.NET Framework上运行,因此它与Windows操作系统绑定。
定义:NET 5.0是继3.1之后的下一个.NET Core版本。它将.NET Core和其他.NET平台统一为一个运行时和框架。术语.NET Core和.NET 5.0通常可以互换使用,但为了与Microsoft的语言保持一致,本文使用术语.NET 5.0来指最新版本的.NET Core,而在指以前的版本时使用术语.NET Core。
.NET Core(及其后续版本.NET 5.0)采用了许多与.NET Framework相同的API,但它更具模块化,只实现了.NET Framework的一部分功能,目的是提供更简单的实现和编程模型。尽管它在许多API中使用了类似的代码,但它是一个完全独立的平台,而不是.NET Framework的分支。
仅使用.NET5.0,就可以构建跨平台运行的控制台应用程序。Microsoft创建ASP.NET Core作为控制台应用程序之上的附加层,因此转换为Web应用程序需要添加和组合库,如图1.4所示。
图1.4 ASP.NET Core 应用程序模型。.NET5.0平台为运行命令行应用程序提供了基本控制台应用程序模型。添加web服务器库可将其转换为ASP.NET Core web应用程序。通过其他库添加了其他功能,如配置和日志记录。
通过将ASP.NET Core web服务器添加到.NET 5.0的应用程序可以作为web应用程序运行。ASP.NET Core 由许多小型库组成,您可以从中选择,为应用程序提供不同的功能。实际上没有应用程序需要所有可用的库,只需要添加所需的库。有些库是常见的,几乎会出现在您创建的每个应用程序中,例如用于读取配置文件或执行日志记录的库。其他库基于这些基本功能构建,提供特定于应用程序的功能,例如通过Facebook或Google进行第三方登录。
大多数ASP.NET Core使用的库都可以在GitHub上找到,并被Microsoft ASP.NET Core组织中存储在 https://github.com/dotnet/aspnetcore 。您可以在那里找到核心库,如身份验证库和日志库,以及更多的外围库,如第三方身份验证库。
所有ASP.NET Core应用程序都将遵循类似的基本配置设计,正如公共库所建议的那样,但总体而言,框架是灵活的,允许您自由创建自己的代码约定。ASP.NET Core这个有点模糊的术语涵盖了这些公共库、基于它们的扩展库以及它们所提倡的设计约定。
标签:Core,ASP,框架,Web,应用程序,NET From: https://www.cnblogs.com/SoftwareLife/p/16942482.html