.NET Core和ASP.NET Core之间究竟有什么区别?
它们是否互斥?我听说ASP.NET Core是建立在.NET Core上的,但它也可以建立在完整的.NET框架上。
那么ASP.NET Core到底是什么?
.NET Core和ASP.NET Core之间究竟有什么区别?
它们是否互斥?我听说ASP.NET Core是建立在.NET Core上的,但它也可以建立在完整的.NET框架上。
那么ASP.NET Core到底是什么?
2020年更新: 请注意,ASP.NET Core 3及以上版本现在依赖于.NET Core,并且不能再在.NET Framework上使用。以下描述适用于ASP.NET Core 1.x-2.x;尽管在ASP.NET Core 3.0中层分离仍然成立,但ASP.NET Core层不能再在3.0+的.NET Framework之上使用。
.NET Core是一款运行时。它可以执行为其构建的应用程序。
ASP.NET Core是一组库,形成了一个用于构建Web应用程序的框架。 ASP.NET Core库可用于.NET Core和“完整的.NET Framework”(已经随Windows一起出货多年)。
混淆的地方在于,使用ASP.NET Core的库和工具构建的应用程序通常被称为“ASP.NET Core应用程序”,这理论上并不表示它是为.NET Core还是.NET Framework构建的。因此,“ASP.NET Core应用程序”也是“.NET Core应用程序”或“.NET Framework应用程序”。
此图显示所涉及技术的关系(摘自此博客文章)
在这里,您可以看到ASP.NET Core是建立在.NET Framework和.NET Core之上的,而“ASP.NET”(现在通常称为“经典ASP.NET”)仅限于.NET Framework。
使用 .NET Core 的 ASP.NET Core - 所有依赖项都是自包含的,可以使用大多数 NuGet 包,无法使用特定于 Windows 的包,可在 Windows、Linux 和 Mac 上执行。
使用 .NET Framework 的 ASP.NET Core - 大多数依赖项都是自包含的,仅能在 Windows 上执行,并且可以访问特定于 Windows 的 NuGet 包,需要在机器上安装目标 .NET Framework 版本。
ASP.NET Core是.NET Core支持的一种工作负载之一。
来自.NET Core指南:
.NET Core本身包括一个应用程序模型--控制台应用程序--它对于工具、本地服务和文本游戏非常有用。在.NET Core基础上构建了其他应用程序模型来扩展其功能,例如:
- ASP.NET Core
- Windows 10通用Windows平台(UWP)
- Xamarin.Forms
.NET Core是.NET Framework的下一代演进版本,它使得微软技术可以在其他操作系统平台上运行,而不仅仅局限于Windows。
ASP.NET是由微软提供的Web框架,用于构建:
ASP.NET只能在Windows平台上运行。
由于.NET Core被创建出来是为了在Linux/macOS上运行微软技术,因此ASP.NET Core是ASP.NET向支持多平台发展的演进。
总之:
ASP.NET Core可以在多个操作系统平台上运行:Windows、Linux和macOS,并且可以运行在.NET Core和.NET 5.0之上。
ASP.NET 4.x(ASP.NET/ASP.NET MVC)只能在Windows操作系统上运行,且只能在.NET Framework上运行。
.NET Framework 已经发布了最后一个版本,4.8 后将不再有新的版本。微软将继续开发和推广 .NET Core,从现在开始您应该更倾向于使用 .NET Core 来进行项目开发。
官方更新(来源):
.NET 5 是 .NET Core 3.1 之后的下一个主要版本。我们将这个新版本命名为 .NET 5 而不是 .NET Core 4,原因有二:
- 我们跳过了版本号 4.x,以避免与 .NET Framework 4.x 引起混淆。
- 我们将“Core”从名称中删除,强调这是未来 .NET 的主要实现。.NET 5 支持比 .NET Core 或 .NET Framework 更多类型的应用程序和平台。
ASP.NET Core 5.0 基于 .NET 5 进行开发,但仍保留“Core”名称,以避免与 ASP.NET MVC 5 混淆。同样,Entity Framework Core 5.0 保留“Core”名称,以避免与 Entity Framework 5 和 6 混淆。