在MVC3中实现3层架构

时间:2013-06-29 12:36:01

标签: asp.net asp.net-mvc

我想创建一个简单的应用程序,用户可以在其中注册自己的凭证,如名字,姓氏等。在点击注册按钮后,它会将他带到用户身份验证的邮件中链接和点击该链接它将重定向到登录页面。我想实现这一点,但在MVC3中使用3层架构。我通过选择MVC模板并将其命名为演示文稿并获得BLL和DAL来创建项目我该怎么办? 我创建了我的模型:

public class Register
    {
        public int Id { get; set; }
        public string  First_Name { get; set; }
        public string Last_Name { get; set; }
        public string Email_Address { get; set; }
        public bool Accept_Term { get; set; }
        public bool Male { get; set; }
        public bool Female { get; set;}
        public string Current_Location { get; set; }
    }

2 个答案:

答案 0 :(得分:4)

Class Library创建BLL,为Class Library创建DAL,然后在BLL项目中引用MVC并参考您DAL项目中的BLL。现在,您的MVC项目将调用BLL,然后调用DAL来实际进行数据存储/检索。在某些情况下,您的BLL可能只是一个直通,而在其他情况下执行业务规则或其他操作。

您应该考虑将Model类移到单独的Class Library中,这样就可以将您的所有等级MVCBLLDAL移到一起可以“看到”并使用你的Model个对象;这当然意味着所有层都需要引用Model项目。传递对象要比为对象的每个值提供带参数的方法容易得多。

答案 1 :(得分:0)

我认为理解为什么要使用n层架构非常重要。如果您最重要的要求是简单性,那么实际上并不需要将您的应用程序拆分为n层。

但是,如果您需要灵活性,这种选择将导致不利因素。另一方面,多层提供灵活性,成本是构建它们所需的工作量。

作为您希望拥有n层架构的原因的一个例子,想象一下这种情况。您使用Entity Framework 4.x构建应用程序。在您的数据访问层中。然后启动EF 5.0并且您想要升级。如果您的其他层完全不了解您正在使用的数据访问技术(应该如此),那么在将DAL升级到不同版本或数据库类型时应该没有什么问题。我强调IGNORANT部分。应用程序中的每个层都应该是其他层中的依赖关系的IGNORANT,这将允许您构建一个解耦的可插入架构。

这是一个很大的话题,如果你有兴趣了解更多,我建议你看一下领域驱动设计技术。为了它,不要只有n层。数据传输对象(DTO)是在这些自包含层之间传输数据的对象。这是必要的,因为" Person" DAL中的对象与" Person"不是同一个对象。业务层中的对象。 DTO在两个物体之间的地图。

看看http://www.dofactory.com/。您将看到一个简单的n层MVC应用程序,其中包含多个UI(winforms,MVC等),与自包含的业务层进行通信。这也可以让您更好地了解项目的放置位置以及需要它们的原因。