代码之家  ›  专栏  ›  技术社区  ›  Winston Smith

我应该何时以及为什么考虑ASP.NET MVC?

  •  7
  • Winston Smith  · 技术社区  · 16 年前

    最近我注意到很多关于ASP.NET MVC的讨论,但是我没有得到一个清晰或令人信服的描述,关于我何时、何地或为什么要在Web窗体上使用它。

    假设我想构建一个小的Web应用程序,允许一个人在网上做一些广告。该网站将有4个用例:

    • 搜索广告
    • 查看列表
    • 查看项目
    • 放置广告

    让我们假设:

    • 我对单元测试我的控制器不是特别感兴趣。页面将正确呈现项目列表,否则将无法呈现。
    • 我对HTML标记的更多控制感兴趣。
    • 我对使用最新的Buzz技术不感兴趣。
    • 我对使用在生产力、性能、可维护性和最终解决方案的简单性方面最适合工作的工具感兴趣。
    • 我不想为了得到一些简单的工作,而不得不绕过一些细微的差别。

    因此,我的问题是:

    • 这两种模式的根本区别是什么?
    • 在哪种情况下,一个比另一个好?
    • ASP.NET MVC的gotchas是什么(我知道WebForms的gotchas)
    • 对于我们的示例应用程序,使用ASP.NET MVC而不是WebForms会获得什么好处?
    • 对于我们的示例应用程序,使用ASP.NET MVC而不是WebForms会失去什么?
    • 在同一个小应用中混合和匹配模型是否可行?

    感谢所有花时间回答问题的人。

    3 回复  |  直到 12 年前
        1
  •  10
  •   Franck    16 年前
    • 这两种模式的根本区别是什么?

    webforms试图模仿winforms的开发,它允许您重用许多预制的控件,并通过隐藏的viewstate机制伪造web应用程序状态。

    MVC是一种模式,旨在帮助您分离数据(模型)、业务逻辑(控制器)和表示(视图)。它更多地坚持Web的真正本质:RESTfulURL,无状态。

    • 在哪种情况下,一个比另一个好?

    在我看来,对于大量使用控件的Intranet应用程序,WebForms在减少开发时间方面非常有用,因为多亏了设计器,您可以快速创建UI,并让框架自动管理应用程序的状态。

    对于任何其他项目,特别是公共网站,甚至是一个小项目,我认为MVC是一个可行的方法。

    • ASP.NET MVC的gotchas是什么(我知道 WebFras)

    我想说,有一些学习曲线可以完全理解MVC模式及其功能。此外,由于框架仍处于测试阶段,您可以期望API在发布之前经历一些细微的更改。

    因为在MVC中JavaScript并不是对您隐藏的,所以如果您不熟悉它,还需要一些时间来学习。不过,jquery大大简化了这一过程。

    • 对于我们的示例应用程序,使用ASP.NET MVC而不是 网络表单?

    您可以更好地控制HTML标记和JavaScript行为,更清晰地分离关注点和一些易于测试的代码库(即使您似乎对单元测试不感兴趣)。

    • 对于我们的示例应用程序,使用ASP.NET MVC而不是 网络表单?

    您将失去构建页面和应用程序状态管理的“拖放”快速方法。

    • 在同一个小范围内混合和匹配模型是否可行? 应用程序?

    在某些方面,是的。

    我建议你看 this talk 作者是PhilHaack,他对框架进行了很好的概述,并邀请JeffAtwood讨论如何用它构建StackOverflow。

    他解释了如何使用一些WebForms控件来控制呈现到视图中的captchas。

        2
  •  3
  •   Tad Donaghe    16 年前

    主要的区别在于,MVC更像是其他编程世界使用的“常规”Web开发,而标准ASP.NET的设计是为了让Windows开发人员很容易成为Web开发人员。我通过学习RubyonRails学习了Web编程,而MVC似乎正在成为Rails的.NET版本。

    与常规的ASP.NET相比,MVC更注重标准遵从性、不引人注目的JavaScript和关注点分离。您需要了解HTML和CSS是如何协同工作的。当你掌握MVC时,你会学到更多的javascript。对我来说,MVC最大的优点之一是,与常规的ASP.NET相比,使用jquery可以更轻松、更好地完成一些令人惊奇的Ajax工作。

    如果您现在正在学习Web开发,那么我强烈建议您学习MVC。将来,您至少可以将一些新技能转移到其他框架中。

    如果您正在寻找能够快速获得Web开发工作的对象,那么我必须强烈推荐ASP.NET。

    一旦MVC是RTM,我想我们会看到一个缓慢而稳定的采用曲线,随着它的成熟,MVC可能成为用ASP.NET创建网站的主要框架。我至少希望如此!

        3
  •  2
  •   JSC    16 年前
    1. aspnet mvc和is webforms最大的区别在于页面的生命周期,没有困难(不必要)的回发,干净的编码,enz。
    2. 这是没有规则的
    3. ????
    4. 全网休息,逻辑分离
    5. 设计时支持,不能使用第三方WebControls
    6. 请不要把它混在一起。如果您真的想使用WebForms模型,可以使用MVP模式, Billy McCafferty 就这个设计模式写了很多文章

    我正在将我的一些应用程序从MVP模式重新设计为MVC模式,不是因为MVC更好,而是我想使用MS提供的最新技术(模式本身已经很旧了)。