.NET Core 是 .NET Framework 的新一代版本,是微软开发的第一个具有跨平台 ( Windows、Mac OSX 、Linux ) 能力的应用程序开发框
ASP.NET Core 是 Microsoft 新开发的,基于 .NET Core 的 Web 开发框架
ASP.NET Core 是对 ASP.NET 的重新设计,变得快速,灵活,现代,并且可以跨不同平台工作。
如果你之前已经接触过 ASP.NET,有过任何 MVC 或 Web API 的经验,那么你会有很强烈的熟悉感。
在本教程中,我们将会学习如何使用 ASP.NET Core 开发网页应用程序, 创建、编辑和查看数据库中的所有数据
ASP.NET 简史
ASP.NET 设计之初,就为 Web 而生,也自那时起,该框架经历了一个稳步的演变,并最终将我们引导至其最新的 ASP.NET Core 2.1 版本
ASP.NET 的演变史,其实就是一部 Web 框架的演变史的完全版,也是过去这么多年互联网的发展史
-
ASP.NET Core 2.1 不是 ASP.NET 4.x 的延续,或者这么说, ASP.NET Core 1.0 不是 ASP.NET 4.6 的延续
-
ASP.NET Core 是一个全新的 Web 框架,它与 ASP.NET 并行发展
-
ASP.NET Core 是对 ASP.NET 的重新设计,更小,也更模块化
-
虽然能从 ASP.NET Core 中看到很多 ASP.NET 的熟悉身影,但这并不完全一样, ASP.NET Core 是对 ASP.NET 环境的一个重大改变
什么是 ASP.NET Core?
ASP.NET Core 是一个由微软创建的,用于构建 web 应用、API、微服务 的 web 框架。它使用常见的模式,诸如 MVC(Model-View-Controller)、依赖注入,和一个由中间件构成的请求处理管线。它基于 Apache 2.0 许可证开放源码,就是说,源代码可以自由获取,并且欢迎社区成员以 缺陷修复 和 新功能提交 的方式进行贡献。
ASP.NET Core 运行在微软的 .NET 运行时库上,类似于 Java 的 虚拟机(JVM)或者 Ruby 的解释器。有几种语言(C#,Visual Basic,F#)可以用来编写 ASP.NET Core 程序。C# 是最常见的选择,我在本书中也会采用它。你可以在 Windows、Mac,和 Linux 上构建并运行 ASP.NET Core 应用。
ASP.NET Core 的优点
ASP.NET Core 具有以下优点:
-
ASP.NET Core 有着大量的体系结构更改,这些更改使得 ASP.NET Core 更精简和更模块化
-
模块化的设计,使得 ASP.NET Core 不再基于
System.Web.dll
,而是基于一组精细且充分考虑的NuGet
包 -
ASP.NET Core 允许我们优化应用程序,只包含必要的 NuGet 包
-
更为精简的应用程序可以带来更高的安全性,更少的维护,更好的性能以及更低的成本
使用 ASP.NET Core ,我们可以获得以下好处:
-
能在 Windows,Mac 和 Linux 上构建和运行跨平台的 ASP.NET 应用程序
-
使用 ASP.NET Core 可以构建和并行运行版本化的应用程序
-
新的工具简化了现代 Web 应用程序的开发
-
统一的方式构建 Web UI 和 Web API
-
云环境配置
-
内置依赖注入
-
使得 Razor 标记更接近原声 HTML 的标签助手
-
应用程序即可以在 IIS 中运行,也可以在自己的进程中运行
又一个 web 框架,需求何在?
现存的 web 框架选项已经很多了:Node/Express、Spring、Ruby on Rails、Django、Laravel 等等,数不胜数。ASP.NET Core 又有什么可取之处呢?
-
速度 ASP.NET Core 很快。因为 .NET Core 是编译运行的,执行速度远高于解释执行的语言,比如 JavaScript 或者 Ruby、ASP.NET Core 也已经为多线程和异步任务作了专门的优化。与使用 Node.js 写的代码相比,执行速度高出 5-10 倍是很正常的。
-
生态 ASP.NET Core 可能初出茅庐,但 .NET 却已久经考验。在 NuGet(.NET 的包管理系统,类似 npm、Ruby gems,或者 Maven)上有成千上万的软件包。有现成的包可用来完成 JSON 反序列化、数据库连接、PDF生成,或者几乎你能想到的任何需求。
-
安全性 微软的开发团队很注重安全性,ASP.NET Core 的构建就是为彻底的安全性。它已经自动处理了净化输入数据和跨域伪造请求(CSRF),你就不用操心这些了。你同时还享有 .NET 编译器的静态类型检测的优势,它像个时刻警惕着,还有些强迫症的审校者。这样,在使用一个变量或者某些数据时,那些无意识的错误就插翅难逃。
-
作为对比,这里要指出, .NET Framework 是另一个 .NET标准 的实现,它只能运行在 Windows 上。在 .NET Core 出现并把 .NET 推向 Mac 和 Linux 之前,它是唯一的 .NET 运行时库。 ASP.NET Core 也可以跑在 Windows 专用的 .NET Framework 上,但我不会过多涉及这个主题。
如果你已经被这些命名搞糊涂了,别发愁!咱们马上就要写代码进行实践了。
.NET Core 和 .NET 标准
你可能还会听说 .NET Core 和 .NET标准,这些命名有些混乱,所以在此做一简短的释疑:
.NET 标准 是一个平台无关的接口,它定义了特性和 API。值得指出的是,.NET 标准并不等同于任何实际的代码或者功能,仅仅是 API 的定义。.NET 标准现存多个不同的“版本”或者说级别,反映出提供 API 的数量(或者说 API 所覆盖的广度)。比如 .NET标准2.0 的 API 数量比 .NET标准1.5 多,后者的 API 又比 .NET标准1.0 多。
.NET Core 是可安装在 Windows、Mac或者Linux上的 .NET 运行时库。它在各个操作系统上,使用对应的平台相关代码实现了定义于 .NET 标准中的 API。你将要把它安装到机器上,用来构建和运行 ASP.NET Core 应用程序。
.NET Core与 .NET Framework 相比优势包括: 跨平台、提高性能、并行版本控制、新API、开源。目前NET Framework 还不会被 .NET Core 代替。Core会试图缩小二者在实现上的差距,下表将 ASP.NET Core 与 ASP.NET 4.x 进行比较:
ASP.NET Core ASP.NET 4.x 针对 Windows、macOS 或 Linux 进行生成 针对 Windows 进行生成 Razor 页面是在 ASP.NET Core 2.x 及更高版本中创建 Web UI 时建议使用的方法 使用 Web 窗体、SignalR、MVC、Web API、WebHooks 或网页 每个计算机多个版本 每个计算机一个版本 比 ASP.NET 4.x 性能更高 良好的性能 选择 .NET Framework 或 .NET Core 运行时 使用 .NET Framework 运行时
运用场景(1) 在什么情况下要求使用 .NET Core包括: 用户有跨平台需求、用户正在面向微服务、用户正在使用 Docker 容器、需要高性能和可扩展的系统、需按应用程序提供并行的 .NET 版本。
(2) 在什么情况下使用.NET Framework包括: 当前使用 .NET Framework(建议扩展而不是迁移)、不可用于 .NET Core 的第三方 .NET 库或 NuGet 包、不可用于 .NET Core 的 .NET 技术、不支持 .NET Core 的平台。
不可用于 .NET Core的.NET技术包括:不能用于 ASP.NET Web 窗体、WCF 服务的实现(将来会考虑在Core上实现)、工作流相关的服务。
欢迎添加个人微信号:Like若所思。
欢迎关注我的公众号,不仅为你推荐最新的博文,还有更多惊喜和资源在等着你!一起学习共同进步!