ASP.NET MVC 5、ASP.NET Core MVC 5 有啥区别?

Posted

技术标签:

【中文标题】ASP.NET MVC 5、ASP.NET Core MVC 5 有啥区别?【英文标题】:What is the difference between ASP.NET MVC 5, ASP.NET Core MVC 5?ASP.NET MVC 5、ASP.NET Core MVC 5 有什么区别? 【发布时间】:2022-01-04 08:26:32 【问题描述】:

我知道 .NET Core 3.1 之后是 .NET 5(这本身就是 .net core)。

我也知道 .NET 4.8 是最后一个仅 Windows(非 .net 核心)框架。

所以我认为 ASP.NET MVC 5、ASP.NET Core MVC 5 都是一样的。对吗?

【问题讨论】:

一点也不。 ASP.NET MVC 5 在 .net 框架上运行,该框架本质上是一个已停产的产品线。所有新的开发都应该在 .net 5/6 上。 但是 .NET 4.8 不是最终的仅 Windows(非 .net 核心)框架吗? .NET Framework 4.8 是最终的纯 Windows 框架,是的。您在此处缺少 Framework 一词。见here。重申一下 Tanveer 所说的,.NET Framework 实际上已停止使用,.NET Core 已成为 .NET 5、.NET 6 等等。 让我困惑的是——既然你说.NET Core已经变成.NET 5,那为什么.NET 5 MVC和.NET 5 Core MVC不一样呢? ASP.Net MVC 5 在 .Net Framework 4.8 上运行 - ASP.Net Core 5(包括所有 MVC 和 Web API 位)在 .Net 5 上运行,这是 .Net Core 3 之后的版本(没有 .Net Core 4) 【参考方案1】:

https://en.wikipedia.org/wiki/ASP.NET_MVC

ASP.NET MVC 1.0 于 2009 年 3 月 13 日发布,它不是 .NET Framework 的一部分,它运行在 ASP.NET 之上,后者当时是 .NET Framework 3.5 的一部分。

MVC 的版本与 .NET Framework/ASP.NET 版本不对应。 MVC 经历了版本 2、3 和 4,ASP.NET MVC 5 于 2013 年 10 月 17 日发布。同时 .NET Framework 从 3.5 到 4.7,现在是 4.8,但永远不会达到更高的主要版本。


然后 .NET Core 在工作标题“vNext”下启动。它是 .NET Core 1,然后是 2,然后是 3。.NET Core 包括 ASP.NET Core,其中包括 ASP.NET Core MVC。此版本及其框架。

现在为了避免混淆,他们不想将 .NET Core 的第四个版本命名为 4,因为这会与 .NET Framework 4 发生冲突(不是在文件系统级别,而是在开发人员的头脑中)。所以他们统一了 .NET Framework 和 .NET Core,并称之为 .NET 5。


.NET 5 包含 ASP.NET Core 5,其中包含 ASP.NET Core MVC 5,与 ASP.NET MVC 5 相同。

旧的 .NET Framework(当前为 4.8)和 ASP.NET MVC 5.2.7 被认为已完成。也许他们会收到安全补丁,但您不应该在其中进行新开发,并跳过提及它的教程。

【讨论】:

和以往一样,微软一直让很多人对 .Net 平台和 ASP.Net 的命名和编号感到困惑。 @phuzi 是的,他们应该从 .NET Core 6 开始,以防止任何混淆。然后我们会有类似“.NET Core 4.8 在哪里?”之类的问题......:P 我现在明白了,我把数字 5 弄混了(.NET 5 和 MVC 5) 不,不完全是。没有 ASP.Net Core MVC 5!它只是 ASP.NET Core 5(名称中没有 MVC,它只包括 MVC 和 Web API 和 Razor Pages 以及所有其他 ASP.Net 东西) 如果它可以是“ASP.Net Core $verison MVC”,这将非常有帮助,尽管当您不讨论特定版本时这无济于事。【参考方案2】: 在解决方案结构上,ASP.NET Core 5 和 ASP.NET MVC 5 有几个不同之处。 ASP.NET Core 是一个可组合的框架,用于实现基于 Web 和云的应用程序。 ASP .NET MVC 5 有助于选择 MVC 或 Web API,我们可以在创建 Web 应用程序时同时选择两者。但在 Core 中,我们可以为 MVC 和 Web API 选择单对齐的 Web 堆栈。 文件结构因它们而异。 web.config、Global.asax 文件的 ASP.NET MVC 5 concicts。但核心不包含这些文件,而是包含 appsettings.json。 ASP .NET Core 不需要 IIS 来托管,因为它是跨平台的并且是自托管的。 在 ASP.NET Core 应用程序中,依赖注入是内置的,不需要对 DI 进行设置。但在 ASP.NET MVC 中,我们希望使用单独的 DI 容器,然后构建项目以使用 DI。

【讨论】:

以上是关于ASP.NET MVC 5、ASP.NET Core MVC 5 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

解读ASP.NET 5 & MVC6系列

备忘ASP.NET MVC 5 升级到 ASP.NET Core MVC 的部分变化

ASP.NET 5 简介 MVC

Asp.net 5 (MVC6) Areas 分区

VS 2015 ASP.NET 4 MVC 5 中的打字稿 - 设置和选择的工作组合是啥?

解读ASP.NET 5 & MVC6系列:依赖注入