对于独立部署,可以部署应用和所需的第三方依赖项以及生成应用所使用的 .NET Core 版本。...服务的运行时不需要存在于你的生成系统上;它会从 NuGet.org 自动下载。 FDD 和 SCD 部署使用单独的主机可执行文件,使你可以使用发布者签名为 SCD 签署主机可执行文件。...请注意,如果依赖框架的部署具有第三方依赖项,则其可移植性只与第三方依赖项相同。 例如,如果某个第三方库只支持 macOS,该应用将无法移植到 Windows 系统。...请注意,还需要添加分号来分隔 RID。 请查看运行时标识符目录,获取运行时标识符列表。...请注意,每个子目录中都包含完整的启动应用所需的文件集(既有应用文件,也有所有 .NET Core 文件)。 与应用程序的文件一样,发布过程将生成包含应用调试信息的程序数据库 (.pdb) 文件。
安装 mtools合集是用python编写的,大多数工具只使用Python附带的标准软件包。该工具目前使用Python 2.7和3.6进行过测试。...译者注:您还需要安装依赖项,详情请参见下文的依赖项说明。 依赖项说明 您可以在 requirements.txt 文件中获取完整的依赖项列表。 其中一些已包含在Python标准库中。...pymongo mlaunch所需的依赖项 pymongo:MongoDB官方Python驱动程序,mlaunch使用它来配置和查询本地MongoDB部署。...matplotlib mplotqueries所需的依赖项 matplotlib:python 2D绘图库,可以生成各种格式的图表以及提供跨平台的交互式环境。...numpy matplotlib(mplotqueries)所需的依赖项 numpy:用于科学计算和数值计算的Python模块。
这个过程有几个关键优点:无需安装Python:最大的好处是,最终用户不需要在他们的机器上安装Python来运行程序。...这意味着即使是不熟悉Python或没有安装Python环境的用户,也可以轻松运行您的程序。简化部署:将程序打包成一个或几个文件,使得部署和分发变得更加简单。...3、 py2exe :这是一个专为Windows设计的工具,它可以将Python脚本转换成只运行于Windows的可执行文件。...默认情况下,PyInstaller会生成一个包含依赖文件的文件夹。使用此选项后,所有依赖项都会被打包到一个文件中。--noconsole 或 -w:用于GUI应用程序,不显示控制台窗口。...--version-file=文件:添加一个版本资源从指定的文件到可执行文件。--runtime-hook=文件:运行时挂钩是在Python解释器初始化期间运行的脚本。
这些本机Spring应用程序可以部署为独立的可执行文件(无需安装JVM),并提供有趣的特性,包括几乎即时启动(通常<100ms),即时峰值性能和较低的内存消耗,但所需的构建时间和运行时优化次数少于JVM...项目中,您需要添加Spring Native的依赖。...的本地机器代码可执行文件。...在构建镜像时,将可执行文件复制到镜像中并设置其作为容器的默认命令。...依赖项处理:在传统JVM调优中,依赖项通常以JAR文件的形式打包,并在运行时通过类加载器进行动态加载。
这些 Native Spring 应用程序可以作为独立可执行文件进行部署(无需安装 JVM),并且还提供了一些有趣的特性,包括几乎即时启动(通常<100ms)、即时峰值性能和较低的内存消耗,但同时也会付出一些代价...图片 使用 mvn spring-boot:build-image 或 gradle bootBuildImage 命令,就可以生成一个优化过的容器镜像,该镜像将包含最小的操作系统层和一个小的可执行文件...,该文件只提供 JDK、Spring 和应用程序中使用的依赖所需的 bits。...图片 添加 Spring Native 依赖项将自动配置 Maven 或 Gradle,其中包含支持 Native 所需的依赖项和插件。应用程序本身代码是不需要更改的。...这里的目标是限制所需额外的 Native 配置的数量来增加兼容性,通过使用代码结构可以解析出开箱即用的 Native image,并且通过减少反射,资源或代理所需的配置量实现更低的空间占用。
而且这个exe文件的大小也很小,这是因为它依赖于.NET Core运行时,它所需要的依赖项在我电脑上是全局可用的。 还有另外一个地方也值得注意,项目所有的依赖也都复制到了这个输出的文件夹里。...Single-file Executables 单文件可执行文件 这种部署方式很方便,、。dotnet publish 命令支持将应用打包为特定于平台的单文件可执行文件。...该可执行文件是自解压缩文件,包含运行应用所需的所有依赖项(包括本机依赖项)。 首次运行应用时,应用程序将根据应用名称和生成标识符自解压缩到一个目录中。 再次运行应用程序时,启动速度将变快。...要启用此工具,请使用项目中的 设置并发布自包含应用: ? 再次发布后: ? 可以看到exe文件的大小减小了很多,这是因为这里只包含了这个项目真正用到的依赖。...R2R 二进制文件通过减少应用程序加载时实时 (JIT) 编译器需要执行的工作量来改进启动性能。 二进制文件包含与 JIT 将生成的内容类似的本机代码。
这些本机Spring应用程序可以部署为独立的可执行文件(无需安装JVM),并提供有趣的特性,包括几乎即时启动(通常<100ms),即时峰值性能和较低的内存消耗,但所需的构建时间和运行时优化次数少于JVM...使用简单mvn spring-boot:build-image或gradle bootBuildImage命令,您可以生成一个优化的容器映像,该映像将包含一个最小的OS层和一个小的本机可执行文件,该映像仅随附...JDK,Spring以及您在应用程序中使用的依赖项中的必需位。...请检查自动生成的HELP.md文件,该文件包含了有用的链接和文档,同时它还能标记出来你是否选择了一些在原生环境下不支持的依赖。...,这种方式比常规的基于 JSON 的原生镜像配置更加可维护、类型安全和灵活。
与动态链接相反,可以使用静态链接将所有必需的代码链接到生成的可执行文件中,从而创建静态库或可执行文件。...您可以猜测,使用静态库与使用共享库具有完全相反的优点和缺点,它们是: 您不需要部署用于构建应用的静态库,因为它们的所有代码实际上都已复制到生成的可执行文件中 应用可执行文件的大小将变大,这意味着更长的初始加载时间和更大的文件要部署...使用静态链接的部署 静态部署应用意味着您的应用将独立运行,并且消除了几乎所有需要的依赖项,因为它们已经在可执行文件内部。...这是使用 Microsoft Visual C++ 生成的 C++ 应用所必需的,并且所需的可再发行版本与计算机上安装的 Microsoft Visual Studio 相对应。...可以使用此相同技能将所有依赖项放入其所需的文件夹中。
从脚本语言到JavaScript和Python,再到像Java和C#到Go这样被编译为二进制文件的托管运行时的语言,所有语言都是他们有自己的长处。...默认可执行文件 .NET Core 现在默认生成依赖于框架的可执行文件,这个行为是和.NET Framework保持一致了。对于使用全局安装的 .NET Core 版本的应用程序而言,这是一种新行为。...以前,仅独立部署会生成可执行文件。 单文件可执行文件 在 dotnet build 或 dotnet publish 期间,将创建一个与你使用的 SDK 的环境和平台相匹配的可执行文件。...dotnet publish 命令支持将应用打包为特定于平台的单文件可执行文件。该可执行文件是自解压缩文件,包含运行应用所需的所有依赖项(包括本机依赖项)。...R2R 是一种预先 (AOT) 编译形式,这也是一项加速应用启动时间的选项。 R2R 二进制文件通过减少应用程序加载时实时 (JIT) 编译器需要执行的工作量来改进启动性能。
依赖框架的可执行文件。 生成在目标平台上运行的可执行文件。 类似于 FDD,依赖框架的可执行文件 (FDE) 是特定于平台的,而不是自包含的。...这些部署的运行仍依赖于现有的 .NET Core 共享系统级版本。 与 SCD 不同,应用仅包含代码和任何位于 .NET Core 库外的第三方依赖项。 FDE 生成在目标平台上运行的可执行文件。...在极少数情况下,这可能会更改应用的行为。 独立部署 (SCD) 对于独立部署,可以部署应用和所需的第三方依赖项以及生成应用所使用的 .NET Core 版本。...依赖框架的可执行文件 (FDE) 从 .NET Core 2.2 开始,可以将应用程序部署为 FDE,以及所需的第三方依赖项。 应用将使用目标系统上安装的 .NET Core 版本。...为什么要部署依赖框架的可执行文件? 部署 FDE 具有很多优点: 部署包很小。 只需部署应用及其依赖项,而无需部署 .NET Core 本身。
请注意,如果你的项目中有大量不会更改的依赖项,它们仍将在构建过程中从缓存中复制到构建机上。 Docker 构建不是确定性的。如果使用完全相同的内容构建两个镜像,可能每次都会产生不同的哈希值。...启动一个新的容器会将所有层从注册表下载到已提供的容器中。 其他限制 在 Docker 镜像构建和启动后,我们运行用户的代码来提取元数据,并在 UI 中显示。...PEX 是 Python 可执行文件的缩写,是一个将 Python 包打包成名为 pex 文件的工具。这些可执行文件包含 Python 包和一些引导代码。...例如,我们可以将 dagster 包和其依赖项打包成单个文件,然后运行它: % pex dagster --python=python3.8 -o dagster.pex% ....总 结 将部署时间从超过 3 分钟缩短到 40 秒是一个显著的加速,我们对这个结果非常满意,特别是在测试自己的服务时。
2 介绍 2.1 设计原则 Deno旨在成为现代程序员有用的工具。 它将始终作为单个可执行文件分发 - 并且该可执行文件完全可以运行任何deno程序。...给定一个deno程序的URL,您应该能够用不超过50M deno的可执行文件来执行它。 Deno明确地承担了运行时和包管理器的角色。 它使用标准的浏览器兼容协议来加载URL模块。...只发送一个可执行文件。 永远死于未捕获的错误。 旨在支持顶级等待。...这些包只包含一个可执行文件。 您必须在Mac和Linux上设置为可执行。...openssl@1.1 Windows用户的额外步骤: 将 python.exe 添加到 PATH(例如,设置 PATH=%PATH%;C:\Python27\python.exe) 使用 C++ 工具包获取
这些本机 Spring 应用程序可以部署为独立的可执行文件(无需安装 JVM),并提供有趣的特性,包括几乎即时启动(通常<100ms),即时峰值性能和较低的内存消耗,但所需的构建时间和运行时优化次数少于...使用简单mvn spring-boot:build-image或gradle bootBuildImage命令,您可以生成一个优化的容器映像,该映像将包含一个最小的 OS 层和一个小的本机可执行文件,该映像仅随附...请检查自动生成的 HELP.md 文件,该文件包含了有用的链接和文档,同时它还能标记出来你是否选择了一些在原生环境下不支持的依赖。...Spring Boot 部署模型与 GraalVM native 结合引入的封闭世界假设自动生成本机优化代码(源代码和字节码)的功能。...这里的目标是通过使用本机图像编译器可以开箱即用地分析的代码构造来限制所需的额外本机配置的数量,以提高兼容性,并通过减少反射所需的配置数量来减少占用空间,资源或代理。
这些本机 Spring 应用程序可以部署为独立的可执行文件(无需安装 JVM),并提供有趣的特性,包括几乎即时启动(通常<100ms),即时峰值性能和较低的内存消耗,但所需的构建时间和运行时优化次数少于...使用简单mvn spring-boot:build-image或gradle bootBuildImage命令,您可以生成一个优化的容器映像,该映像将包含一个最小的 OS 层和一个小的本机可执行文件,该映像仅随附...请检查自动生成的 HELP.md 文件,该文件包含了有用的链接和文档,同时它还能标记出来你是否选择了一些在原生环境下不支持的依赖。 4....Spring Boot 部署模型与 GraalVM native 结合引入的封闭世界假设自动生成本机优化代码(源代码和字节码)的功能。...这里的目标是通过使用本机图像编译器可以开箱即用地分析的代码构造来限制所需的额外本机配置的数量,以提高兼容性,并通过减少反射所需的配置数量来减少占用空间,资源或代理。
这些本机 Spring 应用程序可以部署为独立的可执行文件(无需安装 JVM),并提供有趣的特性,包括几乎即时启动(通常<100ms),即时峰值性能和较低的内存消耗,但所需的构建时间和运行时优化次数少于...图片 使用简单mvn spring-boot:build-image或gradle bootBuildImage命令,您可以生成一个优化的容器映像,该映像将包含一个最小的 OS 层和一个小的本机可执行文件...请检查自动生成的 HELP.md 文件,该文件包含了有用的链接和文档,同时它还能标记出来你是否选择了一些在原生环境下不支持的依赖。 4....Spring Boot 部署模型与 GraalVM native 结合引入的封闭世界假设自动生成本机优化代码(源代码和字节码)的功能。...这里的目标是通过使用本机图像编译器可以开箱即用地分析的代码构造来限制所需的额外本机配置的数量,以提高兼容性,并通过减少反射所需的配置数量来减少占用空间,资源或代理。
GraalVM 原生镜像会确定哪些 Java 类、方法和字段在运行时是可访问的,并且只有这些内容会被包含在原生可执行文件中。指向分析从所有入口点(通常是应用程序的 main 方法)开始。...可执行文件本身功能完备,不需要 JVM 来运行。因此,你得到的是 Java 应用程序的精简而快速的原生可执行版本:它具备完全相同的功能,但只包含必要的代码及其所需的依赖项。...这种快速且资源高效的运行时行为让原生镜像成为一种很棒的部署模型,在更短的时间内使用更少的资源,可以显著降低成本——适用于微服务、无服务器和云端工作负载。 文件体积。原生可执行文件只包含必需的代码。...改变 Java 云端部署 原生镜像将改变云端部署,它对应用程序的资源消耗产生了很大的影响。我们知道,原生镜像生成的原生可执行文件启动快,需要的内存少。对于云端部署来说,这到底意味着什么?...disroless 镜像只包含运行应用程序所需的库,不包含 shell、包管理器和其他程序。
这意味着,除了 Spring 诞生以来就支持的 Java 虚拟机,官方添加了使用 GraalVM 将 Spring 应用编译成原生镜像的 beta 支持,这样的话,就能提供一种新的方式来部署 Spring...这些原生的 Spring 应用可以作为一个独立的可执行文件进行部署(不需要安装 JVM),并且还能提供有趣的特征,包括几乎瞬时的启动(一般会小于 100 毫秒)、瞬时的峰值性能以及更低的资源消耗,其代价是比...通过简单的 mvn spring-boot:build-image 或 gradle bootBuildImage 命令,就能生成一个优化的容器镜像,它包含了一个最小的操作系统层和一个小的原生可执行文件...,该文件只包含了必需的东西即 JDK、Spring 以及应用中所使用的依赖。...请检查自动生成的 HELP.md 文件,该文件包含了有用的链接和文档,同时它还能标记出来你是否选择了一些在原生环境下不支持的依赖。
.runtimeconfig.json 文件,其中指定了应用程序所需的共享运行时,以及运行时的其他配置选项(例如垃圾回收类型)。 应用程序的依赖项,将这些依赖项从 NuGet 缓存复制到输出文件夹。...PublishTrimmed 在发布自包含的可执行文件时,剪裁未使用的库以减小应用的部署大小。 有关详细信息,请参阅剪裁自包含部署和可执行文件。 自 .NET 6 SDK 起可用。...从 .NET 6 Preview 7 开始提供。 -c|--configuration 定义生成配置。...大多数项目的默认配置为 Debug,但你可以覆盖项目中的生成配置设置。 -f|--framework 为指定的目标框架发布应用程序。 必须在项目文件中指定目标框架。...若要避免嵌套发布文件夹,请指定一个不在项目文件夹正下方的发布文件夹,或从项目中排除发布文件夹。
以可移植的方式实现这一点将非常繁琐,因为可执行文件的位置和可执行文件后缀(例如,Windows 上的.exe后缀)可能在操作系统、构建类型和生成器之间有所不同。...在第九章,混合语言项目中,我们将使用 Python CFFI 和 Cython,而本节内容可以作为一个有用且可复用的代码片段,用于检测这些包是否存在。 在构建时运行自定义命令:I....Python 脚本static-size.py反过来使用size命令来获取可执行文件的静态分配大小,将其转换为 MB,并打印结果。...特别是,我们将考虑以下内容: 如何确保特定的代码片段能够成功编译成可执行文件。 如何确保编译器理解所需的标志。 如何确保特定的代码片段能够成功编译成运行的可执行文件。...在第四章,创建和运行测试中,我们使用生成器表达式来解析特定目标的文件路径。在第十一章,打包项目中,我们也会欣赏生成器表达式。
对原生可执行文件的监控机制正在改进,但现在的开发者不能依靠他们常用的工具和工作流来监控原生部署。...一些构建时初始化的代码也可以从原生可执行文件中移除,因为它们只在构建时运行。在许多情况下,移除其他方法和类会产生连锁反应,因为它们只在启动期间被调用。...现在,我们通常不能针对单独的原生可执行文件执行单元测试,因为反射所需的方法可能没有被注册,或者可能已经从原生代码中删除了。...只针对动态 JVM 做测试?在打开拉取请求之前编译成原生可执行文件?这些改变将影响你的内部开发循环速度。 说到速度,较长的编译时间也将影响 CI 管道运行的速度。...他们只依赖原生 Java 的特性,避免使用大多数动态特性,如反射、MethodHandle,甚至动态类加载。这有效地形成了动态 Java 的一个子集。
领取专属 10元无门槛券
手把手带您无忧上云