日前ASP.NET團隊宣布,能把.NET程式碼轉為WebAssembly或Asm.js在瀏覽器環境執行的專案Blazor,將從Steve Sanderson的個人專案正式轉為ASP.NET官方支援的專案。Steve Sanderson在自己的部落格上表示,他們開始了一些實驗,來觀察Blazor是否能夠正式成為產品。

Blazor是一個瀏覽器應用程式的.NET開發框架,也就是說.NET開發者可以使用C#、Razor以及HTML這些熟悉的開發工具,開發瀏覽器上的單頁應用程式(Single-Page Applications,SPA),Blazor目的在於簡化這個流程,把.NET程式碼轉成WebAssembly或是Asm.js在瀏覽器上執行。

Steve Sanderson表示,之所以會有開發Blazor的想法,是受到許多JavaScript的開發框架啟發,像是Angular、React或是Vue等,他也想讓ASP.NET的開發者,擁有JavaScript開發框架的方便。

要在網頁上執行.NET的程式,必須要透過Mono這個開源的跨平臺.NET框架,有兩種運作方式,分別為解釋模式(Interpreted Mode)以及AOT編譯模式(Ahead-of-time,AOT Compiled Mode)。在解釋模式Mono runtime會將自己編譯為WebAssembly程式,不過.NET組件檔案卻不會,因此瀏覽器可以執行Mono runtime,而Mono runtime能夠讀取並執行一般由.NET編譯工具所建立的.NET組件。

AOT編譯模式則是在.NET程式建立(Build)階段,就將所有組件轉換成WebAssembly程式,在Runtime階段,.NET程式就能像一般WebAssembly程式被瀏覽器執行,不過這種模式仍然需要載入部分Mono runtime,處理低階的工作,就是垃圾蒐集(Garbage Collection)等。

Steve Sanderson表示,他們並不知道哪一種模式比較好,但是可以確定解釋模式的開發循環快於AOT編譯模式,因為當開發者改變程式碼,可以使用一般.NET編譯建立程式,並馬上更換瀏覽器執行的應用程式,而AOT編譯模式需要的時間則是數倍。因此Steve Sanderson說,解釋模式可能適用於開發階段,而AOT編譯模式則可能適用於產品階段。

即使現階段Blazor已經可以讓.NET程式碼以2種方式在瀏覽器上執行了,但Steve Sanderson表示,要讓Blazor成為產品階段遠遠不夠,還需要建立更完整的工具來支援這個生態系。現在Blazor在ASP.NET團隊中仍是非常初期的階段,他們也還無法確定是否會成為微軟的產品,Steve Sanderson說,請企業還不要把產品押注在Blazor,再給他們幾個月確認這件事。


Advertisement

更多 iThome相關內容