所以我有几个问题:
我知道MVC应该将功能拆分为三个主要部分:模型->控制器->视图。MVC是否与三层架构不同?或者我还应该考虑在项目中创建数据访问层和业务逻辑层?
什么是存储库?它是我的数据访问层吗?存储库在MVC中如何运作?
该书谈到使用LINQ to SQL与数据库交互,但它指出LINQ to SQL将不再受到支持,微软正在放弃它并转向Entity Framework。Entity Framework在MVC中扮演什么角色,我该如何与之交互?
先感谢你的帮助!
Matt
我知道MVC应该将功能拆分为三个主要部分:模型->控制器->视图。MVC是否与三层架构不同?或者我还应该考虑在项目中创建数据访问层和业务逻辑层?
什么是存储库?它是我的数据访问层吗?存储库在MVC中如何运作?
该书谈到使用LINQ to SQL与数据库交互,但它指出LINQ to SQL将不再受到支持,微软正在放弃它并转向Entity Framework。Entity Framework在MVC中扮演什么角色,我该如何与之交互?
先感谢你的帮助!
Matt
MVC主要是一种用于展示层的模式,它关注视图和控制器之间的交互。模型可以被认为是应用程序维护状态的组件,包括持久化。
在一个简单的应用程序中,模型可能只是一个LINQ-To-SQL模型。在一个大型企业应用程序中,模型可能包含数据访问层、业务层和域层。ASP.NET MVC不限制M应该如何实现。
仓储模式是实现M中持久化部分的一种方式。ActiveRecord是另一种方式。选择哪种模式取决于应用程序的复杂性和您的偏好。
看看NerdDinner教程的第3步,他们使用Linq to SQL创建了一个简单的仓库。
Linq to SQL不会死亡。微软仍将改进核心并添加客户请求,如果有意义的话,但Entity Framework将成为主要关注点。查看此帖子了解.NET 4.0中的LINQ to SQL更改。
EF可以像LINQ to SQL一样使用,但它也更加灵活,因此可以以其他方式使用。例如,EF4将支持以更多领域驱动设计的方式持久化您自己的POCO对象。
Linq to SQL会过时吗?
不会过时,同一本书也如此说明,ADO.NET团队的开发人员Damien Guard在他的博客文章中也提到,Linq to SQL将包含在.NET 4.0中。
如何与EF交互?
就像使用Linq to SQL一样。与Linq to SQL一样,Entity Framework将是您的映射实体,并且也将驻留在Model项目中。
希望这可以帮助到您!
我猜你对这些事情有点困惑,它们确实很令人困惑,所以让我们慢慢来。
N-Tiered Architecture和MVC是不同的,但相互交织在一起。 N-Tier通常涉及将数据访问、业务逻辑和用户界面分离。然而,有些人可能会认为完全将BLL与UI分离是不可能的;MVC以这样的方式解决了这个问题,即有一个相应的控制器与您的BLL和视图进行交互,而不是让您的视图直接与BLL进行交互。
是的,拥有存储库是实现DAL的一种方法。 有许多做法,您不应该局限于书中讨论的内容。
该书仅使用LINQ to SQL来演示ASP.NET MVC最快的方法,但这不是唯一的方法。 暂停考虑LINQ to SQL一分钟;无论您使用像NHibernate这样的ORM还是使用纯ADO.NET + DAL Factory或其他任何东西,都可以使用ASP.NET MVC -- 您将无法使用那些您可以拖放到UI中的ASP.NET ObjectDataSources
。
是的,您仍然需要自己创建数据访问和业务逻辑层。有些人可能会认为控制器层就是业务逻辑,但我个人更喜欢将真正的业务逻辑(例如定价计算)与屏幕业务逻辑(例如“确定”按钮的事件处理程序)分开。然后您将从控制器类中调用这些内容。控制器类控制屏幕逻辑并管理从数据/业务逻辑层到屏幕值的转换。
ASP.NET MVC框架对“模型”层没有任何限制,这意味着您可以使用任何您想要的东西,包括NHibernate、LINQ to SQL或实体框架。我使用LINQ to SQL因为它很简单。
不确定,从未读过那本书。我只是从codeplex下载了Scott Hanselman的Nerddinner项目,并将其用作编写ASP.NET MVC网站的指南。