我有一个问题:性能和设计。问题的症结在于:我是否将RunWithElevatedPriviledges包装在一系列需要使用它们的方法中(但是调用是在错误的层中),我是否每次都在适当的时候调用它。
我正在重构最初有2层(前端和数据库)的代码。
我现在把它分成4层
现在,由于规定的配置,我需要围绕sql查询抛出RunWithElevatedPriviledges,以便应用程序池可以对数据库进行身份验证(请不要发表评论告诉我这是一个坏主意,我意识到这是一个可怕的想法,但这不是我的电话)。
对于每次数据通话,我都必须处于提升权限。在我看来,这应该发生在服务层。 FE应该不了解这个要求,数据访问层也不应该。但是,多次调用服务层以填充一系列下拉列表
即。
userlistbox.datasource = MyService.GetUsers(); //Returns an iEnumerable object
citylistbox.datasource = MyService.GetCities(currentRegion); //Returns an iEnumerable object
等
非重构版本使用提升的权限包装所有这些调用。我的感觉是,将它推入服务层会稍微低一些,但这是一个更好的设计。
思考?请不要抨击我无能为力的约束。
答案 0 :(得分:1)
服务层比前端更好。也许你可以通过SPSecurity.CodeToRunElevated代表?
http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spsecurity.codetorunelevated.aspx