ASP.NET Core Blazor 初探之 Blazor Server
阿新 • • 發佈:2020-05-14
上週初步對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