Asp.net 我需要一些关于MVC架构和三层架构的说明

Asp.net 我需要一些关于MVC架构和三层架构的说明,asp.net,asp.net-mvc,linq-to-sql,repository-pattern,3-tier,Asp.net,Asp.net Mvc,Linq To Sql,Repository Pattern,3 Tier,我一直在读《Pro ASP NET MVC框架》一书,我对很多事情感到困惑。我一直在尝试做一些研究,但我发现,面对如此多不同的方法和概念,这只会让事情变得更糟。所以我有几个问题: 我知道MVC应该将功能分为三个主要部分:模型->控制器->视图。MVC与三层体系结构不同吗?或者我仍然应该考虑在我的项目中创建一个数据访问层和一个业务逻辑层 存储库究竟是什么?它是什么作为我的数据访问层?存储库在何处/如何适合MVC 这本书谈到了使用LINQtoSQL与数据库交互,但它指出,LINQtoSQL在未来将不

我一直在读《Pro ASP NET MVC框架》一书,我对很多事情感到困惑。我一直在尝试做一些研究,但我发现,面对如此多不同的方法和概念,这只会让事情变得更糟。
所以我有几个问题:

  • 我知道MVC应该将功能分为三个主要部分:模型->控制器->视图。MVC与三层体系结构不同吗?或者我仍然应该考虑在我的项目中创建一个数据访问层和一个业务逻辑层

  • 存储库究竟是什么?它是什么作为我的数据访问层?存储库在何处/如何适合MVC

  • 这本书谈到了使用LINQtoSQL与数据库交互,但它指出,LINQtoSQL在未来将不受支持,并且Microsoft正在删除实体框架中的LINQtoSQL。实体框架在哪里适合MVC?我如何与之交互

  • 提前感谢您的帮助
    马特

  • 是的,您仍然需要自己创建数据访问层和业务逻辑层。有些人可能认为控制器层是业务逻辑,但我个人更喜欢将实际业务逻辑(如定价计算)与屏幕业务逻辑(如“确定”按钮的事件处理程序)分开。然后从控制器类调用这些。控制器类控制屏幕的逻辑,并管理从数据/业务逻辑层到屏幕值的转换

  • ASP.NET MVC框架对“模型”层没有任何限制,这意味着您可以使用任何您想要的东西,包括NHibernate、LINQ to SQL或实体框架。我使用LINQtoSQL是因为它很简单

  • 不确定,从来没有读过那本书。我刚刚从codeplex下载了Scott Hanselman的Nerddinner项目,并将其用作编写ASP.NET MVC网站的指南


  • 是的,我认为MVC是一种不同于我认为您在这里所指的“三层”体系结构(您主要创建3个项目DAL、BL和UI的体系结构)的方法。MVC背后的主要思想是在每个组件(模型、视图和控制器)之间分离关注点。控制器是负责处理用户请求的组件,在大多数情况下,它与“模型”组件联合,以显示所需的视图作为对用户请求的响应。这与传统的三层体系结构的区别在于,DAL和BL现在被分组并命名为模型,是的,您仍然需要创建这些组件
    什么是存储库
    提到存储库的定义为“使用类似集合的接口在域和数据映射层之间进行中介以访问域对象”。存储库是数据访问层的一部分,它们本身不访问数据,它们在域和数据映射实体之间进行中介,当然,它们应该放在模型文件夹/项目中

    Linq to SQL会被弃用吗
    不,同一本书也指出了这一点,Damien Guard(ADO.NET团队的开发人员)在他的一篇博客文章中提到,Linq to SQL将包含在.NET 4.0中

    如何与EF互动?
    就像使用Linq到SQL一样。像Linq到SQL一样,实体框架将是您的映射实体,并且也将驻留在模型项目中。
    希望这有帮助

  • MVC主要是表示层的一种模式,它关注视图和控制器之间的交互。该模型可以被认为是,包括持久性

    在一个简单的应用程序中,该模型可能只是一个LINQ到SQL模型。在大型企业应用程序中,模型可能包含数据访问层、业务层和域层。ASP.NET MVC并不限制您如何实现M

  • 该模式是实现M的持久性部分的一种方法。选择哪种模式取决于应用程序的复杂性和您的首选项

    看一看NerdDinner教程,其中他们使用LINQtoSQL创建了一个简单的存储库

  • Linq到SQL不会死。微软仍将改进核心,并在有意义的地方添加客户请求,但实体框架将是主要关注点。请看这篇文章

    EF的使用方式与LINQ到SQL的使用方式类似,但它也更灵活,因此可以用于其他方式。例如,EF4将或多或少地支持在更领域驱动的设计中持久化您自己的POCO对象


  • 我猜你对这些事情有点困惑,它们很困惑,所以让我们慢慢地看一下

  • N-Tier体系结构和MVC不同,但相互交织。N-Tier通常谈论分离数据访问、业务逻辑和用户界面。然而,有些人可能会争辩说,不可能将BLL与UI完全分离;MVC解决这个问题的方式是,有一个相应的控制器与BLL和视图通信,而不是让视图直接与BLL通信

  • 是的,拥有存储库是拥有DAL的一种方法。有很多方法可以做到这一点,你不应该局限于书中讨论的内容

  • 本书仅使用LINQ to SQL以尽可能快的方式演示ASP.NET MVC,但这不是唯一的方式。暂时不要再考虑LINQ to SQL;无论您是使用NHibernate之类的ORM,还是使用普通的ADO.NET+DAL工厂,都可以使用ASP.NET MVC——您将无法使用的是那些通过UI拖放的ASP.NET
    ObjectDataSources

  • 至于