2017-09-27 47 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

相关问题