zoukankan      html  css  js  c++  java
  • 《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
  • 相关阅读:
    Java序列化的机制和原理
    范型练习
    Java范型
    Hadoop之HelloWorld
    IEnumerable和IEnumerator
    浅谈静态变量和类
    MVC中的Startup.Auth.cs、BundleConfig.cs、FilterConfig.cs和RouteConfig.cs
    "ApplicationDbContext"(泛指之类的数据库上下文模型)上下文的模型已在数据库创建后发生更改。请考虑使用 Code First 迁移更新数据库。
    C#.NET的微信功能开发学习
    本地Fiddler传递XML格式数据,调试微信功能。
  • 原文地址:https://www.cnblogs.com/humble/p/12236102.html
Copyright © 2011-2022 走看看