1. 程式人生 > >ASP.NET Core Blazor 初探之 Blazor Server

ASP.NET Core Blazor 初探之 Blazor Server

上週初步對Blazor WebAssembly進行了初步的探索([ASP.NET Core Blazor 初探之 Blazor WebAssembly](https://www.cnblogs.com/kklldog/p/try-blazorwebassembly.html))。這次來看看Blazor Server該怎麼玩。 ## Blazor Server Blazor 技術又分兩種: + Blazor WebAssembly + Blazor Server Blazor WebAssembly上次已經介紹過了,這次主要來看看Blazor Server。Blazor Server 有點像WebAssembly的服務端渲染模式。頁面在伺服器端渲染完成之後,通過SignalR(websocket)技術傳輸到前端,再替換dom元素。其實不光是頁面的渲染,大部分計算也是服務端完成的。Blazor Server模式可以讓一些不支援WebAssembly的瀏覽器可以執行Blazor專案,可是問題也是顯而易見的,基於SignalR的雙向實時通訊給網路提出了很高的要求,一旦使用者量巨大,對服務端的水平擴容也帶來很大的挑戰,Blazor Server的使用者狀態都維護在服務端,這對服務端記憶體也造成很大的壓力。 我們還是以完成一個簡單的CRUD專案為目標來探究一下Blazor Server究竟是什麼。因為前面Blazor Webassembly已經講過了,相同的東西,比如資料繫結,屬性繫結,事件繫結等內容就不多說了,請參見[ASP.NET Core Blazor 初探之 Blazor WebAssembly](https://www.cnblogs.com/kklldog/p/try-blazorwebassembly.html)。 ## 新建Blazor Server專案 開啟vs找到Blazor Server模板,看清楚了不要選成Blazor Webassembly模板。 [![Y0l7r9.md.png](https://s1.ax1x.com/2020/05/14/Y0l7r9.md.png)](https://imgchr.com/i/Y0l7r9) 看看生成的專案結構: [![Y01EPf.png](https://s1.ax1x.com/2020/05/14/Y01EPf.png)](https://imgchr.com/i/Y01EPf) 可以看到Blazor Server的專案結構跟ASP.Net Core razor pages 專案是一模一樣的。看看Startup是怎麼配置的: ``` public class Startup { public Startup(IConfiguration configuration) { Configuration = configuration; } public IConfiguration Configuration { get; } // This method gets called by the runtime. Use this method to add services to the container. // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940 public void ConfigureServices(IServiceCollection services) { services.AddRazorPages(); services.AddServerSideBlazor(); services.AddSingleton