最近看了 Simon Martinelli 在 Spring I/O 2025 的演讲:《Say Goodbye to Microservices, Say Hello to Self-Contained Systems》(如果英语观看困难的小伙伴,推荐使用Chrome插件「YouTube中文配音」),其中提到了大家在微服务实践过程中的痛点,并引出了新的解决方案:Self-Contained Systems 什么是 SCS(Self-Contained Systems) 对于微服务,相信大家都已经不陌生了,那什么是 SCS(Self-Contained Systems)呢? 根据以上内容结合《Say Goodbye to Microservices, Say Hello to Self-Contained Systems》的演讲内容,做了一下整理: 比较维度 微服务(Microservices
.NET Core 提供的发布应用程序选项 self-contained 是共享应用程序的好方法,因为应用程序的发布目录包含所有组件、运行时和框架。 .NET Core 3.0 中发布 self-contained 程序可以使用下面的命令: dotnet publish -r win-x64 -c Release --self-contained 上面的命令执行之后会在创建的发布文件夹中包含 self-contained 可执行程序所需的所有文件,文件数大概有 100 个左右,如果想要在目标计算机上运行这个应用程序,那就需要复制这个发布文件夹内所有文件 对于简单的控制台应用程序来说,它仍然有点儿大,但请注意,这是一个包含了 .NET Core 运行时的 self-contained 应用程序。 ? 以上就是我要介绍的全部内容了。
使用dotnet publish命令(除.NET Core 3.x之外)以PDE模式发布应用,需指定下面两个参数: -r <RID> 该参数使用RID用于指定目标平台 --self-contained false 该参数值为false时,.NET Core SDK会以FDE模式打包应用 SCD SCD:Self-contained deployment,自包含部署。 false 3.0 dotnet publish -c Release -r <RID> --self-contained false 3.0* dotnet publish -c Release Self-contained deployment 2.1 dotnet publish -c Release -r <RID> --self-contained true 2.2 dotnet publish -c Release -r <RID> --self-contained true 3.0 dotnet publish -c Release -r <RID> --self-contained true
快速预览 在 Java 生态系统中构建微服务的策略主要有:container-less, self-contained 和 in-container; Container-less 微服务把应用程序及其所有依赖打包成单一的 jar 文件; Self-contained 微服务也会将应用及其依赖打包成单一的Jar文件,但它还包含可能含有第三方库的嵌入式框架; In-container 微服务会打包一个完整的 Java EE Self-contained 另一种单 jar 部署就是使用一个嵌入式框架来构建服务。在此方法中,框架提供了所需服务的实现方法,开发者可以选择在项目中包括哪些服务。 self-contained 方法的优点是你可以自主选择用于服务运行的项目。 这种方法的缺点是配置更加复杂,由于它在实际的服务中构建所需的容器功能,由此产生的 jar 文件也会稍大一些。 对于简单的服务, container-less 或者 self-contained 服务就是不错的选择。不过,借助 in-container ,开发者可以更快更简单地实现更高级的服务。
简介 在JAVA的生态系统中构建微服务的策略主要有:container-less, self-contained, 以及in-container. Self-contained的微服务也是把所有打包到单个的JAR文件中,但是它包含一个嵌入式的框架,这个框架含有可选的兼容第三方库。 在文中,我将这几种方法分别称为Container-less,Self-contained,以及In-container。这些术语可能尚未被完全确立,但在这里,它们可以达到区分这几种方法的目的。 Self-contained 另一种单jar部署就是使用一个嵌入式框架来构建服务。在此方法中,框架提供了所需服务的实现方法,开发者可以选择在项目中包括哪些服务。 你可能会认为这个方法与container-less完全一样,但笔者认为,两者的区别在于,self-contained方法会提供一套相互兼容的第三方库。所以,该方法不存在库兼容性问题。
jar 文件; Self-contained 微服务也会将应用及其依赖打包成单一的Jar文件,但它还包含可能含有第三方库的嵌入式框架; In-container 微服务会打包一个完整的 Java EE Self-contained 另一种单 jar 部署就是使用一个嵌入式框架来构建服务。在此方法中,框架提供了所需服务的实现方法,开发者可以选择在项目中包括哪些服务。 你可能会认为这个方法与 container-less 完全一样,但笔者认为,两者的区别在于,self-contained 方法会提供一套相互兼容的第三方库。所以,该方法不存在库兼容性问题。 self-contained 方法的优点是你可以自主选择用于服务运行的项目。 这种方法的缺点是配置更加复杂,由于它在实际的服务中构建所需的容器功能,由此产生的 jar 文件也会稍大一些。 对于简单的服务, container-less 或者 self-contained 服务就是不错的选择。不过,借助 in-container ,开发者可以更快更简单地实现更高级的服务。
jar 文件; Self-contained 微服务也会将应用及其依赖打包成单一的Jar文件,但它还包含可能含有第三方库的嵌入式框架; In-container 微服务会打包一个完整的 Java EE Self-contained 另一种单 jar 部署就是使用一个嵌入式框架来构建服务。在此方法中,框架提供了所需服务的实现方法,开发者可以选择在项目中包括哪些服务。 你可能会认为这个方法与 container-less 完全一样,但笔者认为,两者的区别在于,self-contained 方法会提供一套相互兼容的第三方库。所以,该方法不存在库兼容性问题。 ? self-contained 方法的优点是你可以自主选择用于服务运行的项目。 这种方法的缺点是配置更加复杂,由于它在实际的服务中构建所需的容器功能,由此产生的 jar 文件也会稍大一些。 对于简单的服务, container-less 或者 self-contained 服务就是不错的选择。不过,借助 in-container ,开发者可以更快更简单地实现更高级的服务。
jar 文件; Self-contained 微服务也会将应用及其依赖打包成单一的Jar文件,但它还包含可能含有第三方库的嵌入式框架; In-container 微服务会打包一个完整的 Java EE Self-contained 另一种单 jar 部署就是使用一个嵌入式框架来构建服务。在此方法中,框架提供了所需服务的实现方法,开发者可以选择在项目中包括哪些服务。 你可能会认为这个方法与 container-less 完全一样,但笔者认为,两者的区别在于,self-contained 方法会提供一套相互兼容的第三方库。所以,该方法不存在库兼容性问题。 ? self-contained 方法的优点是你可以自主选择用于服务运行的项目。 这种方法的缺点是配置更加复杂,由于它在实际的服务中构建所需的容器功能,由此产生的 jar 文件也会稍大一些。 对于简单的服务, container-less 或者 self-contained 服务就是不错的选择。不过,借助 in-container ,开发者可以更快更简单地实现更高级的服务。
回到目录 谈一谈发布 .NET Core分为两种应用类型,分别是: Portable applications(便携应用) Self-contained application(自宿主应用) Portable 优点 易移植 发布的内容较小 缺点 需要安装.NET Core运行时 Self-contained application(自宿主应用) 当当当,这种方式很酷,也是我最喜欢的一种发布方式。 /bin/[configuration]/[framework]//app Self-contained application:. 发布:Self-contained application(自宿主应用) 修改“project.json” 删除“Microsoft.NETCore.App”节点中"type" : "platform" Self-contained application(自宿主应用) 直接打开可执行文件 Windows 下直接双击“ConsoleApp1.exe”你懂的。。
args[1] output_fname = args[1] + ".html" os.system("pandoc {} -s -c mk.css --self-contained output_fname = "".join(output_fname) + ".html" os.system("pandoc {} -s -c mk.css --self-contained -o {}".format(input_fname, output_fname)) else: os.system("pandoc {} -s -c mk.css --self-contained
发布的时候,会使用很多文件,这样发给小伙伴使用的时候不是很清真,本文告诉大家一个非官方的方法通过 warp 将多个文件打包为一个文件 和之前相同的方式发布一个 dotnet core 程序,记得需要使用 --self-contained 发布 dotnet publish -c Release --self-contained -r win-x86 这时可以在输出的文件夹 bin 的 Release\netcoreapp2.1\win-x86 dgiagio/warp: Create self-contained single binary applications Single exe self contained console app
Dart 2.6 is now available, with support for compiling to self-contained, native executables. debian package · Issue #36892 · dart-lang/sdk Announcing Dart 2.6 with dart2native: Compile Dart to self-contained 这一节提到了 Dart 的性能问题,这里可以找到很多参考数据 参考 Platforms | Dart Announcing Dart 2.6 with dart2native: Compile Dart to self-contained
都不会放在发布文件 如果不知道如何编辑 csproj 文件,有一个简单的方法就是在发布的时候加上参数 /p:TrimUnusedDependencies=true 就可以 dotnet publish --self-contained TrimUnusedDependencies=true 参数,这样就可以发现一些动态使用的类没有引用 实际我测试通过这个方法没有去掉多少dll不如使用 CoreRT 编译为 Native 文件 Reducing the size of self-contained
很简单,我只需在项目目录中运行以下命令: dotnet publish -r win-x64 -c Release --self-contained 朋友是多少位的操作系统,你就标记要发布成什么样子的, --self-contained这个标签的解释自包含,就是说你的相关依赖项与你的应用程序不挂钩,将会产生依赖,缺少一个dll就会缺胳膊少腿。
-y nodejs 3.安装.Net Core Runtime 3.1 发布应用 .Net Core有两种发布方式,一种是依赖运行时,其要求服务器必须安装.Net Core Runtime,一种是Self-contained 依赖运行时的二进制文件 #依赖运行时 $dotnet publish -r linux-x64 --self-contained false -o publish Self-contained #.Net Core Self-contained $dotnet publish -c Release -r linux-x64 --self-contained true -p:PublishSingleFile
都不会放在发布文件 如果不知道如何编辑 csproj 文件,有一个简单的方法就是在发布的时候加上参数 /p:TrimUnusedDependencies=true 就可以 dotnet publish --self-contained TrimUnusedDependencies=true 参数,这样就可以发现一些动态使用的类没有引用 实际我测试通过这个方法没有去掉多少dll不如使用 CoreRT 编译为 Native 文件 Reducing the size of self-contained
the Scrapy downloader genspider Generate new spider using pre-defined templates runspider Run a self-contained genspider Generate new spider using pre-defined templates ## 创建一个新的 spider 文件 runspider Run a self-contained
通过AppHost理解运行过程 dotnet 桌面端基于 AppHost 的配置式自动切换更新后的应用程序路径 Support deploying multiple exes as a single self-contained native-hosting.md at main · dotnet/runtime samples/core/hosting at main · dotnet/samples c# - While a self-contained
html源码) genspider Generate new spider using pre-defined templates () runspider Run a self-contained available spiders parse Parse URL (using its spider) and print the results runspider Run a self-contained
mytest】(需要导出)的数据库 点击右下角的【Start Export】 成功 将sql文件导出至指定位置 点回至【Object Selection】 选定单选按钮【Export to self-Contained