發表文章

目前顯示的是 3月, 2019的文章

ASP.NET Blazor 怎麼處裡狀態?

圖片
關於狀態 其實原則上來說,對於現代的應用程式開發、如果相容於 Cloud 環境/Microservices 等環境的話,您根本不應該將狀態保存在應用程式自身,但這不代表應用程式不處理狀態!注意囉,不管哪一種應用程式,都有(自身的狀態/User 使用者的狀態)需要被保存,最典型的來說(如:login Security)我怎麼知道你 User 目前是否有登入到系統?這是個典型的例子,但即便如此,不代表應用程式要將狀態資訊保存在自身的 Context 環境中,因為應用程式可能所處在一個隨時可橫向擴展 Scale-Out 的環境裡,應用程式自身的 Context 隨時會 Scale-Out/Restart,甚至應用程式自身也不會知道自己會被執行在哪一台(主機/環境)裡。 使用 Redis 使用 Redis 來處理狀態是一個最佳的選擇,它的高效能讓它不僅僅是適合用在分散式運算環境、Cloud/Microservices 等環境中,當然也是 ASP.NET Core 或 Blazor 類型應用程式處裡狀態的首選。 在 ASP.NET MVC 5/ASP.NET Blazor/.NET Core 環境下,同樣可使用 StackExchange.Redis 套件可以使用,程式的撰寫方式也出乎沒有什麼不同,本篇就不再詳述。 一般來說,可以使用如方式; 可使用如下程式碼進行(操作/存取)Redis: 使用 ASP.NET Core 內建的 MemoryCache 在 Blazor 的環境下其實就等同於 ASP.NET Core 的環境,所以同樣具備 MemoryCache,使用方式就是在 Startup 的 ConfigureServices() 裡加入該 Middleware 即可!如下: 不過,即便你要在 Blazor 的應用程式下使用 Redis 當作 SessionState 的保存的儲存體,你也是要開啟 Session 的功能才可以,Blazor 是基於 ASP.NET Core 的應用程式,所以方式與 ASP.NET Core 完全相同,只是 Session 的起用必須同時啟用分散式快取,如下: 使用 MemoryCache 的方式如下,這邊以一個 Controller 為例: 我們可以拿 Blazor 預設樣板中的 Cou

ASP.NET Blazor 關鍵報告

圖片
前言 ASP.NET Blazor (以下簡稱為 Blazor) 是微軟使用 WebAssembly 技術而發展出的全新 Web 網頁開發平台,雖然基於 .NET Core Runtime 與 ASP.NET Core 的框架,但股子裡與 ASP.NET Core 截然不同,因為他雖然基於 .NET Core 平台 與 C# 語言,但他實際執行時,將 .NET 編譯的最後結果 + mscorlib 運行在 mono Runtime (mono.wasm)上,而它也是一個 SPA 框架,在 ASP.NET Core 2.1 推出時,以新增功能方式推出,但它的完整性未來可望擴充為獨立、完整的 Web 開發框架,由於透過 Web Assembly 技術而發展而來,也就是說,幾乎只要 browser 支援標準的 Web Assembly,您所開發的應用程式幾乎可以無縫執行在任一個平台之中。 ASP.NET Blazor 的版本 撰寫這一篇時,版本已經演進到 0.9.0,不過我剛剛在安裝 Visual Studio 2019 的 Project Templates 時,居然出現了 404 Not Found 的狀況,猜測應該正好在更新的關係,看來我運氣還真好,不惑還好,稍後個半小時後,現在又可以安裝了。 下載單一 VSIX,安裝檔可從此連結下載: https://marketplace.visualstudio.com/items?itemName=aspnet.blazor ASP.NET Blazor 的三種樣板:   有別於在 0.6.0 所提供的『Standalone』、『ASP.NET Core Host』、『Server-Side in ASP.NET Core』,的三種樣板,若沒記錯,從 0.8.0 新增的 Razor Components 並修改為如下: (1). Blazor (hosted in ASP.NET server) 將原本的『ASP.NET Core Host』、『Server-Side in ASP.NET Core』合而為一,提供前後端分離+具備 Controller + Host 主機的 Blazor SPA 應用程式,Client 與 Server 透過 SignalR 進行溝通處理。 (2). Blazor Library 在 0.8