【问题标题】:About ASP.NET MVC Model and that WebForms关于 ASP.NET MVC 模型和那个 WebForms
【发布时间】:2011-01-15 16:27:04
【问题描述】:

我还没有真正了解 MVC 模型或架构,但我阅读并看到的是它分离了表示 UI 和逻辑代码的“关注点”,对吗?但我知道 WebForms 架构也有一个代码隐藏模型,然后将代码和 UI 分开。

在 MVC 中还有其他东西可以进一步分离周围的东西吗?

【问题讨论】:

  • 我对 MVC 了解不多,无法回答,但据我所知,MVC 代码有很多混合代码和标记。事实上,这就是我迄今为止避免它的原因。所以我很惊讶看到你建议 MVC 将两者分开。
  • @Jonathan Wood - 您混淆了将代码和标记与关注点分离(UI、业务逻辑、持久性等)放在一起的想法
  • @Jonathan 这里已经有大量类似的问题了。看一看。并掌握 mvc - 这确实是回答这个问题的唯一方法(由你自己)。
  • @Oded:是的,我当然是。标记传统上是 UI “关注点”,而代码通常与业务逻辑相关联。
  • @Jonathan Wood - 你对 MVC 有很深的误解。是的,MVC“视图”中确实有代码,但这只是用于演示的代码(即,将数据插入视图或根据数据以某种方式修改视图的代码)。 “关注点分离”的意思是业务逻辑代码与ui代码分离。

标签: asp.net asp.net-mvc webforms


【解决方案1】:

MVC 和 WebForms 的主要区别在于,在 WebForms 中,接收请求的是视图 (/foo.aspx),而在 MVC 中,控制器 (/controller) 将操纵模型并选择适当的视图渲染。另一个重要的区别是所有 HTTP 上下文堆栈(请求、响应、会话……)都被抽象在 ASP.NET MVC 中的抽象类和接口后面,这允许更好地分离关注点和独立的单元可测试性。与 WebForms 相比,在 ASP.NET MVC 中生成的标记也有更多的控制权,WebForms 的标记基本上是由服务器端控件生成的。

【讨论】:

    【解决方案2】:

    代码隐藏特别是使 UI 与 WebForms 中的业务逻辑紧密耦合的原因——代码隐藏是 UI 的一部分。

    使用控制器而不是代码隐藏是 MVC 解耦这些问题的主要方式之一。

    【讨论】:

      【解决方案3】:

      考虑这一点的最简单方法是 .aspx 和背后的代码本质上是同一组件 UI 的两个不同视图。完全可以在 MVC 中使用代码隐藏(如果您使用的是 webforms 视图引擎),但视图和隐藏代码都被视为 UI 的一部分。控制器是一个单独的实体,模型也是。

      【讨论】:

        【解决方案4】:

        代码隐藏是具体的原因 UI 与业务逻辑紧密耦合 在 WebForms 中——代码隐藏是一部分 用户界面。

        只有当你选择让它时。

        如果您选择拥有单独的业务层/层并实施适当的 UI 层模式(例如 MVP/MVC/MVVM),业务逻辑将不会与 UI 耦合。 我认为在 web 表单中使用 MVP 模式的 n 层设计可以提供比 asp.net MVC 更大的关注点分离,但需要更多的前期设计。

        Asp.Net MVC 强制更好的开箱即用分离。它被烤进去了。 这对于可能不太了解的开发人员来说是件好事。使用 webforms 完全取决于架构师/开发人员来选择所需的分离级别,这是一把双刃剑,因为如果您对该平台有经验,可以做一些很棒的事情,但如果您是新手或来自经典的 asp如果没有一些指导,您可能会弄乱它的开发风格。

        我在 webforms 上看到的 asp.net MVC 的最大优点不是 soc 或可测试性(因为它们可以在 webforms 中实现)它能够更好地控制标记(如果你需要它)和更多以 web 为中心的焦点(再次,如果那是你需要的)。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2010-12-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多