【发布时间】:2011-08-30 18:02:00
【问题描述】:
我正在尝试学习 ASP.NET MVC。在阅读了 Web 上的许多文章之后,我整理了一个粗略的示例应用程序,该应用程序使用自定义成员资格提供程序针对现有 SQL 数据库进行身份验证。
我的模型类库项目的结构如下所示。
-
Sigma.Models
-
实现
- FormsAuthenticationService.cs
- MembershipService.cs
-
接口
- IFormsAuthenticationService.cs
- IMembershipRepository.cs
- IMembershipService.cs
-
提供者
- SigmaMembersipProvider.cs
-
存储库
- SqlMembershipRepository.cs
- MembershipModel.cs
-
实现
我的问题如下:
我是否必须创建另一个类库项目(如 Sigma.DataAccess)来分别保存提供程序和存储库?这是做 MVC 解决方案架构的可接受方式吗?这只是我正在研究的概念证明,实际项目可能会变得非常庞大。我想确保我一开始不会做任何愚蠢的事情。
IMembershipRepository 和 IMembershipService 包含大部分相同的功能,只是 IMembershipRepository 使用自定义开发的 MembershipModel 对象返回数据;而 IMembershipService 是标准 ASP.NET MembershipProvider 的接口,并返回 MembershipUser 和 MembershipCollection。我应该让接口 IMembershipRepository 从 IMembershipService 继承吗?
我希望模型项目可重用,这样我就可以将它用于任何其他 UI 应用程序,例如 WebForms 或 WinForms。这可能与项目的结构方式有关吗?
另外,我不想使用 ASP.NET 开箱即用的成员资格提供程序,因为我需要一个可以针对现有数据库工作的解决方案。我假设这意味着我必须自定义 ASP.NET 成员资格提供程序中可用的功能,以针对我的自定义数据库工作。如果我的假设不正确,请纠正我。
提前致谢。
【问题讨论】:
标签: asp.net asp.net-mvc-3 asp.net-membership projects-and-solutions membership-provider