【问题标题】:Difference between ASP.NET Core (.NET Core) and ASP.NET Core (.NET Framework)ASP.NET Core (.NET Core) 和 ASP.NET Core (.NET Framework) 的区别
【发布时间】:2016-10-07 15:49:59
【问题描述】:

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# .net asp.net-core .net-core


【解决方案1】:

一开始可能会让人感到困惑,但重要的是要记住:归根结底,“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:

ASP.NET Core (CLR):400k 请求/秒

ASP.NET Core(.NET Core、Linux):900k req/sec

ASP.NET Core(.NET Core、Windows):>1.1m req/sec

不过,这些基准测试的时间稍早(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 或更高版本)。
【解决方案2】:

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

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

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

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

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

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

.Net Framework 执行计划

.Net核心执行计划

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

    • 这是另一个答案的副本
    猜你喜欢
    • 2016-11-08
    • 2017-10-12
    • 1970-01-01
    • 2021-11-17
    • 1970-01-01
    • 2016-05-14
    • 2022-06-30
    • 2020-11-25
    • 1970-01-01
    相关资源
    最近更新 更多