自从我听说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以外的其他东西(如果我走这条路的话)。
我希望有人可以帮助澄清我的困惑吗?
答案 0 :(得分:9)
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的只读子集是开源的。
答案 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开发人员都知道并喜欢