1

在ASP.Net Core 1.1 Web API中,我需要存儲一些全局信息,這些信息必須在所有控制器中都可訪問。因此,當客戶端調用API上的某個端點時,必須設置某個變量(一個字典),該變量將從所有其他控制器中讀取。從我所看到的,使用全局靜態變量顯然是一個壞主意?也許有人會告訴我爲什麼,以及什麼是更好的選擇?我聽說過使用配置文件或緩存...Asp.Net Core中的全局變量的替代方案?

+0

我已經編輯過你的標題,讓這個問題少一些主觀並刪除了「任何建議?」在問題主體的末尾,由於stackoverflow不是一個建議網站,而且要求提供建議往往會導致問題被封閉和無法回答。 –

回答

2

許多開發人員不喜歡使用全局變量的一個主要原因是,他們可以很難(或不可能)完全單元測試一個使用全局變量的類他們。開發人員測試他們的代碼傾向於傾向於依賴注入而不是全局變量。

如果所需變量通過類的構造函數參數傳遞給類中,那麼單元睾丸可以傳遞這些變量的已知值,從而使得測試的預期結果可預測。這極大地幫助了單元測試。您可以從official documentation瞭解有關ASP.NET Core依賴注入的更多信息。

全局變量的另一個問題是它們可以從任何地方改變。因此,在調試時,有時會很難找到哪一段代碼改變了它們。通過使用依賴注入而不是全局變量,開發人員知道可以訪問該變量的特定類。

+0

是的,這絕對是DI最好的解決方案,無論是基於AddSingleton的InMemory實現還是基於IDistributedCache的分佈式(由於在現代網絡世界中,您通常擁有多臺服務器,這可能是一個更好的選擇)。 –