从控制器或服务层调用asp.net Membership类?

时间:2009-08-24 20:47:09

标签: asp.net asp.net-mvc asp.net-membership

我应该从控制器访问asp.net成员资格类并将结果传递给服务层,还是直接从服务层访问它?

我被撕裂了,因为一方面这似乎是应该在服务层处理的业务逻辑,但我不想将服务层绑定到Web命名空间,因为这可能会成为一个Windows应用程序

3 个答案:

答案 0 :(得分:6)

答案是,使用IoC创建服务层使用的成员资格接口。网站的实现可以使用Web命名空间。 Windows应用程序可以有不同的实现。由于您可以注入该依赖项,因此您的服务层不必更改: - )

答案 1 :(得分:3)

ASP.NET成员资格是特定于Web的,因此应该在Controller中访问。 MHO是服务层不应该硬连线到网络。因此,要添加/删除用户,请通过Controller执行此操作。

OTOH,在服务层中,您可以阅读Thread.CurrentPrincipal.Identity,这是非特定于Web的,但恰好与ASP.NET成员资格完全兼容。因此,如果您只需要获得当前用户,您就可以在不分离关注点的情况下实现这一目标。

答案 2 :(得分:0)

使用System.Web真的是个问题吗?与将它绑定到System.Configuration或System.IO没有什么不同。任何应用程序都可以使用它,无论它是否“离线”。

我经常将我的网络应用程序绑定到更经典的程序集,但是作为“winforms”程序集,以便访问有用的集合对象等。