ASP.Net MVC和N-Tier

时间:2009-01-04 10:32:29

标签: asp.net-mvc nhibernate data-structures n-tier-architecture presentation-layer

问候,

提前道歉,我没有对此进行过彻底的研究,以便自己回答这个问题,但我想这需要一些时间,而且在我花更多时间学习它之前,我宁愿知道。我在最初的研究中找不到任何东西..

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

我是否正确地认为我可以在MVC的Model部分中使用nHibernate和我的所有数据访问类,实体和映射?

使用控制器时,最好将大量逻辑分成单独的类,以便从多个控制器中调用它吗?或者我可以从控制器本身调用它们,考虑到我不希望所有这些都是动作,只是常规方法。

由于

5 个答案:

答案 0 :(得分:8)

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

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

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

答案 1 :(得分:3)

  

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

这会让你遇到麻烦。你应该使用扁平的,零安全的DTOs a.k.a. view models。

答案 2 :(得分:2)

达米恩,你可能想看看这两篇文章:

The Fat Controller

An Architectural View of the ASP.NET MVC Framework

答案 3 :(得分:1)

N层是一种 archtitectual模式,可以实现应用程序关键区域的重用,关注点和可伸缩性。 非UI层(业务,数据,外观等)应该是单元测试和UI不可知的。

UI层只是Silverlight,ASP.NET MVC,Web表单等天气之一。

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

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

答案 4 :(得分:0)

要回答你关于为什么使用的问题,如果你已经进入多层,那就是它使得更有条理和搜索引擎友好的URL。此外,它更像是一种标准模式,而不是ASP.Net中的其他模式。这使得那些已经在其他平台上使用MVC的开发人员更加友好。