.NET Core与ASP.NET Core


Answers:


209

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应用程序”。

此图显示了所涉及技术的关系(摘自此博客文章.NET Web应用程序技术

在这里,您可以看到ASP.NET Core是在.NET Framework和.NET Core的“顶部”构建的,而“ ASP.NET”(现在通常称为“经典ASP.NET”)仅是.NET Framework。


22
那么我们称之为经典ASP呢?“古老的ASP”?:p
Dan Schnau

1
因此,如果应用程序使用开发ASP.NET Core ,然后在Web服务器上做我们需要安装.NET Core RuntimeASP.NET Core runtime或仅仅ASP.NET Core runtime是足够的
LP13

根据版本的不同,2.1会将其分开,但是只要在服务器上安装“主机捆绑包”,就可以了。如果您在.NET Framework上为ASP.NET Core开发,则仍需要用于必需的IIS模块的托管捆绑软件
Martin Ullrich,

3
@DanSchnau,我们拥有“经典ASP”,“ ASP.NET”又称为“经典ASP.NET”和“ ASP.NET Core”,因此完全没有冲突:)
Gouda

@ LP13:没有“ ASP.NET Core Runtime”,只有一堆不能自行运行的软件包(没有预安装或作为独立应用程序交付的.NET Core)
Tseng

43

使用.NET Core的 ASP.NET Core-所有依赖项都是自包含的,可以使用大多数NuGet软件包,不能使用Windows特定的软件包,可以在Windows,Linux和Mac上执行。

使用.NET Framework的 ASP.NET Core-大多数依赖项都是自包含的,仅在Windows上执行,可以访问Windows特定的NuGet程序包,需要在计算机上目标安装的.NET Framework版本。


8
谁命名这些东西?这真是令人困惑。
尼克

1
@尼克:微软营销。他们对此有悠久的历史。他们还没有发现网络-使用商品的普通名词(在搜索引擎世界中效果不佳,在搜索引擎世界中,更具体,不太常用的单词更好,最好是字典中没有的唯一单词)。
Peter Mortensen

23

ASP.NET Core是.NET Core支持的工作负载之一。

.NET Core指南

.NET Core本身包括一个单一的应用程序模型-控制台应用程序-对工具,本地服务和基于文本的游戏很有用。.NET Core之上还构建了其他应用程序模型以扩展其功能,例如:

  • ASP.NET核心
  • Windows 10通用Windows平台(UWP)
  • Xamarin表格

对我来说,这是一个更相关的答案。控制台应用程序的.Net Core,Web应用程序的ASP.Net Core。
肖恩·张

5

.NET Framework是最新版本。4.8之后将不会再有另一个。Microsoft将继续使用.NET Core。从此时开始,您应该在项目中首选.NET Core。


2

最重要的是,我想补充一下可能会对某人有所帮助。

.NET Core请求管道中有一种称为中间件注入的东西。如果实施正确,这将非常有用,因为它可以自动拦截应用程序异常,并使得在一处记录变得容易得多,而不是登录每种方法。


您可以在答案中添加一个或多个参考文献/链接吗?
Peter Mortensen
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.