4

问候,

提前道歉,我没有认真研究这个问题来自己回答这个问题,但我想这需要一些时间,我宁愿现在知道,然后再投入更多时间来学习它。我在最初的研究中找不到任何东西..

如果您已经在使用多层架构(数据层、逻辑层、表示层),为什么还要使用 ASP.Net MVC?除了控制器比逻辑层拥有更多权力之外。

我是否认为我可以在 MVC 的模型部分中使用 nHibernate 和我的所有数据访问类、实体和映射?

使用控制器时,是否最好将大量逻辑分离到一个单独的类中,以便我可以从多个控制器中调用它?或者我可以从控制器本身调用它们,考虑到我不希望它们都是动作,只是普通方法。

谢谢

4

5 回答 5

8

MVC 并不是要取代 N-Tier,它是一种组织表现层的方式。

我不会说控制器比逻辑层更强大。相反,控制器(作为表示层的一部分)仍应调用逻辑层。

控制器应该只为视图准备数据并处理来自视图的操作。你仍然应该使用你的 BLL。

于 2009-01-04T11:05:20.783 回答
3

是的,NHibernate 实体可以(并且应该)被传递给视图。

这会给你带来一些麻烦。您应该使用扁平的、空安全的 DTO,也就是视图模型。

于 2009-01-04T12:17:27.770 回答
2

Damien,您可能想阅读以下 2 篇文章:

胖控制器

ASP.NET MVC 框架的架构视图

于 2009-01-04T12:57:12.230 回答
1

N 层是一种架构模式,可实现应用程序关键区域的重用、关注点分离和可扩展性。非 UI 层(业务、数据、外观等)应该进行单元测试并且与 UI 无关。

UI 层只是这些层之一,它可以是 Silverlight、ASP.NET MVC、Web 表单等。

与 MVP 一样,MVC 是一种设计模式,可以更好地测试 UI 层。ASP.Net MVC 是一个开箱即用的框架,支持并强制执行此模式。该模式早在此框架之前就已被使用。

但这只是一个 UI 层的选择,控制器中不应该与数据库、服务等交互,它们使用模型控制视图的状态,不应该控制业务逻辑、持久性、事务等。

于 2010-03-29T22:41:22.443 回答
0

如果您已经使用多层,要回答您为什么要使用的问题是,它可以使 URL 更有条理且对搜索引擎友好。此外,与 ASP.Net 中的其他模式相比,它更像是一种标准模式。这使得它对那些已经在其他平台上使用 MVC 的开发人员更加友好。

于 2009-01-04T14:36:08.473 回答