經過一年多的開發,微軟正式釋出.NET最新長期支援版本.NET 6,這個版本的更新重點,除了C#和F#都有許多語言功能改進之外,.NET 6終於集大成,成為跨瀏覽器、雲端、桌面、物聯網和行動應用程式的統一平臺,效能也獲得大幅提升,並且更完整支援Arm64。

微軟更新.NET 6的底層平臺,使其能夠滿足所有類型的應用程式需求,讓開發者可以在所有應用程式中,重複使用程式碼,因此新功能和更新,可以同時使用在所有應用程式,雲端和行動裝置中執行的程式碼,都能具有相同的行為,也就是說,所有平臺的應用程式,都可以使用相同的.NET函式庫,並且簡單地共享程式碼。

.NET 6也賦予開發人員更多的功能,這個版本新增支援機器學習和WebAssembly,開發人員可以開發具有機器學習功能的應用程式,用於像是搜尋串流資料中的異常情況等使用案例。而WebAssembly的部分,則讓開發者可以在瀏覽器中運作.NET應用程式,就像是HTML和JavaScript一樣,或者將.NET和HTML、JavaScript程式碼混合使用。

.NET 6還有一個主打的新功能,便是.NET多平臺應用程式UI(Multi-platform App UI,MAUI),開發者現在可以在單一專案中編寫程式碼,並直接提供跨桌面和行動裝置的客戶端應用程式,實現寫一次到處執行的理想,不過該項功能會比.NET 6還要晚一點發布。

微軟也花了許多心力在改善.NET 6效能中,重大的改進包括PGO、檔案IO和介面轉換(Interface Casting)。微軟提到,動態PGO(Dynamic Profile-guided Optimization)能夠明顯提高穩態(Steady State)效能,以TechEmpower JSON MVC套件來說,每秒鐘的請求數能夠從510K提高到640K,增加26%。

動態PGO建立在分層編譯上,.NET 6會先以非常快速的方式,編譯一次應用程式,來提高啟動效能,這稱為第0層編譯,接著再運用大量最佳化重新編譯應用程式,經過最佳化的編譯稱為第1層編譯,微軟解釋,這項模型已經被證實具有提高應用程式效能的方法,該模型透過在第0層的時候,對程式碼執行進行各種觀察,並將從第0層收集到的資訊,用來最佳化第1層程式碼。

動態PGO技術會帶來明顯的效能差異,但是同時也增加了不少程式碼容量,不過增加的是JIT所產生的組合程式碼,而非占用較大的記憶體。

微軟幾乎全部重寫.NET 6中處理檔案的FileStream,重點是提高非同步檔案IO的效能,在Windows上實現非阻塞API,效率能夠快上不少,而且微軟也改進了所有平臺記憶體的使用,當Windows和Unix實作方法不同時,也盡可能讓極端情況行為一致。微軟提到,所有作業系統都能獲得重寫FileStream所帶來的效能提升,除了macOS和Linux開發者能夠看到明顯不同之外,原本效能遠遠落後的Windows,更是獲得大幅改善。

另外,.NET 6在介面的檢查和轉換上也更快速了,效能大概提高16%到38%,這種改進對於C#的模式配對會特別有感。

微軟和Arm、Apple的工程師合作,在.NET 6還擴大了對Arm64的支援,這版的主要重點是在macOS和Windows Arm64作業系統上,支援最新的Apple Silicon晶片以及x64模擬使用情境,開發者可以在macOS 11+和Windows 11+的Arm64作業系統上,安裝Arm64和x64版本的.NET,微軟建議開發者,還是使用與原生架構相符的SDK,確保最佳的效能。

熱門新聞

Advertisement