2013-06-29 51 views
1

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

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; } 
    } 

回答

4

为您BLLDAL一个Class LibraryClass Library,然后引用BLLMVC项目,并引用您DALBLL项目。现在您的MVC项目将拨打电话BLL,这反过来将调用DAL实际进行数据存储/检索。在某些情况下,您的BLL可以简单地作为传递,而在其他情况下执行业务规则或其他操作。

你应该考虑你的Model类移动到一个单独的Class Library为好,这样您的所有层(MVCBLLDAL)的都可以“看到”和使用您的Model对象;这当然意味着所有层级都需要参考Model项目。传递对象周围比传递对象每个值的方法容易得多。

+0

感谢您的支持。因为我是三层架构中的新成员,使用MVC更加舒适。所以我知道要创建模型,控制器和View.so请让我知道我放哪些东西? @Karl – SantyEssac

+0

除此之外,我会将模型称为DTO eg。 RegisterDTO。由于模型在MVC中具有不同的含义,因此它们基本上都是驻留在MVC Web应用程序中的视图模型。因此,根据您需要查看的内容,使用这些属性创建视图模型。 – Sunny

+1

右键单击'Solution Explorer'中的'Solution',然后选择'Add' - >'New Project'。你现在应该看到'Add New Project'对话框,它应该有'Visual C#-Web'作为过滤器,将它改为'Visual C#',然后单击'Class Library'。将该库命名为'BLL'并确保它保存到与'MVC'项目相同的相对路径。冲洗并重复“DAL”。 –

0

我认为它很重要,以了解为什么你想要一个n层架构。如果您最重要的要求是简单性,那么将应用程序拆分为n层并不是真的需要。

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

作为一个例子说明为什么你想要一个n层架构,想象一下这个场景。您使用Entity Framework 4.x构建应用程序。在您的数据访问层。然后EF 5.0就会启动并且您想升级。如果您的其他层完全不了解您正在使用的数据访问技术(应该是这样),则在将DAL升级到其他版本或数据库类型时应该很少出现问题。我强调IGNORANT部分。应用程序中的每个图层都应该IGNORANT其他图层中的依赖关系,这将允许您构建分离的可插拔体系结构。

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

看看http://www.dofactory.com/。您将看到一个简单的n层MVC应用程序,它具有多个UI(winforms,MVC等)与自包含的业务层进行对话。这也应该让你更好地理解你的项目在哪里以及为什么需要它们。