微軟發布了.NET Core 3.0第三預覽版,其中包含了非常多的更新,也包括ASP.NET Core的部分,除了對Razor Components進行了諸多改進,還為背景程序用途增加了Worker Service模板,而Angular模板也更新到了第七版本。

現在微軟將Razor Components專案模板,與應用程式專案合併成為單一專案,而非一個解決方案中的兩個專案,開發者撰寫的Razor Components,將直接在ASP.NET Core應用程式中管理,因此同一個ASP.NET Core專案,可以包含Razor Components、Pages以及Views,另外,Razor Components與其他ASP.NET Core網頁應用程式模板一樣,預設皆啟用HTTPS。

這個版本還加入了新的副檔名.razor,微軟提到,Razor Components使用Razor語法撰寫,但是編譯的方式卻跟Razor Pages和Views不同,使用新的.razor副檔名,可以更清楚地區分出要編譯為Razor Components的Razor檔案,現在所有元件檔案都使用.razor副檔名,而Razor Pages和Views仍繼續使用.cshtml副檔名。

不過,開發者也可以使用 _RazorComponentInclude MSBuild屬性標記Razor Components檔案,則這些檔案仍然可以繼續使用.cshtml副檔名編輯。另外,在.NET Core 3.0中的ASP.NET Core共享框架,移除了對Runtime編譯的支援,但是開發者也可以透過向應用程式增加套件來啟用。

Razor Components現已經整合進ASP.NET Core新的Endpoint Routing系統,這個應用程式配置將會為互動式Razor Components接受傳入的連接,並指定在選擇器應用程式相配的DOM元素中,渲染根元件應用程式。開發者可以在應用程式中進行設定,在路由設定使用MapComponentHub<TComponent>就可以了。

現在Razor Components專案模板預設執行伺服器端預渲染(Prerendering),也就是說,當使用者瀏覽至開發者的網頁應用程式時,伺服器將執行Razor Components初始渲染,並將結果以靜態HTML傳遞給使用者的瀏覽器,瀏覽器會接著使用互動網頁函式庫SignalR,重新連線回伺服器,並將Razor Components切換成完成互動模式。

微軟提到,這個作法可以讓使用者感覺效能提升,因為不需要等待WebSocket連接或是任何客戶端的腳本,使用者介面可以盡可能快速地出現,能為使用2G或3G網路的手機,帶來了極大使用差異,雖然對於使用寬頻網路等高速網路使用者的影響較小。另外,這項作法也能讓開發者的應用程式簡單地被搜尋引擎爬蟲程式抓取。

在新版ASP.NET Core中,微軟加入了Worker Service模板,這個模板目的是為長時間執行的背景程序設計,可以用於開發Windows服務或是Linux守護行程,像是日誌紀錄、DI以及配置等,沒有夾帶任何網頁相依檔案的應用。

目前Angular模板已經更新到了Angular 7,微軟預計在發布.NET Core 3.0正式版之前,會再次更新到Angular 8,而在這個版本,Angular和React模板開始支援身份驗證。


Advertisement

更多 iThome相關內容