簡介
.NET AOT編譯是一種.NET執行時的編譯方式,它與傳統的JIT編譯方式不同。
在傳統的JIT編譯中,.NET應用程式的程式碼在執行時才會被編譯成本地機器碼,而在AOT編譯中,程式碼在執行之前就被提前編譯成本地機器碼。
這樣可以在程式碼執行的時候不用再編譯,讓套用啟動更快;AOT編譯後的程式碼是二進制,這樣的話提高了反編譯程式碼的難度,讓套用更安全;它可以減少編譯後的檔大小從而節省IO空間;並可以減少記憶體的使用。
由於AOT編譯是發生的執行之前,所以不能編譯動態生成程式碼,比如反射等程式碼。
.NET 8使用AOT
ASP.NET Core 8.0 正式引入了對 .NET 本機AOT的支持。讓ASP.NET Core能直接使用AOT釋出程式。
當然.NET 7也支持AOT,不過使用麻煩些。下面小編介紹如何使用。
1、先決條件
要在.NET 8中使用AOT當然首先安裝.NET 8的SDK,由於正式版要到11月份才釋出,可以使用它的第一個候選版本(rc1),下載地址如下:
dotnet.microsoft.com/zh-cn/download/dotnet/8.0
另外需要下載安裝Visual Studio 2022 預覽版,並在安裝時選擇"ASP.NET 和 Web 開發」和「使用 C++ 的桌面開發",如下圖:
vs2022預覽版下載地址:
visualstudio.microsoft.com/zh-hans/vs/preview/
2、計畫準備
建立一個ASP.NET Core Web API計畫,註意的是必須選擇帶AOT標識的計畫。
如下圖:
建立後的計畫:
計畫多了個http檔,具體在哪裏添加API介面還需要研究一下。
當然也可以使用.NET Core CLI命令來建立計畫。
命令如下:
dotnet new webapiaot -o AOTtest && cd AOTtest
3、釋出計畫
Visual Studio 不支持釋出 AOT 套用,所以使用.NET Core CLI命令"dotnet publish"來釋出。
釋出成功的視窗如下:
接下來可以開啟釋出的release目錄來執行。
直接雙擊exe檔就可以執行,並且可以在未安裝.NET8的環境下執行。
成功執行效果如下:
其實.NET 8之前的版本也支持AOT,某些大佬實作過。
結語
本文介紹了AOT,並透過範例展示了在.NET8下使用AOT釋出ASP.NET Core套用的過程。
.NET8正式版本將在11月份釋出,期待它帶來更好的新特性,讓.NET煥發青春。
希望本文對你帶來收獲,你對.NET8的AOT新特性有什麽看法,歡迎留言討論或吐槽。
轉自:翔星
連結:mp.weixin.qq.com/s/6n09fOk0nHv1SM4cZHacEg