我一直在埋头做各种各样的项目,显然微软一直在忙着做一些大的改变,这让我很困惑.ASP.NET Core第一次出现在我的雷达上是在go 年我安装Visual Studio 2017并go 创建一个新项目时,突然有了一些 Select .NET框架.净标准,以及.净核心.所以我仔细研究了一下,发现后两个在某种程度上是完整框架的缩写版本.我读了Scott Hanselman ASP.NET 5 is dead - Introducing ASP.NET Core 1.0 and .NET Core 1.0的这篇文章,我也发现了这个,这让我远离了ASP.净核心:Choose between ASP.NET and ASP.NET Core.我的结论是"核心是新的,你可以继续使用完整的框架."所以我创建了一个新的ASP.NET MVC网站使用.NET Framework 4.6.2和Microsoft.AspNet.Mvc 5.2.3.

自从创建这个项目以来,我在MVC和Entity Framework中都发现了一些似乎有缺陷的地方,结果却发现Web上唯一提到它们的地方似乎是Core,而且这是唯一考虑修复它们的地方.

现在,今天,我试图查找System.Web.Mvc.Controller和System.Web.Mvc.JsonResult上的文档,除了核心文档之外,它都不见了.我最终还是用挖洞把它抬高了here%,上面说它已经不再维护了?

我对Core理解了this much%,并说,"好吧,我为什么要关心呢?我会继续做我正在做的事情,并在完成后再判断一下."但现在看来,4.6.2甚至不再受支持.有人能解释一下是怎么回事吗?我的Net 4.6.2/MVC 5.2.3项目现在还没写完就过时了吗?如果不是,为什么这些文件被退役并隐藏起来?我担心我的一些依赖项可能甚至不适用于Core或与Core不兼容.

推荐答案

(This answer is regularly updated whenever a new .NET announcement is made, and it has been updated with details of ASP.NET Core 3.0, .NET 3, and .NET 5)

微软需要好好教训一顿,因为过go 三年里微软的混乱程度超过了五年.NET内核/DNX,ASP.网络核心.NET标准.网5和其他.

(我要说的是,作为德夫迪夫的前FTE SE…("你好,来自16号楼!"))

  • ASP.NET又名"System.Web"现在已经死了.WebForms已死(万岁!)
  • ASP.NET MVC launched in 2008 was built on-top of ASP.NET, but bypassed most of the WebForms infrastructure.
    • ASP.NET MVC有自己的版本控制,与ASP.NETASP.NET Web API(以及ASP.NET Core)不同.你链接到了ASP.NET MVC 5的文档-this is not the same thing as 105.
  • 2012年推出的ASP.NET Web APIASP.NET MVC的sibling ,它也在ASP.NET的基础上构建,但有自己的类库(System.Web.Http),与ASP.NET MVC(System.Web.Mvc)没有太多共享.正在try 合并ASP.NET Web API服务与ASP.NET MVC web应用程序在同一个项目中是一个痛苦的练习.
  • ASP.NET MVC 5于2014年发布,是对ASP.NET MVC 4的更新.这与ASP.NET 5无关.
  • ASP.NET MVC 6人从未被释放.它被卷进了ASP.NET 5,然后变成了ASP.NET Core.它的目标是将ASP.NETMVC和ASP.NETWeb API组合到单个平台中.
  • ASP.NET Core作为ASP的改进设计于2016年推出.NET MVC 5,但不依赖System.Web.dll或任何(现在是遗留的)IIS依赖项(例如旧的请求管道,IHttpHandlerIHttpModule不再存在).
  • .NET Core is a new version of the CLR and BCL which is explicitly portable and runs on Windows, Linux and macOS.
    • 与Windows独有的full-fat.NET Framework相比,.NET Core 1.0.NET Core 2.0的基类库被认为是贫乏的.
    • 随着.NET Core 3.0以及WinForms、WPF和.NET Framework其他组件的开源,.NET Core现在已经成为Windows中.NET Framework的替代产品,用于新的应用程序开发.
  • .NET 5 will be the new name of .NET Core after .NET Core 3 is released (.NET 5 is expected around late 2020).
    • .NET 5ASP.NET 5.0ASP.NET MVC 5有关.
    • 没有.NET Core 4.NET Framework 5.0.
  • "ASP.NET Core in .NET"似乎是专门针对.NET 5及更高版本的ASP.NET Core首次发布的最终名称.

我注意到"Core"是微软针对使用.NET Core的当前一代.NET平台的hot个品牌(即它们没有Windows依赖,因此是可移植的).(就像上世纪90年代,如果微软使用COM或ActiveX,比如Active Desktop、Active Channels、Actimates、Active Directory、ActiveSync等,他们是如何将"Active"附加到事物上的).

  • 此外,Entity Framework Core还缺少Entity Framework 6的许多功能,这是因为它基本上是一个重写,但最终会达到奇偶性

因为有很多.NET运行时和BCL当前可用(.NET Framework、.NET Core、UWP、Xamarin(使用Mono)、Unity等)Microsoft推出了.NET Standard,这基本上是可移植类库概念的重新启动:Visual Studio项目的目标是公共功能的已知子集,而不是特定的实现(我只是希望他们将版本编号从4开始,以匹配.NET Framework,而不是从1.0开始,因为这让我重新考虑了2001.)——但重要的是ASP.NET Core 1ASP.NET Core 2目标.NET标准,而不是.NET核心-这意味着ASP.NET Core运行在.除了在Windows上运行外,还可以在Windows上运行NET Framework.NET内核.

我注意到,所有以前的.NET跨平台兼容性技术现在都已过时(包括面向Compact Framework子集、可移植类库,甚至Visual Studio中的"共享项目"),因为它们原本是用于不再存在的其他.NET版本,如.NET Compact Framework、XNA、Silverlight和Windows Phone 7的子集.

2019年5月,Microsoft announced ".NET 5".简而言之,.NET Framework正在被.NET Core所取代,而下一个版本的.净核心后.NET Core 3.0将命名为.NET 5).除了以下事实之外,本公告根本不涉及ASP.NET Core.NET5将完全支持在其上运行的ASP.NET Core 3.0个应用程序.

在2020年以Covid为主题的整个夏天,微软最终确定了.NET5和ASP.NET Core.截止到2020年10月,ASP.NETCore的NuGet包版本已经从3.1.x跃升到5.0.0--所以看起来ASP.NETCore的下一个主要发行版将是第5.x.x版,它建议将其第may版命名为"ASP.NET Core 5",尽管最近微软的博客文章建议这个名称将是"ASP.NETCore for.NET5"-尽管考虑到整个线程是通过"ASP.NETMVC5"而不是"ASP.NET5"在念力上创建的,我确信它的命名要么是"ASP.NETCore5",要么是"ASP.NETCorefor.NET5"不,先生-伊-鲍勃!

总结一下:

  • ASP.NET MVC 5:
    • ASP.NET MVC 5ASP.NET MVC 4的短命继承者.
    • 2014年,它与ASP.NET Web API 2部一起发布.
    • 它实际上运行在ASP.NET 4之上(即System.Web.dll的Net4.x版本).请注意,整个ASP.NET MVC库现在已经过时.
  • ASP.NET 5已下线并更名为ASP.NET Core,它包含内置的"ASP.NET MVC 5"功能.
  • ASP.NET Core 1ASP.NET Core 2都可以在任何一台上运行.NET核心(跨平台)或.NET框架(Windows),因为它的目标是.净标准.
  • ASP.NET Core 3现在只能在.NET Core 3.0上运行.
  • ASP.NET Core 4不存在,也从来没有.
  • ASP.NET Core 5存在(截至2020年8月),但它的官方名称似乎是"ASP.NET Core for.NET 5",而且它只在.NET 5上运行.

全部(按时间顺序排列):

  • ASP.NET 1 - 2001. 包括WebForms人.继续跑.NET Framework 1.0和1.1.System.Web.dll
  • ASP.NET 2.0 - 2005. 包括WebForms人.继续跑.NET框架2.0.System.Web.dll
  • ASP.NET MVC 1ASP.NET MVC 2-2008-2009.运行在ASP.NET 2.0之上.System.Web.Mvc.dll美元.
  • ASP.NET 4.0 - 2010. 包括WebForms人.继续跑.NET框架4.0.没有ASP.NET 3.0.System.Web.dll
  • ASP.NET MVC 3ASP.NET MVC 4-2010-2013.在ASP上运行.NET 4.0.System.Web.Mvc.dll
  • ASP.NET Web Api 1-2012年.跑在ASP.NET 4.0号上面.System.Web.Http.dll美元.
  • ASP.NET MVC 5 - 2013. 只是又一次更新到ASP.NET MVC.在ASP.NET 4.0的基础上运行,但在OWIN下也可以独立运行,不需要System.Web.dll.
  • ASP.NET Web API 2-2013年.ASP.NET MVC 5的sibling 姐妹.也可以在没有ASP.NET 4.0的情况下运行.
  • ASP.NET MVC 6 - 2014-2015. 在达到发布候选状态后中止,并在2016年重新启动为ASP.NET Core MVC 1.0,这是ASP.NET Core 1的MVC和Web API组件.
  • ASP.NET 5 - 2014. ASP的主要重启.净described here.主要的变化包括合并MVC、网页和Web API,以及删除WebForms.ASP.NET 5达到了发布候选状态,但随后被更名为ASP.NET Core.从来没有过ASP.NET 6.
  • ASP.NET Core 1 - 2016. 在.NET Framework 4.5.NET Core 1.0上运行.
  • .NET Core - 2016. 便携且小巧.NET运行时和类库.
  • .NET Standard - 2017. 一种让程序针对所有应用程序中都会出现的一组通用功能的方法.NET实现(.NET Framework 4.5及更高版本、.NET Core 2.0及更高版本、Xamarin等).
  • ASP.NET Core 2-2017-2018:我们今天的处境.在.NET Framework 4.6.1.NET Core 2.0上运行.(截至2018年底,现在已有ASP.NET Core 2.1).
  • ASP.NET Core 3-In late October 2018 Microsoft announced ASP.NET Core 3.0 will now only run on the upcoming .NET Core 3.0(因此它将不再在.NET Framework 4.7.x上运行).这是一个有争议的举动,因为这意味着现在没有ASP的升级路径.网络核心2.从x到ASP.网络核心3.x用于在上运行的应用程序.NET框架4.7.因为依赖关系不支持x.净核心,这意味着可能不会有一个.NET标准3.0.
  • .NET 5-2019年5月:微软发布了下一个版本的..NET Core 3.1之后的NET Core将不会被称为".NET Core 4.0"或".NET Core 5.0",而是会跳转到版本号5.0,放弃"Core"品牌,因此是".NET 5.0".
  • ASP.NET Core 3.0 on .NET 5-在2019年5月发布的.NET 5中,微软还表示ASP.NET Core 3.0应用程序将在.NET 5上运行.目前尚不清楚ASP.NET Core 2.x应用程序是否能够在.NET 5上原封不动地运行.
  • ASP.NET Core vNext on .NET 5-2020年8月:即将发布.NET 5Microsoft has bumped the version numbers of the NuGet packages for ASP.NET Core to 5.0.0.微软还没有正式提到这个新版本的ASP.NET Core被称为"ASP.NET Core 5",但我认为这已成定局.
  • ASP.NET Core for .NET 5 A more recent blog article from September 2020 suggests that Microsoft is referring to the next version of ASP.NET Core as "ASP.NET Core for .NET 5" (yes, that's a mouthful - at least it isn't as ambiguous as earlier names).

Timeline and block diagram

(我做这个的时候有点忘乎所以了…)

Diagram with a timeline of ASP.NET and a block diagram showing how the components of .NET Framework, ASP.NET and ASP.NET MVC come together

Asp.net相关问答推荐

从数据库中检索数据的最快方法

使用进程外会话状态的 ASP.NET 应用程序中的 SQL Server 连接问题

Server.Transfer 在执行子请求时抛出错误.如何解决?

SqlBulkCopy 超时

如何通过 Asp.net 中的命令参数传递多个值?

如何从以特定名称开头的 appsettings 键中获取所有值并将其传递给任何数组?

为什么默认情况下不允许 GET 请求返回 JSON?

问题映射 HttpHandler --> HTTP Error 404 Not Found

带有 ASP.NET MVC 6 锚标记助手的 QueryString

如何从 SQL Server 2008 本身获取客户端 IP 地址?

如何以编程方式将标签的前景色设置为其默认值?

在 Visual Studio 2010 Professional 中找不到请求的 .Net Framework 数据提供程序

InvalidOperationException:无法为角色创建 DbSet,因为此类型未包含在上下文模型中

如何将 LINQ 左外连接限制为一行

SQLServer 与 StateServer 的 ASP.NET 会话状态性能

Web API 必填参数

如何使用 jquery 设置单选按钮 Select 的值

ASP.NET 核心,更改未经授权的默认重定向

ASP.NET MVC 5 Web.config:FormsAuthenticationModule或FormsAuthentication

ASP.NET 网格视图与列表视图