.NET平台系列18 .NET5的超强优势
.NET5 统一版本之后将支持所有 .NET 应用程序类型:Xamarin、ASP.NET、IoT 和桌面。此外,它将利用一个单独的 CoreFX/基类库 (BCL)、两个独立的运行时和运行时代码库(因为很难将两个截然不同的运行时单独作为源)和一个工具链(比如 dotnet CLI)。结果将是行为、API 和开发人员体验之间的一致性。例如,在每个不同平台上将运行一组库,而不是三个 System.* API 实现。

.NET 的统一有很多优点。将框架、运行时和开发人员工具集统一到一个代码库中,将减少开发人员(Microsoft 和社区)需要维护和扩展的重复代码量。此外,正如我们最近对 Microsoft 的期许,所有 .NET 5 源代码都将是开放源代码。
合并后,所有平台都可以使用每个单独框架独有的许多功能。例如,这些平台的 csproj 类型将统一为深受欢迎的、简单的 .NET Core csproj 文件格式。因此,.NET Framework 项目类型将能够利用 .NET Core csproj 文件格式。虽然 Xamarin 和 .NET Framework(包括 WPF 和 Windows 窗体)csproj 文件需要转换为 .NET Core csproj 文件格式,但该任务类似于从 ASP.NET 转换为 ASP.NET Core。幸运的是,得益于诸如 ConvertProjectToNETCore3 之类的工具,现在实现起来更加容易(请参阅 bit.ly/2W5Lk3D)。

另一个显著差异是 Xamarin 和 .NET Core/.NET Framework 的运行时行为。前者使用静态编译模型,使用提前 (AOT) 编译将源代码编译为平台的本机源代码。而 .NET Core 和 .NET Framework 使用即时 (JIT) 编译。幸运的是,在 .NET 5 中,JIT和AOT这两种模型都将受支持,具体取决于项目类型目标。例如,可以选择将 .NET5 项目编译为单个可执行文件,该文件将在运行时使用 JIT 编译器 (jitter),或使用本机编译器在 iOS 或 Android 平台上工作。大多数项目都会利用 JIT,但对于 iOS 来说,所有代码都是 AOT。对于客户端 Blazor,运行时是 Web 程序集 (WASM),Microsoft 打算 AOT 编译少量托管代码(大约 100 kb 到 300 kb),而其余代码将被解释。(AOT 代码很大,因此网络成本是一个相当大的负担。)
在 .NET Core 3.0 中,可以编译到单个可执行文件,但该可执行文件实际上是运行时所需执行的所有文件的压缩版本。在执行该文件时,它首先将自己展开到一个临时目录中,然后从包含所有文件的目录中执行应用程序的入口点。相反,.NET 5 将创建一个实实在在的、可直接就地执行的单个可执行文件。
.NET 5 的另一个显著特性是与 Java 和 Objective-C(包括 Swift)中源代码的互操作性。自早期版本以来,这一直是 Xamarin 的一个特性,但将扩展到所有 .NET5 项目。例如,你将能够在 csproj 文件中包含 jar 文件,并且能够直接从 .NET 代码调用 Java 或 Objective-C 代码。(遗憾的是,对 Objective-C 的支持可能会比 Java 晚)。 需要注意的是,.NET5 和 Java/Objective-C 之间的互操作性只针对进程内通信。与同一台计算机上的其他进程甚至不同计算机上的进程的分布式通信可能需要序列化为基于 REST- 或 RPC- 的分布式调用。
新的互联网技术时代已经来临了,容器、Kubernetes、DevOps、微服务、云原生才是技术前进的方向,其中容器技术属于基石。从.NET Core 诞生直到.NET5,都能持续看到平台对容器技术的官方支持和适配改进,里面还强调了有着更小的容器镜像。.NET5+Docker容器化后还有其他语言无可比拟的优势!

1、体积更小
.NET5的镜像体积都很小,alpine的镜像更小,带上应用程序也才80M,对于微服务分布式架构而言,更小的体积意味着更少的下载带宽,更快的分发下载速度。
2、占用资源更少
.NET5的CLR+默认http://ASP.NET Core框架页面启动后,仅需22M内存,同比Java8已经需要120M了,运行时资源占用也更低,意味着更高的部署密度和更低的计算成本。
3、启动速度更快
.NET5的 CLR启动速度非常快,而启动速度就意味着交付效率和回滚效率,在动辄数百个副本微服务时,启动速度就是个非常重要的特性。
4、容器感知,低配运行
.NET5 默认更好的支持Docker资源限制,官方团队也在努力让.NET5成为真正的容器运行时,使其在低内存环境中具有容器感知功能并高效运行,远超其他平台。
.NET团队一直将重点放在.NET5领域,并引入了新的改进和功能:
- REST API 可以更简单地构建测试,并将其发布到诸如Azure API管理之类的应用程序中。此外,还可以在默认情况下由OpenAPI生成客户端。
- gRPC gRPC可以构建与WCF类似的高性能基于合约的API。
- 较小,更快的微服务 .NET团队在.NET5中完成的一件很酷的事情是,您可以选择一个ASP .NET项目,然后选择要发布的项目,这将生成一个20m的小型自包含应用程序,完全不需要在计算机上运行.NET。
- 使用WSL和Linux进行跨平台开发
- 高性能反向代理(YARP)
参考文献:
- https://devblogs.microsoft.com/dotnet/announcing-net-5-0/
- https://docs.microsoft.com/zh-cn/archive/msdn-magazine/2019/july/csharp-net-reunified-microsoft%E2%80%99s-plans-for-net-5
.NET平台系列18 .NET5的超强优势的更多相关文章
- .NET平台系列15 .NET5的吊炸天性能改进
系列目录 [已更新最新开发文章,点击查看详细] .NET5的性能改进测试功能 Benchmark.NET现在是衡量.NET代码性能的规范工具,可轻松分析代码段的吞吐量和分配. .NET5的性能 ...
- .NET平台系列13 .NET5 统一平台
系列目录 [已更新最新开发文章,点击查看详细] 时机决定一切,对于 .NET5 也是如此.实际上微软.NET团队在开始开发 .NET Core 时,对 .NET Framework 的全面重写 ...
- .NET平台系列17 .NET5中的ARM64性能
系列目录 [已更新最新开发文章,点击查看详细] .NET团队使.NET 5大大提高了常规性能和ARM64性能.在<.NET5中的性能改进>博客中可以查看总体改进情况.在这篇文章中, ...
- .NET平台系列16 .NET5/Asp.Net Core 在全球Web框架权威性能测试 Web Framework Benchmarks 中的吊炸天表现
系列目录 [已更新最新开发文章,点击查看详细] TechEmpower Web Framework Benchmarks 是许多Web应用程序框架执行基本任务(如JSON序列化.数据库访问和服 ...
- .NET平台系列14 .NET5中的新增功能
系列目录 [已更新最新开发文章,点击查看详细] .NET5中不包含的内容 尽管 .NET5 框架中提供了一组重要 API,但它并不包括过去20年左右开发的所有 API,但是.NET Stand ...
- .NET平台系列21:云原生时代 .NET5 雄霸天下
系列目录 [已更新最新开发文章,点击查看详细] 随着互联网持续高歌猛进,相关技术名词也是层出不穷.微服务.容器化.DevOps.ServerLess.FaaS,这两年最火的当属云原生Cloud ...
- .NET平台系列22:.NET Core/.NET5/.NET6 对比 .NET Framework
系列目录 [已更新最新开发文章,点击查看详细] 在我的博客<.NET平台系列2 .NET Framework 框架详解>与 <.NET平台系列7 .NET Core 体系结构 ...
- .NET6 平台系列4 .NET开源之路
系列目录 [已更新最新开发文章,点击查看详细] .NET平台是微软于2000年推出的Windows操作系统的应用软件开发框架,发展至今形成巨大的技术栈,涉及多语言(支持C#.F#.VB.NET ...
- .NET 平台系列6 .NET Core 发展历程
系列目录 [已更新最新开发文章,点击查看详细] 在我的上一篇博客<.NET平台系列5 .NET Core 简介>中主要介绍了.NETCore的基本情况,主要包括.NET跨平台的缘由 ...
随机推荐
- VPS、云主机 and 服务器集群、云计算 的区别
VPS:(virtual private server)虚拟专用服务器,将一台服务器分割成多个虚拟专享服务器的优质服务.实现VPS的技术分为容器技术和虚拟化技术.在容器或虚拟机中,每个VPS都可分配独 ...
- [CTF]unicode编码
[CTF]unicode编码 --------------------- 作者:adversity` 来源:CSDN 原文:https://blog.csdn.net/qq_40836553/a ...
- 前端Excel表格导入导出,包括合并单元格,表格自定义样式等
表格数据导入 读取导入Excel表格数据这里采用的是 xlsx 插件 npm i xlsx 读取excel需要通过 XLSX.read(data, {type: type}) 方法来实现,返回一个叫W ...
- VMware Workstation中安装Hyper-V
1:在虚拟机设置中,CPU属性中勾选"Virtualize Intel VT-x/EPT or AMD-V/RVI"来启用虚拟机的CPU支持虚拟化. 2:2.在虚拟机文件所在目录中 ...
- mysql.data.entityframeworkcore 已弃用
转官网有方案: https://dev.mysql.com/doc/connector-net/en/connector-net-entityframework-core.html General R ...
- QFNU 10-02 19 training
B - Yet Another Crosses Problem 题意:找如果使图中某一行某一列全部变成黑色,至少需要把多少个白方格变成黑方格 思路:直接找就可以,注意存储的时候要记得进行分开存储,存储 ...
- ZOHO的下一个25年:用心为企业服务
来源:中国软件网 作者:海策 在25周年会上,ZOHO大中华区总裁侯康宁先生豪情壮志,"25岁的ZOHO,已经成长为非典型一线大厂." 1996年,ZOHO成立.截止2021年,Z ...
- Spring循环依赖问题的解决
循环依赖问题 一个bean的创建分为如下步骤: 当创建一个简单对象的时候,过程如下: 先从单例池中获取bean,发现无 a 创建 a 的实例 为 a 赋值 把 a 放到单例池中 当创建一个对象并且其中 ...
- [bug] IDEA中解决程序包javax.servlet不存在
参考 https://blog.csdn.net/qq_41283865/article/details/81865806
- 网络协议 SNMP- Windows10无简单SNMP协议服务器配置
原因:Windwos10 1809后更新版本,无启动SNMP协议服务器可选配置项. 解决: 1.打开设置中的[开发人员模式],设置->更新与安全->开发者选项->开发人员模式 2.添 ...