为什么要在ASP.NET Core中使用完整的.NET Framework?

Why use the full .NET Framework with ASP.NET Core?

使用ASP.NET Core 1.0版本,可以根据此处的文档在.NET Core或完整的.NET框架上运行。我试图理解后一种选择,即为什么选择ASP.NET核心+完整的.NET框架?

我理解完整的.NET框架和.NET核心之间的区别。但是,如果我想使用完整的.NET框架,为什么不直接使用ASP.NET 4.6呢?我认为这是一个1-2点的想法,ASP.NET核心在.NET核心之上,允许跨平台部署、模块化、部署到Docker容器的能力、性能等诸多好处。如果没有.NET核心,我不相信该列表上的任何内容仍然有效,那么完整的.NET框架+ASP.NET核心的用例是什么?如果没有.NET核心,它自己的ASP.NET核心还能为我提供什么?


.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核心,那么您唯一没有的好处就是跨平台。部署、模块化、Docker、性能等所有其他好处…仍然有效。

我们实际上是在完整的框架上运行我们的ASP.NET核心Web应用程序,现在我们享受到了作为一级公民进行依赖注入、内置Nuget、拥有精简的HTTP请求管道的好处,这使得我们的性能更好、开源(因此,所有问题都可以通过短暂访问GitHub来解决)、模块化(仍然需要解决)在过去的一年里,我们无法根据自己的需求进行定制,等等。我们知道,除了Windows,我们不需要部署在任何其他操作系统上,所以我们仍然可以拥有完整框架的所有好处。

从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.


0

如果我使用ASP.NET 4.6而不是ASP.NET核心1,那么我将无法使用ASP.NET核心MVC。该文档页面上的任何功能都不会提供给我!我必须构建一个MVC5应用程序。酒鬼!

I'm trying to understand the latter option of why one would select ASP.NET Core + the full .NET Framework?

我假设另一个问这个问题的方法是:"当你可以走棕色的路时,为什么你会走红色的路?"

enter image description here

这样做的一个参数是部署。如果您有一堆现有的Windows服务器上有IIS,则需要在每个服务器上安装额外的软件,并将其设置为运行核心应用程序。IIS只是成为您的.NET核心应用程序的反向代理。

但是,如果这些应用程序是在.NET框架上构建的,则不必这样做。您仍然可以使用WebDeploy(例如)将它们移动到服务器上。可能您有其他不想迁移的现有IIS配置设置。

使用面向.NET框架的ASP.NET核心1.0,您可以从ASP.NET核心MVC中获得新功能的好处,而无需更改现有的基础结构。


将完整的.NET框架与ASP.NET核心结合使用的一个重要好处是可以使用成熟的库和框架,这些库和框架主要是针对以前的.NET版本开发的。

但是,随着时间的推移,实现越来越多的库以面向.NET核心,并为.NET核心本身开发更多的功能,这种好处可能会逐渐消失。


必须利用像OLE DB这样的传统技术,而这些技术永远不会在NET核心系统中实现。数据是另一个原因。


需要考虑的一点是,它可以是一个迁移路径。例如,假设您有一个要迁移到.NET核心的现有ASP.NET 4.6应用程序。您希望利用ASP.NET核心功能,如标记助手、依赖项注入等,但您还没有准备好或无法使用.NET核心框架。因此,开发ASP.NET核心应用程序,只针对.NET完整框架。然后,您将采取下一步和多目标,同时针对.NET完整框架和.NET核心框架。这使您能够灵活地使用完整的框架或跨平台的核心框架轻松部署到IIS。从那里,您可以决定是否要消除完整的框架。