ChatGPT解决这个技术问题 Extra ChatGPT

ASP.NET Core (.NET Core) 和 ASP.NET Core (.NET Framework) 的区别

ASP.NET Core Web (.NET Core) 与 ASP.NET Core Web (.NET Framework) 有什么区别?

.NET Framework 是否提供与 .NET Core 相关的 similar performance

我在工作中无法访问指向我的防火墙策略的链接。但不同之处在于 .NET Core 是跨平台兼容的,并且不使用 .NET Framework。 .NET Framework 项目显然使用 .NET Framework,因此必须在服务器上安装该框架。

C
Community

起初这可能令人困惑,但重要的是要记住:归根结底,“ASP.NET Core”只是一堆可以安装在项目中的 NuGet 包。

.NET Core 上的 ASP.NET Core 是跨平台的 ASP.NET Core。它可以在 Windows、Mac 和 Linux(包括 Docker)上运行。服务器不需要安装 .NET Core - 依赖项可以与应用程序捆绑在一起。

.NET Framework 上的 ASP.NET Core 是“完整”或“桌面”.NET Framework(例如 .NET Framework 4.6.2)上的 ASP.NET Core。这些应用程序只能在 Windows 上运行,但有关 ASP.NET Core 的其他一切都以相同的方式运行。

根据您链接的 benchmarks,两者都将具有比 ASP.NET 4.6 更高的性能,尽管 .NET Core 目前是最高的:

ASP.NET 4.6:<50k req/sec ASP.NET Core (CLR):400k req/sec ASP.NET Core(.NET Core,Linux):900k req/sec ASP.NET Core(.NET Core,Windows): >1.1m 请求/秒

但是,这些基准测试稍旧(2016 年 2 月)并反映了 RTM 之前的代码。如果他们从那以后有所改善,我不会感到惊讶。


拥有两个可以构建的底层框架的目的是什么?使用 .net 核心或完整的 .net 框架与 asp.net 核心一起使用是您必须做出的另一种选择。目标是 .net 核心还没有构建 Web 应用程序所需的所有功能,因此需要完整的 .net 框架
@JustinHomes 应用程序和包需要移植到 .NET Core,有时这很困难,具体取决于它们使用的 API。该选项存在,因此您现在可以在“完整”.NET 上使用 ASP.NET Core,然后如果您想要跨平台功能,将来可以移植到 .NET Core。
@NateBarbettini 已经提出了一个问题。 stackoverflow.com/q/38237576/2056869
@NateBarbettini 如果使用 .NET Framework (CLR) 上的 ASP.NET Core 是否所有 nuget 包都可以工作,还是会因为 ASP.NET Core 出现兼容性问题?
@JonasAxelsson 是的,如果包支持 CLR(即 netstandard1.1 或更高版本,或者 net451 或更高版本)。
N
Nayas Subramanian

带有 .NetCore 的 ASP.NET Core 是一个跨平台(它可以在 Windows、Linux 或其他平台上运行)、高性能、开源框架,用于构建现代、基于云的、连接互联网的应用程序。它能够在您自己的进程中托管在 IIS、Nginx、Apache、Docker 或自托管上。

ASP.NET Core 完全作为 NuGet 包提供。这使您可以优化您的应用程序以仅包含必要的 NuGet 包。事实上,面向 .NET Core 的 ASP.NET Core 2.x 应用程序只需要一个 NuGet 包。较小的应用程序表面积的好处包括更严格的安全性、更少的服务和更高的性能。

无需安装 .Net 框架即可使用 .net 核心应用程序运行 asp.net 核心。带有 .net core 的 ASP.NET Core 应用程序是一个控制台应用程序,它在其 Main 方法中创建一个 Web 服务器。它使用 Kestrel Web 服务器来运行应用程序。

我们还可以使用 Visual Studio Code、Atom 等编辑器来运行应用程序。

它不像现在一样支持 Aspx、WPF、WCF 和 WebServices。它支持内置的依赖注入。使用 coreclr,它是带有 .net 核心的 asp.net 核心中的运行时。

Asp.Core 和 .Net 框架 另一方面,.Net 框架早在 2005 年之前就开始了,它不断添加新功能,使其成为一个有点复杂的框架和更重的框架。它不是跨平台的。它支持 Aspx、WPF、WCF 和 WebServices

https://i.stack.imgur.com/hG22P.png

https://i.stack.imgur.com/nWPth.png


N
Nathan Alard

ASP.NET CORE 使用 .NET Core - 所有依赖都是自包含的,可以使用大多数 nuget 包,不能使用 windows 特定包,可以在 windows、linux、Mac 上执行

使用 .NET Framework 的 ASP.NET CORE - 大多数依赖项都是自包含的,仅在 Windows 上执行,可以访问 Windows 特定的 nuget 包,需要在机器上安装目标的 .net 框架版本


这是另一个答案的副本