在多层设计中设计有关SPSecurity.RunWithElevatedPriviledges的问题

时间:2009-11-19 13:54:22

标签: c# sharepoint domain-driven-design

我有一个问题:性能和设计。问题的症结在于:我是否将RunWithElevatedPriviledges包装在一系列需要使用它们的方法中(但是调用是在错误的层中),我是否每次都在适当的时候调用它。

我正在重构最初有2层(前端和数据库)的代码。

我现在把它分成4层

  • 前端(Sharepoint)
  • 服务层
  • 数据访问层
  • 数据库

现在,由于规定的配置,我需要围绕sql查询抛出RunWithElevatedPriviledges,以便应用程序池可以对数据库进行身份验证(请不要发表评论告诉我这是一个坏主意,我意识到这是一个可怕的想法,但这不是我的电话)。

对于每次数据通话,我都必须处于提升权限。在我看来,这应该发生在服务层。 FE应该不了解这个要求,数据访问层也不应该。但是,多次调用服务层以填充一系列下拉列表

即。

userlistbox.datasource = MyService.GetUsers(); //Returns an iEnumerable object
citylistbox.datasource = MyService.GetCities(currentRegion); //Returns an iEnumerable object

非重构版本使用提升的权限包装所有这些调用。我的感觉是,将它推入服务层会稍微低一些,但这是一个更好的设计。

思考?请不要抨击我无能为力的约束。

1 个答案:

答案 0 :(得分:1)

服务层比前端更好。也许你可以通过SPSecurity.CodeToRunElevated代表?

http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spsecurity.codetorunelevated.aspx