我正在尝试学习ASP.NET MVC。在阅读了网上的许多文章之后,我整理了一个粗略的示例应用程序,该应用程序使用自定义成员资格提供程序对现有SQL数据库进行身份验
我的模型类库项目的结构如下所示。
我的问题如下:
我是否应该创建另一个像Sigma.DataAccess这样的类库项目来单独保存提供程序和存储库?这是一种可接受的方式来进行MVC解决方案架构吗?这只是我正在研究的概念证明,实际项目可能变得非常庞大。我想确保我不会做任何愚蠢的事情。
IMembershipRepository和IMembershipService主要包含相同的功能,但IMembershipRepository使用自定义开发的MembershipModel对象返回数据;而IMembershipService是标准ASP.NET MembershipProvider的接口,并返回MembershipUser和MembershipCollection。我应该从IMembershipService继承IMembershipRepository接口吗?
我想让模型项目可重用,所以我可以将它用于任何其他UI应用程序,如WebForms或WinForms。这可能与项目的结构方式有关吗?
此外,我不想使用ASP.NET开箱即用的成员资格提供程序,因为我需要一个可以对现有数据库起作用的解决方案。我认为这意味着我必须自定义ASP.NET成员资格提供程序中可用的功能以对我的自定义数据库起作用。如果我的假设不正确,请纠正我。
提前致谢。
答案 0 :(得分:3)
我是否应该创建另一个像Sigma.DataAccess这样的类库项目来单独保存提供程序和存储库?这是一种可接受的方式来进行MVC解决方案架构吗?这只是我正在研究的概念证明,实际项目可能变得非常庞大。我想确保我不会做任何愚蠢的事情。
是 - 将它们分开,以防您的实施发生变化,影响较小。
IMembershipRepository和IMembershipService主要包含相同的功能,但IMembershipRepository使用自定义开发的MembershipModel对象返回数据;而IMembershipService是标准ASP.NET MembershipProvider的接口,并返回MembershipUser和MembershipCollection。我应该从IMembershipService继承IMembershipRepository接口吗?
实际上在提供的示例中 - 实际上似乎没有区别 - 两种方法都是bool ValidateUser(),这绝对是一个重复,但因为它们各自都有一个可能“潜在”改变的最终用途,它们被抽象为两个独立的接口,所以我不会从另一个继承。
我希望模型项目可重用,这样我就可以将它用于任何其他UI应用程序,如WebForms或WinForms。这可能与项目的结构方式有关吗?
是的 - 但我会突破并仅保留 该项目中的模型。任何不是模型的东西都不应该在那个项目中。
此外,我不想使用ASP.NET开箱即用的成员资格提供程序,因为我需要一个可以对现有数据库起作用的解决方案。我认为这意味着我必须自定义ASP.NET成员资格提供程序中可用的功能以对我的自定义数据库起作用。如果我的假设不正确,请纠正我。
这是正确的 - 您需要一个自定义SQL成员资格提供程序