1. 程式人生 > >.NET in Browser

.NET in Browser

什麼是Blazor

Blazor 是一個實驗性的. NET web 框架, 使用 C# 和 HTML 在任何瀏覽器中不需要外掛即可執行 WebAssembly 程式集。

什麼是WebAssembly

WebAssembly是一種新的適合於編譯到Web的,可移植的,大小和載入時間高效的格式,是一種新的位元組碼格式。它的縮寫是”.wasm”,.wasm 為檔名字尾,是一種新的底層安全的“二進位制”語法。它被定義為“精簡、載入時間短的格式和執行模型”,並且被設計為Web 多程式語言目標檔案格式。 這意味著瀏覽器端的效能會得到極大提升,它也使得我們能夠實現一個底層構建模組的集合. 介紹1 介紹2

為什麼要用.NET開發Web專案

  • 穩定,成熟,高效 : .net standard, msbuild
  • 快速,可擴充套件性,可靠 : .net core用於後端服務
  • 現代語言 : C#
  • 一流的開發工具: Visual studio

客戶端web開發一直是JavaScript的唯一領域。WebAssembly準備通過向語言、框架和工具的完整生態系統開放web來改變這一點。Blazor是一個通過WebAssembly網路平臺將.net引入網路的實驗性專案。使用.net進行全棧Web開發,並且不需要外掛或程式碼轉換,可適用於所有現代瀏覽器,包括移動瀏覽器。可以理解為,這是一個C#語言的Vue, Angular, React。

Browser + Razor = Blazor

Blazor有哪些功能

  • 元件化開發
  • 支援路由
  • 佈局
  • 依賴注入
  • javascript互操作
  • 自動構建
  • 除錯
  • 釋出
  • 應用程式大小優化
  • 在不支援WebAssembly的瀏覽器中回溯到asm.js
  • 豐富的智慧感知和工具

1 客戶端模式 將cs和cshtml編譯打包成靜態檔案,可直接部署到web伺服器,釋出檔案如下:

2 服務端工作模式 服務端工作模式是要依賴dotnet,dotnet作為後端服務,通過SignalR與瀏覽器通訊

Blazor將要實現的功能

  • 優化執行時效能
  • AOT編譯到WebAssembly
  • 優化下載大小
  • 改進對.net standard的支援
  • 實時重灌(SignalR斷開後需要重新整理頁面)
  • 延遲載入應用程式區域
  • 服務端渲染
  • 安全
  • 表單和驗證
  • 測試框架
  • 跨平臺工具(Blazor+Electron)
  • 伺服器端狀態和連線管理

Blazor 目前版本是0.6,目前更新比較頻繁,但是已經可以用來開發後端應用了。這裡有一套Blazor框架,可以實現Blazor服務端工作方式和客戶端工作方式的切換,不需要修改任何程式碼, 前端用Razor實現SEO,後端用Blazor,當Blazor是以Server-Side工作時,直接後端依賴注入,當Blazor以Client-Side工作時,Host將Service 轉換成 Controller 提供API, 前端通過HttpClient呼叫(防止業務dll洩漏,這個也是Blazor將要解決的安全問題)