《ASP.NET Core 高性能系列》关于.NET Core的部署方式

概述,.NET Core应用程序可以创建三种类型的部署:FDD SCD FDE

  • 框架依赖的部署(FDD)。顾名思义,框架依赖的部署(FDD)依赖于目标系统上是否存在.NET Core版本。由于.NET Core已经存在,因此您的应用程序在不同的.NET Core版本中进行移植。您的应用程序仅包含其自己的代码以及.NET Core库之外的任何第三方依赖项。FDD包含.dll文件,可以通过使用dotnet命令行启动这些文件。

  例如,dotnet app.dll运行名为的应用程序app

  • 自包含的部署(SCD)。与FDD不同,自包含部署(SCD)不依赖于目标系统上共享组件的存在。所有组件,包括.NET Core库和.NET Core运行时,都包含在应用程序中
  • 依赖框架的可执行文件(FDE)。生成在目标平台上运行的可执行文件。与FDD相似,框架相关的可执行文件(FDE)是特定于平台的,并且不是自包含的。这些部署仍然依赖于存在共享的系统范围的.NET Core版本来运行。可以通过调用已发布的可执行文件来运行您的应用程序,而无需dotnet直接调用该实用程序(和FDD的主要区别)

1.框架依赖的部署(FDD)

对于FDD,仅部署应用程序和第三方依赖项。应用将使用目标系统上存在的.NET Core版本,

这是针对.NET Core的.NET Core和ASP.NET Core应用程序的默认部署模型。

FDD的优点:

  • 不必预先定义你的应用程序的目标操作系统。
  • 部署包的很小。只会部署应用程序及其依赖项,而不部署.NET Core本身。
  • 除非被覆盖,否则FDD将使用目标系统上安装的最新的.NET Core运行时。这样应用程序可以使用.NET Core运行时的最新修补版本。
  • 多个应用程序使用同一.NET Core安装,从而减少了主机系统上的磁盘空间和内存使用。

FDD的缺点:

  • 仅当您的应用程序所面向的.NET Core 版本或更高版本已在主机系统上安装时,您的应用程序才能运行。
  • .NET Core运行时和库可能会在您不了解未来版本的情况下进行更改。在极少数情况下,这可能会改变您应用的行为。

2.自包含部署(SCD)

SCD的优点:

  • 可以完全控制与应用程序一起部署的.NET Core版本。
  • 不用担心目标系统没有安装.NET Core

SCD的缺点:

  • 由于.NET Core包含在部署程序包中,因此您必须预先选择要为其构建部署程序包的目标系统平台。
  • 部署包相对较大,因为必须包括.NET Core以及应用程序及其第三方依赖项。

    从.NET Core 2.0开始,通过使用.NET Core 全球化不变模式,您可以将Linux系统上的部署大小减少约28 MB 。通常,Linux上的.NET Core依赖ICU库提供全球化支持。在不变模式下,库不包含在您的部署中,并且所有区域性的行为都与不变区域性类似。

  • 将大量独立的.NET Core应用程序部署到系统上会占用大量磁盘空间,因为每个应用程序都复制.NET Core文件。

3.依赖框架的可执行文件(FDE)

从.NET Core 2.2开始,可以将应用程序以及所有必需的第三方依赖项部署为FDE。应用将使用目标系统上安装的.NET Core版本。

FDE的优点:

  • 部署包的大小很小。您只部署应用程序及其依赖项,而不部署.NET Core本身。
  • 多个应用程序使用同一.NET Core安装,从而减少了主机系统上的磁盘空间和内存使用。
  • 可以通过调用已发布的可执行文件来运行您的应用程序,而无需dotnet直接调用该实用程序。

FDE的缺点:

  • 仅当您的应用程序所面向的.NET Core 版本或更高版本已在主机系统上安装时,您的应用程序才能运行。
  • .NET Core运行时和库可能会在您不了解未来版本的情况下进行更改。在极少数情况下,这可能会改变您应用的行为。
  • 您必须为每个目标平台发布您的应用程序。

发布方式

以上 .NET Core RID 说明

Windows RID

仅列出了公共值。 若要获取最新的完整版,请参阅 CoreFX 存储库上的 runtime.json 文件。

  • 可移植(.NET Core 2.0 或更高版本)

    • win-x64
    • win-x86
    • win-arm
    • win-arm64
  • Windows 7 / Windows Server 2008 R2
    • win7-x64
    • win7-x86
  • Windows 8.1 / Windows Server 2012 R2
    • win81-x64
    • win81-x86
    • win81-arm
  • Windows 10 / Windows Server 2016
    • win10-x64
    • win10-x86
    • win10-arm
    • win10-arm64

Linux RID

仅列出了公共值。 若要获取最新的完整版,请参阅 CoreFX 存储库上的 runtime.json 文件。 运行以下未列出的发行版的设备可能适用于其中一个可移植 RID。 例如,可以将运行未列出的 Linux 发行版的 Raspberry Pi 设备定向为使用 linux-arm

  • 可移植(.NET Core 2.0 或更高版本)

    • linux-x64(大多数桌面发行版,如 CentOS、Debian、Fedora、Ubuntu 及派生版本)
    • linux-musl-x64(使用 musl 的轻量级发行版,如 Alpine Linux)
    • linux-arm(在 ARM 上运行的 Linux 分发版,如 Raspberry Pi)
  • Red Hat Enterprise Linux
    • rhel-x64(被 linux-x64 取代,适用于 RHEL 6 以上版本)
    • rhel.6-x64(.NET Core 2.0 或更高版本)
  • Tizen(.NET Core 2.0 或更高版本)
    • tizen
    • tizen.4.0.0
    • tizen.5.0.0

有关详细信息,请参阅 .NET Core 依赖项和要求

macOS RID

macOS RID 使用较早的“OSX”品牌。 仅列出了公共值。 若要获取最新的完整版,请参阅 CoreFX 存储库上的 runtime.json 文件。

  • 可移植(.NET Core 2.0 或更高版本)

    • osx-x64(最低 OS 版本为 macOS 10.12 Sierra)
  • macOS 10.10 Yosemite
    • osx.10.10-x64
  • macOS 10.11 El Capitan
    • osx.10.11-x64
  • macOS 10.12 Sierra(.NET Core 1.1 或更高版本)
    • osx.10.12-x64
  • macOS 10.13 High Sierra(.NET Core 1.1 或更高版本)
    • osx.10.13-x64
  • macOS 10.14 Mojave(.NET Core 1.1 或更高版本)
    • osx.10.14-x64

原文地址:https://www.cnblogs.com/humble/p/12236102.html

时间: 2024-10-08 10:49:40

《ASP.NET Core 高性能系列》关于.NET Core的部署方式的相关文章

《ASP.NET Core 高性能系列》致敬伟大的.NET斗士甲骨文!

原文:<ASP.NET Core 高性能系列>致敬伟大的.NET斗士甲骨文! 写在开始 三年前,曾写过一篇文章:从.NET和Java之争谈IT这个行业,当时遭到某些自认为懂得java就了不起的Javaer抨击, 现在可以致敬伟大的.NET斗士甲骨文了 (JDK8以上都需要收费,Android弃用java作为第一语言,别高兴:OpenJDK是甲骨文的). <ASP.NET Core 高性能系列>是一套如何编写高性能Web应用技术系列文章, 我们将从.NET 2开始全面升入.其中我们会

《ASP.NET Core 高性能系列》静态文件中间件

原文:<ASP.NET Core 高性能系列>静态文件中间件 一.概述 静态文件(如 HTML.CSS.图片和 JavaScript等文件)是 Web程序直接提供给客户端的直接加载的文件. 较比于程序动态交互的代码而言,其实原理都一样(走Http协议), ASP.NET Core中需要进行一些配置才能提供这些文件. 二.wwwroot 静态文件存储在项目的 Web 程序的 {ContentRoot}/wwwroot目录下,但可通过 UseWebRoot 方法更改路径 . Web 应用程序项目的

《ASP.NET Core 高性能系列》环境(EnvironmentName)的设置

原文:<ASP.NET Core 高性能系列>环境(EnvironmentName)的设置 一.概述 程序启动时Host捕获到环境相关数据,然后交由IEnvironment(传说要作废,但是觉得这个设计依旧前后矛盾,因为没有考虑好非Web 和Web区分),然后交由IWebHostEnvironment,对于ASP.NET Core环境而言,同样会存储在 IWebHostEnvironment.EnvironmentName,ASP.NET Core框架自身提供Development.Stagi

《ASP.NET Core 高性能系列》关于.NET Core的配置信息的若干事项

1.配置文件的相关闲话 Core自身对于配置文件不是必须品,但由上文分析可知ASP.NET Core默认采用appsettings.json作为配置文件,关于配置信息的优先等级 命令行>环境变量>自我订制的配置(AddUserSecrets)>和当前环境相匹配的appsettings.json中的配置>大于appsettings.json中的配置 关于AddUserSecrets是什么这里简单一言以蔽之:每个开发人员有自己特性的配置数据,这些配置信息仅仅属于个人,不能提交给团队成员

《ASP.NET Core 高性能系列》ASP.NET Core的启动过程(1)

一.一切从头开始 简述:知道事情的真相就应该从头 开始,下面我们代码先行 public class Program { public static void Main(string[] args) { CreateHostBuilder(args).Build().Run(); } public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWeb

《ASP.NET Core 高性能系列》关于性能的闲聊

一.通常的性能问题类型 让我们一起看看那些公共的性能问题,看看他们是或者不是.我们将了解到为什么我们常常在开发期间会错过这些问题.我们也会看看当我们考虑性能时语言的选择.延迟.带宽.计算等因素. 二.语言的考虑 人们经常关注所使用的编程语言的速度.然而,这经常没有抓住要点.这是一个非常简单的观点,掩盖了技术选择的细微差别,用任何语言编写速度慢的软件都很容易.由于当今计算机的处理速度非常强大,所以解释性能相对较慢的语言通常足够快,而开发中性能的提高是值得的.要理解所涉及的论点和权衡是很重要的,即使

《ASP.NET Core 高性能系列》Span&lt;T&gt;和Memory&lt;T&gt;

一.Span<T>概述 原文:Provides a type- and memory-safe representation of a contiguous region of arbitrary memory. 中文的翻译不准确,这里给出比较厚道的翻译:提供类型T安全.连续的内存区域的表达方式. (图1:Span<T>定义,不是全图) 这里出现高阶语法 readonly ref struct,下面是msdn给的语言规范(或者其核心意义),估计大家会看晕, Span<T>

Core Data系列译文:Core Data概述

在"伯乐在线"发现了一篇很不错的关于CoreData的文章,只是那里不能收藏,故而转载至此 以下是文章原文: 本文由 伯乐在线 - IvyShao 翻译自 Daniel Eggert.欢迎加入技术翻译小组.转载请参见文章末尾处的要求. [2013-11-19 21:24:26 伯乐在线补充]:由于之前和译者@shaojingkk 沟通不够,我们在发布这篇译文之前并不知道译者参考对照@answer-huang 之前的译文版本,所以发布文章时未能在文中特别说明,责任在我们,在此向@answ

.NET CORE学习系列(1) ——.NET Core是什么?与.NET Framework、Mono之间的关系 ?

一.概念: .NET Core 是一个开源的.跨平台的 .NET 实现.而 .NET Framework 是基于 Windows 的 .NET 实现,Mono 是 .NET Framework 的一个开源.跨平台的实现. .NET Core 分为两大块:1).NET Core Framework,2).NET Core Runtime. 二.关系: 在.NET Core推出之后,.NET Framework与Mono将基于.NET Core重新构建..NET Framework将成为.NET C