參考: https://executecommands.com/difference-in-blazor-server-and-webassembly/
Blazor WASM 整體運行架構如下:
1. 圖中 WebAssembly 引擎., 現代瀏覽器都依照 WebAssembly 標准實現了 WebAssembly 引擎, WebAssembly是基於堆棧的VM
2. 圖中的 .NET部分, 更准確地說, 應該是 Mono IL, 它是一個WebAssembly應用, 可以被WebAssembly 引擎執行, 功能是解釋執行.Net 程序. 我們開發的Blazor WebAssembly應用, 有兩種執行模式:
(1) JIT 模式(Just In Time, 默認模式), 我們的應用會被編譯成 dll 文件, 這個文件會被Mono IL解釋器加載執行.
(2) AOT模式( Ahead Of Time), 我們的應用會和Mono IL 一起編譯成 WebAssembly 應用, 它可以被瀏覽器的 Web Assembly引擎直接執行, 優點是執行效率高, 適合於CPU密集型計算, 缺點是文件大小比JIT模式要大一倍.
開啟 AOT 模式, 需要在 Project 文件中, 增加 RunAOTCompiliation指令.
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<RunAOTCompiliation>true</RunAOTCompiliation>
</PropertyGroup>
認識 blazor wasm 項目的一些文件:
1. app.css 文件, 等價於 blazor server項目的 site.css 文件, 可以存放項目自身定義的樣式.
2. _framework/blazor.webassembly.js, 該文件在 index.html 中被用到, 負責下載所有的 .NET dll文件和靜態資源文件.