代码背后/旁边Model(.cs-aspx.cs-aspx)VS MVC模型,有什么区别呢?

时间:2008-12-24 23:01:49

标签: asp.net-mvc model-view-controller design-patterns

经典.cs-aspx.cs-aspx(代码隐藏/旁边)模型与新MVC模型之间的基本区别是什么?

3 个答案:

答案 0 :(得分:5)

MVC和经典ASP之间的基本区别在于,在经典ASP中,应用程序的所有代码和标记都存在于.asp文件中。在MVC中,.aspx文件仅包含用于呈现页面的代码和标记。用于处理请求,检索模型数据和实施业务逻辑的应用程序的其余部分存在于控制器和模型类中。这些类比类ASP代码更容易测试,因为它与负责呈现视图的代码分开。

这种关注点的分离是MVC pattern的基础。根据模式,代码分为三个主要组件 - 模型,视图和控制器。模型中的类表示应用程序的业务对象,持久性框架和应用于业务对象的业务逻辑。控制器中的类接受传入的请求,使用输入或查询参数来检索适当的模型数据,并为要呈现的视图生成必要的数据。视图(aspx页面)获取控制器提供的数据并生成标记。

Webforms(代码隐藏)介于经典ASP和MVC模式之间。 Webforms并没有像MVC那样强制分离关注点,但它确实允许更多的代码存在于实际页面的“后面”。例如,您可以从负责生成视图的代码中分离出业务对象,业务逻辑和持久性框架(模型,如果您愿意)。困难在于控制器动作(输入处理和模型检索)仍然与视图呈现代码链接。这种集成使测试此代码变得更加困难,并使视图/控制器代码更加依赖于彼此 - 关注点是“混合”而非“分离”。总的来说,这是设计糟糕的证据,因为它使得将来进行必要的更改变得更加困难。

希望这有帮助。

答案 1 :(得分:1)

简单地说就是这样:MVC是应该如何构建网络应用程序。代码隐藏(asp.net Web表单)不是一个好习惯。如果您是真正的开发人员,您会欣赏MVC是最佳实践,因为它真正将逻辑与数据和表示分开。简单的MVC是优雅而正确的方式。

答案 2 :(得分:0)

感知MVC和ASP(或ASP.NET表单)之间差异的一种非常简单的方法是,在MVC中,Controller是请求的处理程序。

请求被路由到控制器而不是“页面”或“表单”。控制器将请求中的信息传递给模型,然后做出一些简单的选择,以确定应该使用哪个视图来呈现模型的所需状态。请注意,控制器可以选择在响应中使用哪种视图,这一点非常重要。

MVC打破了请求的URL与呈现特定数据表示所需的UI代码之间的关系。