4

我正在编写一份设计文档,我的团队中的人员愿意从ASP.NET WebForm转到ASP.NET MVC。这很好,但我很难理解MVC如何在3层(数据层,业务层和表示层)架构中工作。我们可以说模型,视图和控制器是表示层的一部分吗?业务层的模型是什么?MVC(ASP.NET MVC)带3层架构如何一起工作?

简而言之,MVC和3层架构如何一起工作?谢谢您的帮助!

+0

可能重复:http://stackoverflow.com/questions/899803/have-i-implemented-an-tier-application- with-mvc-correct?rq = 1,http://stackoverflow.com/questions/1135056/mvc-application-how-does-mult-tier-architecture-fit-in?rq=1,http:// stackoverflow。 com/questions/2843311 /开发一个网站在mvc和三层或n层架构师中有什么区别?rq = 1,http://stackoverflow.com/问题/ 14451444/mvc-multi-tier-mobile-application – 2013-08-13 12:01:32

回答

17

我认为ASP.Net MVC是在表示层。它使用的“模型”类实际上是视图模型,它描述了视图所需的数据结构。您的所有业务逻辑和数据访问应与MVC模型和控制器保持独立。

而且,一般的“最佳实践”为MVC是保持控制器代码尽可能的简单,这通常意味着将一些应用服务的进入,处理繁重的业务层。

+0

这完全是我要回答的问题。 – Ryan 2010-06-15 17:02:08

+0

恩,伟大的思想和所有:) – ckramer 2010-06-15 17:08:05

4

表示层是您的视图。

数据层是您的模型(建议查看存储库模式)。

业务层仍然是什么。

该控制器可调用业务层为功能被加载对象时,或当请求特定视图模型的模型可以调用业务层为功能性,但否则保持相同。

控制器不应该有广泛的业务逻辑 - 把它放在它自己的自包含的DLL中。

0

我知道这只是一个维基百科的链接,但有一些信息here关于n层与MVC架构。

1

这很主观。 做你的团队有意义。

MVC可以相当灵活,几乎没有任何的MVC框架,在所有语言,做事的方法相同。即使在.net空间。 FubuMVC,Spring.net和MS MVC都以稍微不同的方式做事。

0

A“层”是部署单元,而在MVC“层”是内码责任的逻辑分离。

1

首先, 你不必改变为MVC只是因为...如果你有一些工作,我不认为你需要。

但对你的问题,在MVC模式的模型是任何一种类代表您的业务问题,至极可以是任何类型的计算,业务规则或数据访问类的。在MVC框架中,有一个文件夹作为为您提供解决方案的一种方式,因此您可以将模型类放在那里,但您不必为此创建不同的项目,以解决业务问题,这就是您的模型。 因此,在这里,您可以定义任何其他模式,您可以使用存储库模式并使用NHibernate或实体框架来实现该模式。

视图只是显示和接收用户信息的网页。

而控制器是您的应用程序的入口,将要接收请求的类,调用必要的模型并重定向到指定的视图。

希望我能帮上忙。

1

与MVC的N层工作得很好。只需遵循SOLID原则和其他几个原则,您就可以保持应用程序的松耦合和紧密结合。

我想说,阅读MVC 3上的书籍和观看pluralsight.com视频是您最大的资源。你不能一起去“做一些适合你的团队的东西”。如果说叫Johnny和Timmy的工作伙伴想要把一大堆逻辑放到一个控制器中,就是因为在短期内,“为你的团队工作”的最后期限并没有使它变得正确/好/聪明。

我发现互联网上有这么多不好的文章,令人恐怖的是,有多少人被带到一条黑暗的悲惨之路。遵循快乐的道路。使用像艺术意见的计算器,但检查与MSDN文章,mvc书籍和pluralsight.com