還不知道.NET 5 這些超強(qiáng)優(yōu)勢(shì)?
支持所有 .NET 應(yīng)用程序類型
.NET5 統(tǒng)一版本之后將支持所有 .NET 應(yīng)用程序類型:Xamarin、ASP.NET、IoT 和桌面。此外,它將利用一個(gè)單獨(dú)的 CoreFX/基類庫(kù) (BCL)、兩個(gè)獨(dú)立的運(yùn)行時(shí)和運(yùn)行時(shí)代碼庫(kù)(因?yàn)楹茈y將兩個(gè)截然不同的運(yùn)行時(shí)單獨(dú)作為源)和一個(gè)工具鏈(比如 dotnet CLI)。結(jié)果將是行為、API 和開(kāi)發(fā)人員體驗(yàn)之間的一致性。例如,在每個(gè)不同平臺(tái)上將運(yùn)行一組庫(kù),而不是三個(gè) System.* API 實(shí)現(xiàn)。

將框架、運(yùn)行時(shí)和開(kāi)發(fā)人員工具集統(tǒng)一到一個(gè)代碼庫(kù)中
.NET 的統(tǒng)一有很多優(yōu)點(diǎn)。將框架、運(yùn)行時(shí)和開(kāi)發(fā)人員工具集統(tǒng)一到一個(gè)代碼庫(kù)中,將減少開(kāi)發(fā)人員(Microsoft 和社區(qū))需要維護(hù)和擴(kuò)展的重復(fù)代碼量。此外,正如我們最近對(duì) Microsoft 的期許,所有 .NET 5 源代碼都將是開(kāi)放源代碼。
合并后,所有平臺(tái)都可以使用每個(gè)單獨(dú)框架獨(dú)有的許多功能。例如,這些平臺(tái)的 csproj 類型將統(tǒng)一為深受歡迎的、簡(jiǎn)單的 .NET Core csproj 文件格式。因此,.NET Framework 項(xiàng)目類型將能夠利用 .NET Core csproj 文件格式。雖然 Xamarin 和 .NET Framework(包括 WPF 和 Windows 窗體)csproj 文件需要轉(zhuǎn)換為 .NET Core csproj 文件格式,但該任務(wù)類似于從 ASP.NET 轉(zhuǎn)換為 ASP.NET Core。幸運(yùn)的是,得益于諸如 ConvertProjectToNETCore3 之類的工具,現(xiàn)在實(shí)現(xiàn)起來(lái)更加容易(請(qǐng)參閱 bit.ly/2W5Lk3D)。

支持JIT與AOT兩種編譯模式
另一個(gè)顯著差異是 Xamarin 和 .NET Core/.NET Framework 的運(yùn)行時(shí)行為。前者使用靜態(tài)編譯模型,使用提前 (AOT) 編譯將源代碼編譯為平臺(tái)的本機(jī)源代碼。而 .NET Core 和 .NET Framework 使用即時(shí) (JIT) 編譯。幸運(yùn)的是,在 .NET 5 中,JIT和AOT這兩種模型都將受支持,具體取決于項(xiàng)目類型目標(biāo)。例如,可以選擇將 .NET5 項(xiàng)目編譯為單個(gè)可執(zhí)行文件,該文件將在運(yùn)行時(shí)使用 JIT 編譯器 (jitter),或使用本機(jī)編譯器在 iOS 或 Android 平臺(tái)上工作。大多數(shù)項(xiàng)目都會(huì)利用 JIT,但對(duì)于 iOS 來(lái)說(shuō),所有代碼都是 AOT。對(duì)于客戶端 Blazor,運(yùn)行時(shí)是 Web 程序集 (WASM),Microsoft 打算 AOT 編譯少量托管代碼(大約 100 kb 到 300 kb),而其余代碼將被解釋。(AOT 代碼很大,因此網(wǎng)絡(luò)成本是一個(gè)相當(dāng)大的負(fù)擔(dān)。)
創(chuàng)建單個(gè)可執(zhí)行文件
在 .NET Core 3.0 中,可以編譯到單個(gè)可執(zhí)行文件,但該可執(zhí)行文件實(shí)際上是運(yùn)行時(shí)所需執(zhí)行的所有文件的壓縮版本。在執(zhí)行該文件時(shí),它首先將自己展開(kāi)到一個(gè)臨時(shí)目錄中,然后從包含所有文件的目錄中執(zhí)行應(yīng)用程序的入口點(diǎn)。相反,.NET 5 將創(chuàng)建一個(gè)實(shí)實(shí)在在的、可直接就地執(zhí)行的單個(gè)可執(zhí)行文件。
互操作性
.NET 5 的另一個(gè)顯著特性是與 Java 和 Objective-C(包括 Swift)中源代碼的互操作性。自早期版本以來(lái),這一直是 Xamarin 的一個(gè)特性,但將擴(kuò)展到所有 .NET5 項(xiàng)目。例如,你將能夠在 csproj 文件中包含 jar 文件,并且能夠直接從 .NET 代碼調(diào)用 Java 或 Objective-C 代碼。(遺憾的是,對(duì) Objective-C 的支持可能會(huì)比 Java 晚)。需要注意的是,.NET5 和 Java/Objective-C 之間的互操作性只針對(duì)進(jìn)程內(nèi)通信。與同一臺(tái)計(jì)算機(jī)上的其他進(jìn)程甚至不同計(jì)算機(jī)上的進(jìn)程的分布式通信可能需要序列化為基于 REST- 或 RPC- 的分布式調(diào)用。
容器支持的優(yōu)勢(shì)
新的互聯(lián)網(wǎng)技術(shù)時(shí)代已經(jīng)來(lái)臨了,容器、Kubernetes、DevOps、微服務(wù)、云原生才是技術(shù)前進(jìn)的方向,其中容器技術(shù)屬于基石。從.NET Core 誕生直到.NET5,都能持續(xù)看到平臺(tái)對(duì)容器技術(shù)的官方支持和適配改進(jìn),里面還強(qiáng)調(diào)了有著更小的容器鏡像。.NET5+Docker容器化后還有其他語(yǔ)言無(wú)可比擬的優(yōu)勢(shì)!

1、體積更小
.NET5的鏡像體積都很小,alpine的鏡像更小,帶上應(yīng)用程序也才80M,對(duì)于微服務(wù)分布式架構(gòu)而言,更小的體積意味著更少的下載帶寬,更快的分發(fā)下載速度。
2、占用資源更少
.NET5的CLR+默認(rèn)http://ASP.NET Core框架頁(yè)面啟動(dòng)后,僅需22M內(nèi)存,同比Java8已經(jīng)需要120M了,運(yùn)行時(shí)資源占用也更低,意味著更高的部署密度和更低的計(jì)算成本。
3、啟動(dòng)速度更快
.NET5的 CLR啟動(dòng)速度非???,而啟動(dòng)速度就意味著交付效率和回滾效率,在動(dòng)輒數(shù)百個(gè)副本微服務(wù)時(shí),啟動(dòng)速度就是個(gè)非常重要的特性。
4、容器感知,低配運(yùn)行
.NET5 默認(rèn)更好的支持Docker資源限制,官方團(tuán)隊(duì)也在努力讓.NET5成為真正的容器運(yùn)行時(shí),使其在低內(nèi)存環(huán)境中具有容器感知功能并高效運(yùn)行,遠(yuǎn)超其他平臺(tái)。
云原生支持的優(yōu)勢(shì)
.NET團(tuán)隊(duì)一直將重點(diǎn)放在.NET5領(lǐng)域,并引入了新的改進(jìn)和功能:
REST API 可以更簡(jiǎn)單地構(gòu)建測(cè)試,并將其發(fā)布到諸如Azure API管理之類的應(yīng)用程序中。此外,還可以在默認(rèn)情況下由OpenAPI生成客戶端。 gRPC gRPC可以構(gòu)建與WCF類似的高性能基于合約的API。 較小,更快的微服務(wù) .NET團(tuán)隊(duì)在.NET5中完成的一件很酷的事情是,您可以選擇一個(gè)ASP .NET項(xiàng)目,然后選擇要發(fā)布的項(xiàng)目,這將生成一個(gè)20m的小型自包含應(yīng)用程序,完全不需要在計(jì)算機(jī)上運(yùn)行.NET。 使用WSL和Linux進(jìn)行跨平臺(tái)開(kāi)發(fā) 高性能反向代理(YARP)
轉(zhuǎn)自:張傳寧
鏈接:cnblogs.com/SavionZhang/p/14805610.html


去TM收費(fèi),我要在線 Vip 視頻解析!

又來(lái)一個(gè)Windows神器!
