问候,
提前道歉,我没有对此进行过彻底的研究,以便自己回答这个问题,但我想这需要一些时间,而且在我花更多时间学习它之前,我宁愿知道。我在最初的研究中找不到任何东西..
如果您已经使用多层架构(数据层,逻辑层,表示层),为什么要使用ASP.Net MVC?除了控制器具有比逻辑层更多的功率之外。
我是否正确地认为我可以在MVC的Model部分中使用nHibernate和我的所有数据访问类,实体和映射?
使用控制器时,最好将大量逻辑分成单独的类,以便从多个控制器中调用它吗?或者我可以从控制器本身调用它们,考虑到我不希望所有这些都是动作,只是常规方法。
由于
答案 0 :(得分:8)
MVC不是要取代N-Tier,它是一种组织表示层的方法。
我不会说控制器比逻辑层更强大。相反,控制器(作为表示层的一部分)仍然应该调用逻辑层。
控制器应该只为视图准备数据并处理视图中的操作。你仍然应该使用你的BLL。
答案 1 :(得分:3)
是的,NHibernate实体可以(并且应该将它们)传递给视图。
这会让你遇到麻烦。你应该使用扁平的,零安全的DTOs a.k.a. view models。
答案 2 :(得分:2)
答案 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的开发人员更加友好。