为什么在Windows Server上通过.NET在.NET Core上运行ASP.NET Core

时间:2016-06-30 12:22:00

标签: asp.net .net asp.net-mvc asp.net-core .net-core

自从我听说ASP.NET Core.NET Core以来,我一直在想你为什么要在ASP.NET Core web application.NET Core开展.NET正在运行Windows服务器,如Windows Server 2012?我可以理解,如果您正在为跨平台开发其他类似Ubuntu的东西,但如果您正在运行Windows服务器,为什么要开发.NET Core路由呢?

有什么好处(如果有的话)?我觉得我在这里错过了一些东西?它是进行ASP.NET Web开发和部署的理想方式吗?您希望何时使用完整的.NET框架进行ASP.NET网络开发而不是.NET Core框架?

不是每个人都在为跨平台开发吗?我一直在为Windows服务器开发,并且从不需要跨平台做任何事情。我不认为我会使用.NET开发任何跨平台的东西 - 我可能会使用.NET以外的其他东西(如果我走这条路的话)。

我希望有人可以帮助澄清我的困惑吗?

2 个答案:

答案 0 :(得分:9)

.NET Core

ASP.NET可以在完整的.NET Framework上的.NET Core 上运行。 .NET Framework仅在Windows 上运行,并使用.NET框架的完整足迹。

如果您不需要以下内容,仍然可以使用完整的.NET框架:

.NET Core与主机/操作系统无关

  

您可以在不同的操作系统和主机上运行您的应用:

     
      
  • Linux,Windows,MAC
  •   
  • IIS,控制台应用,..
  •   

可用于设备,云和嵌入式/物联网方案。

<强>模块化

  

.NET Core是一个模块化的运行时和库实现   包括.NET Framework的一个子集。

意思是,您只能通过nuget安装所需的软件包。

<强>可移植性:

  

您可以使用您的应用程序打包和部署CoreCLR,从而消除您的攻击   应用程序依赖于已安装的.NET版本(例如.NET   Windows上的框架)。您可以并排托管多个应用程序   使用不同版本的CoreCLR 升级它们   单独,而不是强迫升级所有这些   同时

缩小占地面积

  

通过分解CoreFX库并允许个人   应用程序只引入他们需要的CoreFX部分(a   所谓的“付费游戏”模式,基于服务器的应用程序   ASP.NET可以最小化它们的依赖关系。

App-models

  

.NET Core部分不支持所有.NET Framework应用程序模型   因为其中许多都是基于Windows技术构建的,例如WPF   (建立在DirectX之上)。控制台和ASP.NET核心应用程序模型是   .NET Core和.NET Framework都支持。

<强>的API

  

.NET Core包含许多与.NET相同但更少的API   框架,并使用不同的因子(程序集名称为   不同;类型形状在关键情况下有所不同)。这些差异   目前通常需要将端口源更改为.NET Core。 。净   Core实现了.NET标准库API,它将增长到   随着时间的推移,包括更多的.NET Framework BCL API。

<强>子系统

  

.NET Core在.NET Framework中实现了子系统的子集,   以更简单的实现和编程模型为目标。对于   例如,反射时不支持代码访问安全性(CAS)   得到支持。

<强>补丁/更新

  

反过来,这减少了   框架的补丁和更新将影响的频率   这些应用程序,因为只对各个部分进行了更改   由应用程序利用的CoreFX将影响应用程序。

<强>部署:

  

应用程序的较小部署大小是一个附带好处,一个   如果部署了许多应用程序,这会带来更大的不同   在给定服务器上并排放置。   可以包含在您的应用程序中,也可以安装在用户或机器范围内。

开源:

  

.NET Core平台是开源的,使用MIT和Apache 2   许可证。文档根据CC-BY许可。 .NET Core是一个.NET   基础项目。   .NET Core是开源的,而.NET Framework的只读子集是开源的。

enter image description here

答案 1 :(得分:3)

如果您在Windows上运行,那么在Full框架上运行ASP.NET Core非常有用,事实上,这是我选择移植旧Web窗体应用程序的方法。如果您不需要跨平台支持,我认为完整框架上的ASP.NET Core是一个很好的选择。

.NET Core Framework并不像完整框架那样功能齐全,将遗留应用程序移植到它上面要困难得多。例如,它目前不支持图像处理。

但是,除了跨平台这一事实之外,针对.NET核心框架的一大好处是它的占用空间比完整框架小得多,并且可以通过文件副本与您的应用程序一起部署。这意味着目标服务器在部署之前不需要安装.Net框架以运行代码。这在您无法控制服务器级别安装的某些云托管情况下会很有用,并且在部署到IoT设备等受限环境时可能会有所帮助。

那就是说,我怀疑会有很多ASP.NET Core应用程序被编写来支持Full Framework。在某些方面,这是一个美丽的配对。一方面,您可以使用Tag Helpers获得超轻量级和快速的ASP.NET Core平台以及所有这些优点,另一方面,您仍然可以在Windows上访问功能齐全的框架,这么多.Net开发人员都知道并喜欢