哪个是ASP.net MVC更好的方法?

时间:2011-10-21 12:28:47

标签: asp.net-mvc asp.net-mvc-3 model-view-controller

First Appraoch

   /\
  /  \
V/    \ C <=WCF=> {Business Layer (with business logic) <=> ORM <=> Database}
/      \
--------
    M

第二种方法

   /\
  /  \
V/    \ M <=WCF=> {Business Layer (with business logic) <=> ORM <=> Database}
/      \
--------
    C

主要差异: - 在第一种方法中,业务对象将具有2个版本。其中一个在业务层内部加载了属性,而其他dumb版本中只有很少的View特定属性要由Controller填充。在第二个appraoch中,将有一个具有所有属性的类。 - 第一种方法似乎与表示层分离了一点

在这两种方法中,Controller都是起点。 至于我从不同的人那里收到的观点,两者都是有效的方法,可以根据发展偏好进行切换。
请分享想法。

3 个答案:

答案 0 :(得分:3)

我们在asp.net mvc应用程序中使用下一种方法:

  • ViewModels - 聚合视图呈现信息的扁平对象
  • 控制器 - 从业务对象构建ViewModel(其中包含逻辑或由ORM生成)
  • 模型 - 视图中不可用的业务对象

查看&lt; - ViewModel&lt; - Controller&lt; -BusinessObject&lt; - Db

您可以从Professional ASP.NET Design Patterns

获取有关此方法的更多详细信息

答案 1 :(得分:2)

第一个。 ViewModels(在您的三重奏中称为“M”)不应该知道视图或业务层中的任何内容。

真正的MVC定义:

  • 模型:业务层,Web服务或其他。
  • 查看:用户界面
  • 控制器:模型和视图之间的粘合。

Microsoft添加了ViewModel以使分离更加清晰。首先,视图不依赖于您的域模型。它不应该包含逻辑。

我在此列出了使用视图模型的主要原因:http://blog.gauffin.org/2011/07/three-reasons-to-why-you-should-use-view-models/

答案 2 :(得分:1)

imho业务逻辑属于模型。控制器不应该知道也不关心为什么要在视图中显示某些内容。

事实上,我认为这对于这里的工作最重要,不仅仅是绝对的“最佳”。