为什么要使用带有 ASP.NET Core 的完整 .NET Framework?
Why use the full .NET Framework with ASP.NET Core?
使用 ASP.NET Core 1.0 版本,可以 运行 在 .NET Core 或 full .NET Framework 上根据文档 here .我试图理解后一种选择,为什么 select ASP.NET Core + 完整的 .NET Framework?
我了解完整的 .NET Framework 和 .NET Core 之间的区别。但是,如果我想使用完整的 .NET Framework,为什么不直接使用 ASP.NET 4.6?我认为这个想法是在 .NET Core 之上使用 ASP.NET Core 的 1-2 拳,允许跨平台部署、模块化、部署到 Docker 容器的能力、性能等一系列好处。如果没有 .NET Core,我认为该列表中的任何内容都仍然有效,那么完整的 .NET 框架 + ASP.NET Core 的用例是什么? ASP.NET Core 在没有 .NET Core 的情况下仍能为我提供什么?
However, if I wanted to use the full .NET Framework, why not just use ASP.NET 4.6?
如果我使用 ASP.NET 4.6 而不是 ASP.NET Core 1,那么我将无法使用 ASP.NET Core MVC。 None 该文档页面上的功能将可供我使用!我将不得不构建一个 MVC5 应用程序。呜呜!
I'm trying to understand the latter option of why one would select ASP.NET Core + the full .NET Framework?
我假设另一种提问方式是:"why would you take the red path when you can take the brown path?"
这样做的一个理由是部署。如果您有一堆现有的 Windows 服务器,上面装有 IIS,您将需要在每个服务器上安装额外的软件,并将它们设置为 运行 核心应用程序。 IIS 只是成为您的 .NET Core 应用程序的反向代理。
但是,如果这些应用程序是在 .Net Framework 上构建的,则您不必执行此操作。您仍然可以使用网络部署(例如)将它们移动到服务器上。也许您还有其他一些不想迁移的现有 IIS 配置设置。
使用针对 .Net Framework 的 ASP.NET Core 1.0,您可以从 ASP.NET Core MVC 中的新功能中受益,而无需更改现有的基础架构。
.NET Core allowing the slew of benefits like cross platform deployment, modularization, ability to deploy to a Docker container, performance, etc.. Without .NET Core I don't believe anything on that list is still valid
如果您选择完整的 .NET 框架而不是 .NET Core,您唯一没有的好处是跨平台。部署、模块化、docker、性能等所有其他好处仍然有效。
我们实际上 运行 我们的 ASP.NET 完整框架上的核心网络应用程序,现在我们作为第一个 class 公民享受依赖注入的好处,内置 NuGet,拥有精简的 HTTP 请求管道,使我们的性能更好,开源(因此所有问题都可以通过短暂访问 GitHub 来解决),模块化(仍然必须遇到我们无法自定义的东西将近一年后的需求),等等。而且我们知道除了 Windows 之外,我们不需要在任何其他 OS 上部署,因此我们仍然可以享受完整框架的所有好处。
来自 Tseng 的更新
Well, you can still target full .NET Framework under Linux for example. There you need mono 4.6 installed there. There are some limitations as not all classes are implemented in mono, but a majority is and around the corner case (i.e. encryption) you have to work around
来自 atconway 的更新
It's also worth noting at the time VB.NET is not supported by .NET Core if that's a requirement.
使用具有 Asp.Net 核心的完整 .NET 框架的一个重要好处是可以使用成熟的库和框架,这些库和框架主要针对以前版本的 .NET 开发。
但是随着时间的推移和实施越来越多的库以面向 .NET Core 并为 .NET Core 本身开发更多功能,这种优势可能会逐渐消失。
需要考虑的一件事是它可以是迁移路径。举例来说,您有一个现有的 ASP.NET 4.6 应用程序,您打算将其迁移到 .NET Core。您想要利用 ASP.NET 核心功能,例如 TagHelpers、依赖注入等,但您还没有准备好或无法使用 .NET Core 框架。因此,您开发 ASP.NET 核心应用程序,仅针对 .NET 完整框架。然后,您进行下一步 multi-target,同时使用 .NET 完整框架和 .NET Core 框架。这使您可以灵活地使用完整框架或 cross-platform 使用核心框架轻松部署到 IIS。从那里,您可以决定是否要删除整个框架。
必须利用 OLE DB 等永远不会在 NET Core 中实现的遗留技术 System.Data 是另一个原因。
使用 ASP.NET Core 1.0 版本,可以 运行 在 .NET Core 或 full .NET Framework 上根据文档 here .我试图理解后一种选择,为什么 select ASP.NET Core + 完整的 .NET Framework?
我了解完整的 .NET Framework 和 .NET Core 之间的区别。但是,如果我想使用完整的 .NET Framework,为什么不直接使用 ASP.NET 4.6?我认为这个想法是在 .NET Core 之上使用 ASP.NET Core 的 1-2 拳,允许跨平台部署、模块化、部署到 Docker 容器的能力、性能等一系列好处。如果没有 .NET Core,我认为该列表中的任何内容都仍然有效,那么完整的 .NET 框架 + ASP.NET Core 的用例是什么? ASP.NET Core 在没有 .NET Core 的情况下仍能为我提供什么?
However, if I wanted to use the full .NET Framework, why not just use ASP.NET 4.6?
如果我使用 ASP.NET 4.6 而不是 ASP.NET Core 1,那么我将无法使用 ASP.NET Core MVC。 None 该文档页面上的功能将可供我使用!我将不得不构建一个 MVC5 应用程序。呜呜!
I'm trying to understand the latter option of why one would select ASP.NET Core + the full .NET Framework?
我假设另一种提问方式是:"why would you take the red path when you can take the brown path?"
这样做的一个理由是部署。如果您有一堆现有的 Windows 服务器,上面装有 IIS,您将需要在每个服务器上安装额外的软件,并将它们设置为 运行 核心应用程序。 IIS 只是成为您的 .NET Core 应用程序的反向代理。
但是,如果这些应用程序是在 .Net Framework 上构建的,则您不必执行此操作。您仍然可以使用网络部署(例如)将它们移动到服务器上。也许您还有其他一些不想迁移的现有 IIS 配置设置。
使用针对 .Net Framework 的 ASP.NET Core 1.0,您可以从 ASP.NET Core MVC 中的新功能中受益,而无需更改现有的基础架构。
.NET Core allowing the slew of benefits like cross platform deployment, modularization, ability to deploy to a Docker container, performance, etc.. Without .NET Core I don't believe anything on that list is still valid
如果您选择完整的 .NET 框架而不是 .NET Core,您唯一没有的好处是跨平台。部署、模块化、docker、性能等所有其他好处仍然有效。
我们实际上 运行 我们的 ASP.NET 完整框架上的核心网络应用程序,现在我们作为第一个 class 公民享受依赖注入的好处,内置 NuGet,拥有精简的 HTTP 请求管道,使我们的性能更好,开源(因此所有问题都可以通过短暂访问 GitHub 来解决),模块化(仍然必须遇到我们无法自定义的东西将近一年后的需求),等等。而且我们知道除了 Windows 之外,我们不需要在任何其他 OS 上部署,因此我们仍然可以享受完整框架的所有好处。
来自 Tseng 的更新
Well, you can still target full .NET Framework under Linux for example. There you need mono 4.6 installed there. There are some limitations as not all classes are implemented in mono, but a majority is and around the corner case (i.e. encryption) you have to work around
来自 atconway 的更新
It's also worth noting at the time VB.NET is not supported by .NET Core if that's a requirement.
使用具有 Asp.Net 核心的完整 .NET 框架的一个重要好处是可以使用成熟的库和框架,这些库和框架主要针对以前版本的 .NET 开发。
但是随着时间的推移和实施越来越多的库以面向 .NET Core 并为 .NET Core 本身开发更多功能,这种优势可能会逐渐消失。
需要考虑的一件事是它可以是迁移路径。举例来说,您有一个现有的 ASP.NET 4.6 应用程序,您打算将其迁移到 .NET Core。您想要利用 ASP.NET 核心功能,例如 TagHelpers、依赖注入等,但您还没有准备好或无法使用 .NET Core 框架。因此,您开发 ASP.NET 核心应用程序,仅针对 .NET 完整框架。然后,您进行下一步 multi-target,同时使用 .NET 完整框架和 .NET Core 框架。这使您可以灵活地使用完整框架或 cross-platform 使用核心框架轻松部署到 IIS。从那里,您可以决定是否要删除整个框架。
必须利用 OLE DB 等永远不会在 NET Core 中实现的遗留技术 System.Data 是另一个原因。