当前位置: 首页 > news >正文

软件开发建设网站河南建设工程信息网 高级职称 赵静飞 证书

软件开发建设网站,河南建设工程信息网 高级职称 赵静飞 证书,图片制作的软件有哪些,网站支付界面怎么做.NET5.0 单文件发布打包操作深度剖析前言随着 .NET5.0 Preview 8 的发布#xff0c;许多新功能正在被社区成员一一探索#xff1b;这其中就包含了“单文件发布”这个炫酷的功能#xff0c;实际上#xff0c;这也是社区一直以来的呼声#xff0c;从 WinForm 的 msi 开始许多新功能正在被社区成员一一探索这其中就包含了“单文件发布”这个炫酷的功能实际上这也是社区一直以来的呼声从 WinForm 的 msi 开始我们就希望有这样一个功能虽然在 docker 时代单文件发布的功能显得“不那么重要”但正是从这一点可以看出.NET 的团队成员一直在致力于实用功能的完善。在 Java 的世界里单文件发布一直伴随着他们的成长War 文件可以直接上传到 Tomcat 上运行话说我们还是有那么一丢丢的羡慕的不过凡事有利就有弊单文件发布对于细分模块的热更新来说还有有一点点的不方便。不过瑕不掩瑜在微服务概念越来越火热的今天相信单文件发布的功能带给大家更多的是兴奋。什么是单文件发布首先我们要清楚的了解什么是单文件发布。官方的目标定义.Net 5.0单个文件解决方案应为广泛兼容可以将包含IL程序集随时运行的程序集复合程序集本机二进制文件配置文件等的应用程序打包为一个可执行文件。可以直接从打包软件直接运行应用程序的托管组件而无需提取到磁盘。可与调试器和工具一起使用。从上面的目标可以看出和以往版本最大的不同在于将所有依赖打包到一个可执行文件中可直接运行不影响调试操作。注意上面的这句话“将所有依赖打包到一个可执行文件中”而在以往我们使用 dotnet publish 将应用程序进行发布之后我们会看到在 publish 下有许多项目依赖的 dll 文件在 .NET5.0 到来之后这些依赖文件可收纳到一个文件中瞬间让人感受到了清凉。发布操作指令相关命令可选参数配置文件设置参数除了可以使用命令行参数的形式还可以通过配置文件的形式设置发布参数编辑项目文件添加配置节点到文件中并保存即可。关于 RID 说明见https://docs.microsoft.com/en-us/dotnet/core/rid-catalog这是截止本文发布前的 RID 版本不排除 .NET5.0 有新的发布其它参数除了上面的三个可选参数我在查询文档的过程中还发现官方还提到了其它参数的使用目前不确定是否有效还可以通过设置 ExcludeFromSingleFile 元素该设置将指定某些文件不嵌入单个文件之中。编写待打包的应用程序为了更直观的看出正常发布和单文件发布的区别我们特别准备了一个 Web 应用程序并对两个程序集进行依赖引用。准备好项目编译成功尝试发布打开 PowerShel 控制台分别输入以下命令linux-x64 和 win-x64 两个目录下分别有 publish 目录由于平台的不同所引用的依赖也不一样这是我们早就了解过的我们看看打包前后的区别以上执行的两条命令语句会为我们生成 Linux 和 Windows 两个平台的程序包从上图中可以看出在打包之前项目的各种引用依赖都被复制到了发布目录下这也是我们之前的程序发布方式在经过打包后所有依赖文件都被装入了一个可执行文件中在 Linux 平台下表现为PreviewWebApplication Windows 平台下则为PreviewWebApplication.exe。从打包效果来看迁移将变得更加方便了。运行打包程序打包后的程序和未打包的发布程序在运行方式上没有太多的差异性在 Windows 平台上只需要双击 PreviewWebApplication.exe 就可以运行该打包程序了本示例创建的是一个 WebApi 的程序直接访问程序侦听的地址后得到接口返回的结果如果您创建的是带有 Razor 视图或者携带其它资源文件的可能无法访问指定的 url。在程序成功运行起来后我们发现打包程序并没有解压缩文件到磁盘而是直接从包中加载文件到内存中运行这是巨大的进步也是和 War 文件根本的区别。需要注意的是该 .exe 文件并不能单独复制到别的地方运行你必须把 .exe 当前目录完整的复制才能运行这涉及到主机探测的问题下面我们将会一一提到。跨平台的打包文件通过上面的示例我们了解到打包程序总是为不同的平台生成独立的包程序这是为什么呢这里就涉及到一个概念也就是 Tool Interface Standard (TIS)Executable and Linking Format(ELF)Common Object File FormatCOFF于1983年引入最初使用在 ATT 的 UNIX 系统上。由于 COFF 的各种局限性比如节的最大数量受到限制节名称所包含的源文件的长度受到限制并且符号调试信息无法支持实际的语言。最后在 System V Release 4 (SVR4) 发布后ATT 使用 ELF 替代了 COFF。工具接口标准委员会 援引委员会规范文件的说明可执行文件和链接格式最初由 UNIX 系统开发和发布实验室USL作为应用程序二进制接口API的一部分。工具接口标准委员会 TIS 选择将不断发展的 ELF 标准作为便携式对象文件。该标准适用于各种操作系统的 32 位英特尔架构环境的格式。ELF 标准旨在通过向开发人员提供具有一组跨多个操作环境的二进制接口定义。这将减少不同接口实现的数量从而减少需要重新编写和编译的代码。ELF 文件结构又分为三种类型分别是Portable Executable (PE)在 Windows 阵营微软在此 COFF 标准的基础上又进行了创新和发展出了 PE 文件标准PE Format 该规范描述了Windows操作系统家族下的可执行文件图像和目标文件的结构。这些文件分别称为可移植可执行PE和公用对象文件格式COFF文件。从上面的两种规范中可以看出LinuX 和 Windows 都有各自的文件格式规范而这种规范在一定程度上是不兼容的不论是从文件结构还是解析方式所以 .NET5.0 中的打包程序必须为不同的平台实现独立的打包器。打包器的实现在 runtime 中的 Microsoft.NET.HostModel 库中。认识了 ELF 和 PE 文件结构之后我们就可以对打包器代码进行阅读理解。Microsoft.NET.HostModel你可以从 github 上下载 .NET 5.0 的源代码 转到目录runtime/src/installer/managed/Microsoft.NET.HostModel源码不太多可直接进行阅读主要理解层次关系即可。打包器主要包含了三大部分的内容分别是 AppHost、Boundler、ComHost在文件 Boundle/Manifest.cs 的头部我们看到了“单文件程序”的文件结构定义从上面的文件结构中我们可以非常清晰的看到单文件程序的结构一共分为三大部分分别是文件头信息的查看我们可以通过一些工具去查看已经打包好的文件在 Linux 下可以使用 readelf/objdump 等程序来获取 PreviewWebApplication 文件的信息。在 Windows 下可以使用 PE Tools 等工具Linux 下 readelf 读取文件头信息从图中我们可以看到 Type:DYN(Sharedobjectfile) 这是一个标准的共享对象文件关于 ELF 头部信息的内容不再展开有兴趣的同学可以自行学习相关内容。Windows下 PE Tools 读取文件头信息已经打包好的程序内部包含了 319Linux、Windows359 个文件Windows 版本在未打包前是 84.3MB打包后是 69.8MB最重要的是在运行时无需解压缩直接从 Boundle 中运行文件。文件中的第三部分也就是 “实体清单Manifest Entries的写入代码在 Boundle\Boundler.cs\AddToBundle在成员方法 GenerateBundle(IReadOnlyListfileSpecs) 内部迭代调用了 AddToBundle 方法完成了实体清单文件的写入。因为解压器的实现已经转移到了 HostFxr 和 HostPolicy 中以静态链接库的方式链接到打包器中且该部分代码由 C 进行编写鉴于 C 水平有限在这里不作介绍。结束语编写这篇文章耗费了我大量的时间期间大量阅读海量的参考资料、文献、标准文档、制作文章配图等等写干货文章真的需要投入巨大的精力和时间希望你们喜欢。文章进行到这里我知道肯定还有很多同学没看过瘾但是我们可以通过回顾打包器的开发进度表来体验一下 .NET 团队的开发热情。主要参考资料.NET团队计划经理 Richard Lander 的博客https://devblogs.microsoft.com/dotnet/announcing-net-5-0-preview-8/Boundler 进度表https://github.com/dotnet/runtime/issues/36590single-filehttps://github.com/dotnet/designs/tree/master/accepted/2020/single-fileELF文档https://refspecs.linuxbase.org/elf/elf.pdfELF维基百科https://en.wikipedia.org/wiki/ExecutableandLinkable_FormatReadelfhttps://sourceware.org/binutils/docs/binutils/readelf.htmlPE文档https://docs.microsoft.com/en-us/windows/win32/debug/pe-formatPE Toolshttps://github.com/petoolse/petools
http://www.huolong8.cn/news/135229/

相关文章:

  • 网上报建贵州建设局网站网络直播平台
  • 做调研的网站一般有哪些如何做垂直门户网站
  • 网站代理被抓合肥高端网站建设公司哪家好
  • 无锡品牌网站建设中小企业建站可以怎么做
  • 心悦每周免做卡网站深圳企业招聘
  • 南浔建设网站全国企业信息公开系统
  • 蒙阴网站优化企业网站推广案例
  • 网络公司如何开网站怎么制作图片和文字一起
  • 网站开发合同付款方式宜良网站建设
  • 苏州seo网站优化软件网站建设书案例
  • 建设网站的协议虚拟主机服务
  • 网站建设新手教程微信开发商
  • 网站分析实例河北建设厅网站三类人
  • 厂房验收 技术支持 东莞网站建设用什么软件做网站最简单
  • 做公司企业网站标准尺寸超级外链推广
  • 做网站推广如何哪个协会要做网站建设啊
  • 可以做企业网站企业邮箱在哪里注册
  • 如何用网站设计制作东莞专业微网站建设
  • 野外美食网站设计欣赏sun0769东莞阳光网
  • 网站加盟城市分站租网站服务器一个月多少钱
  • 东莞免费网站制作常见的网站推广方式有哪些
  • 网站模块化兰州专业网站建设公司哪家好
  • 网站建设设计 网络服务重庆网站建站推广
  • 免费动态素材网站服务器租用大概多少钱
  • 保定企业自助建站知言 wordpress
  • 网站优化 代码做网站需要做什么页面
  • 钢格板保定网站建设如何免费建立官方网站
  • php开源多用户商城系统郑州seo管理
  • 网站建设div asswordpress 分类合并
  • 新网站的宣传推广中国企业500强门槛