2017-09-27 51 views
0

我在我的asp.net核心2.0應用程序中使用基於聲明的授權,而不是在整個應用程序中對聲明名稱進行硬編碼,我正在考慮在注入的配置對象(appsettings.json)中設置它們。使用_config.GetSection(「section」)[「key」]會對性能產生影響嗎?

但是在我潛入那條路之前,我很好奇是否有需要注意的性能問題?

事情是這樣的:

var subscriptionClaim = user.Claims.FirstOrDefault(c => c.ClaimType == _config.GetSection("ClaimNames")["BasicMembership"]); 

對戰是這樣的:

var subscriptionClaim = user.Claims.FirstOrDefault(c => c.ClaimType == "basicMembership"); 

我有,在這一點上,4-5聲稱,我添加/從各個點的用戶刪除在我的應用程序。將名字滾入appsettings的原因是爲了確保我不會錯誤地聲明索賠名稱,並且如果出於任何原因將來我可以更輕鬆地更改它們。

但是,如果_config.GetSection("section")["key"]);有明顯的性能影響,我寧可不要。我傾向於沒有明顯的打擊,但我想確定。

在此先感謝!

+0

https://ericlippert.com/2012/12/17/performance-rant/ – DavidG

+0

找出來的最好方法就是自己檢查一下。沒有什麼比找到並證明給自己 – BugFinder

+0

最好的辦法是有一個圍繞配置的包裝類。使其成爲靜態的,以便它只從文件中檢索配置數據一次並保留它。並使用該包裝類,無論你想要的配置值。 –

回答

1

是你的_configIConfiguration的對象?

通常情況下,您會在應用程序啓動時構建您的配置對象,並將此信息加載到內存中,所以是的,性能差異至多可以忽略不計。

但正如其他人所說,如果性能是一個問題,沒有比自己測試更好的方法。

+0

謝謝。它是在啓動時建立的IConfiguration對象 - 現在自動成爲一個asp.net核心2.0應用程序。 – Chaddeus

相關問題