Earn More by Sharing What You Love
Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!

Tim Corey
10m 39s
配置管理是建構可擴展且可維護的C#應用程式的一個重要方面。 處理配置設置的最有效方法之一是使用選項模式。 在他的视频中,The Options Pattern in C# in 10 Minutes or Less,Tim Corey 提供了一個簡明而富有見解的解釋,說明如何高效地實現這種模式。 在這篇文章中,我們將通過 Tim 的影片中的解釋和演示來探討選項模式。
Tim 首先介紹 選項模式是一種強大且簡單的方法,用於從配置文件中檢索資訊並將其注入依賴注入 (DI)。 他突顯了這種模式的幾個優點,例如:
Tim 強調,雖然他通常提供深入的技術訓練,但這個影片旨在作為實現選項模式的快速入門指南。
Tim 從打開Visual Studio與一個 Blazor Web 應用(僅伺服器端渲染)開始。 他已經做了一些修改,以加快演示速度。 關鍵設置包括:
appsettings.json 文件。CloudInfoOptions的 普通 CLR 物件 (POCO) 模型,其映射到這些配置值。appsettings.json 文件包含以下區段:
{
"CloudInfo": {
"Storage": "Azure Storage",
"Website": "Azure Static Web Apps",
"API": "Azure Web App"
}
}
Tim 澄清說,雖然他正在使用appsettings.json,這些配置值也可以來自:
appsettings.Development.jsonsecrets.json現在,Tim 解釋如何將配置值綁定到 CloudInfoOptions 類並將其注入DI。
在Program.cs中,Tim 在builder.Services內新增了以下一行:
builder.Services.Configure<CloudInfoOptions>(builder.Configuration.GetSection("CloudInfo"));builder.Services.Configure(Of CloudInfoOptions)(builder.Configuration.GetSection("CloudInfo"))這將 appsettings.json 的 CloudInfo 區段綁定到 CloudInfoOptions 類。 Tim 註明這個步驟確保值在依賴注入中可用。
Tim 移至首頁元件(Index.razor),並修改它以動態顯示配置值。
他在元件中注入**IOptions 介面**:
@inject IOptions<CloudInfoOptions> CloudInfoOptions
為了檢索實際的值,他將它們賦給OnInitialized:
protected override void OnInitialized()
{
CloudInfo = CloudInfoOptions.Value;
}Protected Overrides Sub OnInitialized()
CloudInfo = CloudInfoOptions.Value
End SubTim 解釋說 IOptions<T> 提供了一個配置值的 單一實例,這意味著在整個應用程式的生命週期中保持不變。 當應用程式運行時,配置值正確地出現在頁面上。
然後,Tim 介紹了使用選項模式的三種不同方法:
預設情況下,IOptions<T> 提供一個單一實例。 Tim 說明如果應用程式運行時更新配置文件,除非應用程式重新啟動,這些更改不會反映。
IOptionsSnapshot<T>為了允許每次請求更新,Tim 修改了注入以迎合:
@inject IOptionsSnapshot<CloudInfoOptions> CloudInfoOptions
這確保了每個新的 HTTP 請求都能獲得新的配置值。 Tim 增強了這一點,修改appsettings.json、刷新頁面並展示更新的值立即出現。
他解釋說 IOptionsSnapshot<T> 適用於需要在不重新啟動應用程式的情況下反映更改但不需要即時監控的情況。
IOptionsMonitor<T>最後,Tim 介紹IOptionsMonitor<T>,它啟用了即時變更檢測。 他更新了注入以:
@inject IOptionsMonitor<CloudInfoOptions> CloudInfoOptions
與根據每個請求更新的IOptionsMonitor<T>可以在配置值更改時觸發事件。 當您需要動態響應配置更改時,這特別有用。
Tim 指出 IOptionsMonitor<T> 設有 單一支撐 ,但當底層配置文件更改時可以動態刷新值。
Tim 透過影片 總結了這三種方法之間的關鍵區別:
| 介面 | 生命週期 | 更改時更新 |
|---|---|---|
IOptions<T> | 單一 | 否 |
IOptionsSnapshot<T> | 作用域 | 每次請求 |
IOptionsMonitor<T> | 單一 | 是 |
他強調,雖然選項模式簡化了配置管理,但了解這些不同的變化有助於根據專案需求選擇合適的方法。
按照 Tim 的方法,開發者可以高效地管理應用程式設置、確保平滑的依賴注入及有效地處理運行時配置更改。 為了更好地理解,請觀看完整的影片並存取他的頻道以取得更多有關C#的洞見影片。
Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!
Join our newsletter, you’ll get exclusive access on article updates. We value your privacy