《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
《ASP.NET Core 高性能系列》关于.NET Core的部署方式的更多相关文章
- 《ASP.NET Core 高性能系列》致敬伟大的.NET斗士甲骨文!
写在开始 三年前,曾写过一篇文章:从.NET和Java之争谈IT这个行业,当时遭到某些自认为懂得java就了不起的Javaer抨击, 现在可以致敬伟大的.NET斗士甲骨文了 (JDK8以上都需要收费, ...
- 【.Net Core 学习系列】-- EF Core 实践(Code First)
一.开发环境: VS2015, .Net Core 1.0.0-preview2-003156 二解决方案: 新建项目: File --> New --> Project --> ...
- 【.Net Core 学习系列】-- EF Core实践(DB First)
一.开发环境: VS2015, .Net Core 1.0.0-preview2-003156 二.准备数据: CREATE DATABASE [Blogging]; GO USE [Blogging ...
- 《ASP.NET Core 高性能系列》关于.NET Core的配置信息的若干事项
1.配置文件的相关闲话 Core自身对于配置文件不是必须品,但由上文分析可知ASP.NET Core默认采用appsettings.json作为配置文件,关于配置信息的优先等级 命令行>环境变量 ...
- 《ASP.NET Core 高性能系列》ASP.NET Core的启动过程(1)
一.一切从头开始 简述:知道事情的真相就应该从头 开始,下面我们代码先行 public class Program { public static void Main(string[] args) { ...
- 《ASP.NET Core 高性能系列》静态文件中间件
一.概述 静态文件(如 HTML.CSS.图片和 JavaScript等文件)是 Web程序直接提供给客户端的直接加载的文件. 较比于程序动态交互的代码而言,其实原理都一样(走Http协议), ASP ...
- 《ASP.NET Core 高性能系列》环境(EnvironmentName)的设置
一.概述 程序启动时Host捕获到环境相关数据,然后交由IEnvironment(传说要作废,但是觉得这个有设计点问题,因为.NET Core 非Web怎么处理?),然后交由IWebHostEnvir ...
- 《ASP.NET Core 高性能系列》关于性能的闲聊
一.通常的性能问题类型 让我们一起看看那些公共的性能问题,看看他们是或者不是.我们将了解到为什么我们常常在开发期间会错过这些问题.我们也会看看当我们考虑性能时语言的选择.延迟.带宽.计算等因素. 二. ...
- 《ASP.NET Core 高性能系列》Span<T>和Memory<T>
一.Span<T>概述 原文:Provides a type- and memory-safe representation of a contiguous region of arbit ...
随机推荐
- 51nod 1281山峰和旗子
1281 山峰和旗子 题目来源: Codility 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 用一个长度为N的整数数组A,描述山峰和山谷的高度.山峰需要满足 ...
- HBuilder如何与真机连接
之前因为前端这边要做测试, 同时兼容ios和安卓方面. 但是因为一直苦恼无法仿真机连接测试,从而每次测试提出来一次,修改一次. 为了解决这个弊端,所以自己在这里分享一下连接的方法: 一:Android ...
- Vue____实现本地代码推送到云端仓库的相关操作
项目初始化搭建完毕,每进行一个功能模块开发的必备操作,目的是方便协同开发以及备份代码 一.每开发一个新功能,都应该创建一个新分枝,待该功能模块开发完成以后,再合并到主分支master中,具体步骤如下: ...
- 【重学Node.js 第1&2篇】本地搭建Node环境并起RESTful Api服务
本地搭建Node环境并起RESTful Api服务 课程介绍看这里:https://www.cnblogs.com/zhangran/p/11963616.html 项目github地址:https: ...
- mysql主从之Mysql_mysql基本安装
下载安装包: https://dev.mysql.com/downloads/mysql/5.7.html#downloads [root@jenkins-master ~]# cd /usr/loc ...
- IntelliJ IDEA使用说明
1.IntelliJ IDEA简介: IDEA 全称 IntelliJ IDEA,是java语言开发的集成环境,IntelliJ在业界被公认为最好的java开发工具之一,尤其在智能代码助手.代码自动提 ...
- 3.24 7.13 Python基础汇总
对象类型 类型名称 示例 简要说明 备注 数字 int,float,complex 1234,3.14,1.3e5,3+4j 数字大小没有限制 十六进制用0x前缀和0-9,a-f表示 字符串 str ...
- 跌宕起伏的java帝国史,剖析谷歌甲骨文长达8年的版权战争
这篇博文是我在B站上发的一个科普java的视频文案整理,本来发过一次了,但是有几种不严谨的地方只能删掉重新发了一下,内容如标题,感兴趣的码农朋友可以观看视频的版本,欢迎提提意见啥的,感谢~https: ...
- Linux学习之路--常用配置
1.修改IP地址 $vi /etc/sysconfig/network-scripts/ifcfg-eth0 BOOTPROTO=staticONBOOT=yesIPADDR=192.168.2.12 ...
- JDK12 的下载和没有jre的解决及环境配置
一.下载直接在官网上下载并点击安装即可,步骤省.jdk12下载中途已经没有跳出窗口下载jre的过程了,需要手动生成jre. 二.没有jre的解决:1.cmd 2.切换到jdk的安装目录,执行命令:bi ...