【问题标题】:ASP.NET MVC - How to explain it? [closed]ASP.NET MVC - 如何解释它? [关闭]
【发布时间】:2008-12-10 04:30:21
【问题描述】:

我正在尝试向过去 8 周一直在学习 ASP.NET 的学生(本科生)教授 ASP.NET MVC(我知道这听起来时间不多,但是每天上课 4 小时,每周 5 天,包括实验室、测验、考试和摔跤)。

我还没有收到问题...但我知道它即将到来...

什么时候可以使用 MVC 而不是 ASP??

我对 ASP MVC 没有任何实际经验,并且在网络上找不到任何明确的答案。诸如“...网络是无状态的,ASP MVC 是更接近的匹配等等”之类的论点对他们来说意义不大。他们开始注意到 ASP 有很多控件,与 MVC 相比,这些控件似乎简化了他们的标记。

我试图给出一个诚实的说法,任何反馈都将不胜感激! TIA

【问题讨论】:

  • 这个问题似乎离题了,因为它不在帮助中心所述的讨论范围内。

标签: asp.net-mvc


【解决方案1】:

正如成员们已经强调的那样,无国籍是一个很好的解释。 除此之外,向学生提出以下问题?

如果他们必须使用 ASP.NET(没有 MVC)来做以下事情,这有多容易?

  1. 测试您的观点
  2. 模拟 Http 对象。
  3. 视图状态缩减(按设计)(
  4. 用轻量级视图引擎替换 .aspx。
  5. 彻底分离关注点。
  6. 干净的 HTML
  7. 等。等等。

现在在上面的上下文中解释asp.net mvc。可能还有更多。 至少我认为他们会明白这一点,认为这可能不适用于所有项目,但如果我们只是从中获益,会有什么害处。

【讨论】:

    【解决方案2】:

    对我来说,MVC 方法与 ASP Forms API 是一个非常不同的范例。我认为“无国籍”的想法实际上是用一个词来解释一个非常广泛的话题的好方法。

    我看到的主要优点之一是 MVC 框架对页面的设计和输出提供了很多控制。对于小型项目,这可能不是最好的使用方式,但对于大型项目,它可以很好地扩展,因为您可以做出(个人)我认为更好的不同架构选择,例如 MVC 框架分离逻辑的方式从视图中。

    此外,如果您正在设计一个包含大量 Javascript 的网站,那么您在 MVC 框架中获得的对输出的控制会非常有用,因为您不必太担心 ID 和其他标记可能会如何像您通常在 ASP Forms 框架中那样进行渲染。

    MVC 框架确实是一种完全不同的网站设计方式。就我个人而言,我认为它对大型项目更有利,但我也是从 Web 语言开始的,而 MVC 是一个更受欢迎的设计选择。

    这只是我的 2 美分。

    【讨论】:

      【解决方案3】:

      我一直认为 ASP.NET MVC 框架是一个坏名字,因为它是一种设计模式。

      问题应该是:

      什么时候可以在 ASP.NET Web 表单上使用 ASP.NET MVC Framework?

      开发者体验

      a) ASP.NET Web 窗体试图从开发人员那里抽象出 HTTP 的无状态特性。 GUI 元素的状态和/或数据存储在 Viewstate/Session 中。每个人 Form 都会对自己进行回发,基本上是模仿 WinForm 事件驱动设计的行为。

      b) HTML GUI 元素由可重复使用的控件进一步抽象,从第三方供应商处购买。这有助于开发人员在没有太多 JavaScript 和 HTML/HTTP 知识的情况下将 HTML 应用程序粘合在一起。基本上类似于您开发 VB / WinForms 的方式

      c) 您可以很好地在 ASP.NET 网络表单中实现 MVC/MVP 模式。查看 Patterns and Practices Web Client 软件工厂,看看他们是如何做到的。

      d) 使用 WebForms 开发时,您通常会根据服务器上的用户反馈更改 HTML(视图)。大多数事件(用户单击按钮、编辑字段)在服务器上以连续回发循环的方式处理,执行所谓的 ASP.NET 页面生命周期。

      VS

      浏览器控制的视图(不知道怎么称呼它)。基于用户输入对 HTML 的所有更改都在浏览器中处理。您将使用 Javascript 操作 DOM。

      注意:我基于这样一个事实,即 ASP.NET MVC 很可能是由基本的 HTML + Ajax 驱动的

      我个人会如何在它们之间进行选择(从未使用过 MVC,只是阅读它)

      1) 如果我要使用 Ajax、Jquery、EXT JS 类型库构建一个纯无状态前端,那么 ASP.NET MVC 似乎更合适。尽管您可以在 ASP.NET Webforms 中构建它,但这似乎毫无意义,因为您没有利用回发模型和服务器控件。

      2) 如果我被要求构建一个新的基本 Web 应用程序,我会坚持使用 ASP.NET Webforms,因为我已经熟悉它并且了解整个页面的生命周期。

      3) 如果我被要求构建一个 Web 2.0(讨厌这个词)以获得下一代用户体验,我可能会选择 ASP.NET MVC,并使用 JQuery / ASP.NET Ajax 客户端控件。

      4) 许多公司已经建立了一套可靠的 WebForm 控件以供使用。以纯粹的无状态 ajaxy 方式重建它们会很昂贵:)

      【讨论】:

        【解决方案4】:

        对于在 Winforms 方面有经验(和痛苦)的人 - 最大的区别是不再有 Viewstate。表单上的控件状态保存在客户端、浏览器中,并针对每个请求发送到服务器。

        如果您使用 Javascript,则在浏览器端进行更改会更容易,而服务器端可以轻松地查看整个表单,而无需重新创建控件绑定。

        除了 MVC 提供的所有优点——视图/代码分离、可测试性——这对我来说是转向 MVC 的关键。

        【讨论】:

          【解决方案5】:

          除了已经列出的所有其他优秀回复。 Webforms 是远离 HTML 的抽象

          当您想要一个 html 数据表时,您可以在页面上放置一个“gridview”控件 - 您最终得到的是“gridview”html,而且很可能不是完全您所追求的.

          鞋子在 90% 的情况下都适合,但很多时候,尤其是当事情超出控件不适合的基本站点时。使用 Webforms 通常意味着您无法完全控制呈现给浏览器的最终输出。

          您当然可以扩展或编写自己的网格控件。但是你不是更喜欢写你想要的html吗?

          根据我的经验,项目变得越来越复杂,UI 也越来越复杂,以至于您最终会越来越频繁地与 Web 表单作斗争。

          【讨论】:

            【解决方案6】:
            猜你喜欢
            • 1970-01-01
            • 2021-05-26
            • 1970-01-01
            • 1970-01-01
            • 2013-08-09
            • 2011-02-04
            • 2013-07-29
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多