【问题标题】:ASP.Net MVC vs ASP.Net FormsASP.Net MVC 与 ASP.Net 表单
【发布时间】:2009-10-12 06:13:11
【问题描述】:

您为什么会考虑在 Web 项目中使用带有表单和控件的 ASP.Net MVC 或标准 ASP.Net?除了个人喜好,还有什么原因?你觉得什么样的项目更适合MVC,什么样的项目适合普通的ASP.Net?

您是否会考虑将您当前的项目转移到一个或另一个?

【问题讨论】:

    标签: asp.net asp.net-mvc


    【解决方案1】:

    ASP.NET Web Forms 和 MVC 是 Microsoft 开发的两个 Web 框架 - 它们都是不错的选择。任何一个 Web 框架都不会被另一个替代,也没有计划将它们“合并”到一个单一的框架中。持续的支持和开发由 Microsoft 并行完成,两者都不会“消失”。

    这些 Web 框架中的每一个都有优点/缺点 - 在开发 Web 应用程序时需要考虑其中一些。可以使用任何一种技术来开发 Web 应用程序 - 它可以使特定应用程序的开发更容易选择一种技术而不是另一种技术,反之亦然。

    ASP.NET 网络表单:

    • 发展支持状态 • 给人一种Web 应用程序知道用户一直在做什么的错觉,类似于Windows 应用程序。 IE。使“向导”功能更容易实现。 Web 表单在向开发人员隐藏大量复杂性方面做得很好。
    • 快速应用程序开发 (RAD) • 只需“跳入”并开始交付Web 表单的能力。这在一些 MVC 社区中存在争议,但由 Microsoft 推动。最后,它归结为开发人员的专业水平以及他们对什么感到满意。对于经验不足的开发人员来说,Web 表单模型的学习曲线可能较少。
    • 更大的控制工具箱 • ASP.NET Web 窗体提供了更强大、更强大的工具箱(Web 控件),而 MVC 提供了更原始的控件集,更多地依赖于通过 jQuery (Javascript) 实现的富客户端控件。
    • 成熟 • 自 2002 年以来一直存在,有大量关于问题、问题等的信息。提供更多第三方控制 - 需要考虑您现有的工具包。

    ASP.NET MVC:

    • 关注点分离 (SoC) • 从技术的角度来看,MVC 中的代码组织非常干净、有条理和细化,这使得 Web 应用程序更容易(希望)在功能方面进行扩展。从开发的角度推广出色的设计。
    • 更轻松地与客户端工具(丰富的用户界面工具)集成 • 与您在桌面上看到的应用程序一样,Web 应用程序比以往任何时候都更加丰富。借助 MVC,它使您能够与此类工具包(例如 jQuery)集成,比在 Web 窗体中更轻松、更无缝。
    • 搜索引擎优化 (SEO) 友好/无状态 • URL 对搜索引擎更友好(即 mywebapplication.com/users/1 - 检索 ID 为 1 的用户 vs mywebapplication/users/getuser.aspx(在会话中传递的 ID))。同样,由于 MVC 是无状态的,这消除了从同一窗口生成多个 Web 浏览器(会话冲突)的用户的头痛。同样,MVC 遵循无状态 Web 协议,而不是与之“对抗”。
    • 非常适合需要高度控制的开发人员 • ASP.NET Web 表单会自动生成您在呈现页面时看到的大部分原始 HTML。这可能会让开发人员头疼。使用 MVC,您可以完全控制渲染的内容,并且不会有任何意外。更重要的是,HTML 表单通常比 Web 表单小得多,这相当于提高了性能 - 需要认真考虑。
    • 测试驱动开发 (TDD) • 使用 MVC,您可以更轻松地为 Web 端创建测试。额外的测试层将为意外行为提供另一层防御。

    身份验证、授权、配置、编译和部署都是两个 Web 框架之间共享的功能。

    【讨论】:

      【解决方案2】:

      WebForms 是一种对开发人员隐藏 Web 机制的抽象。它允许桌面开发人员相对轻松地将他们的技能转移到网络上。虽然它确实在一定程度上实现了这一点,但在实际场景中,通常在抽象中断之前不久,人们就不得不采用混乱的解决方法。单元测试很困难,因为处理用户交互的逻辑与 UI 紧密耦合。典型的 WebForms 应用程序生成的 HTML 远非最佳。它通常臃肿、难以阅读,并且包含大量内容,这些内容只是为了让抽象能够工作,例如viewstate,它是一个巨大的信息块,可以帮助抽象为开发人员提供状态的错觉,即使 Web 是一种无状态的媒介。

      然而,MVC 包含了 Web 的机制。 Web 请求和响应中发生的基本操作作为简单的抽象呈现给开发人员。 MVC 有明确的关注点分离。该模型仅表示系统所关注的业务对象或实体,以及用于检索和存储这些对象实例的方法。控制器接受 Web 请求,对模型执行操作,然后将模型交给视图。视图纯粹是一个渲染器,用于向用户呈现模型并公开界面项,从而允许用户制定下一个请求以传递给控制器​​。这种关注点分离允许相对容易的单元测试。开发人员可以完全控制生成的 HTML,并且不需要存在其他工件(例如视图状态)。

      我更喜欢 MVC。在极少数情况下,使用 Webforms 可能很有用,例如一个快速的原型或演示,否则我总是推荐使用 MVC。

      至于将项目从 Webforms 转移到 MVC,这显然是非常主观的,并且取决于应用程序本身和预算限制,但总的来说,我相信这是朝着正确方向迈出的一步。

      【讨论】:

        【解决方案3】:

        您可以发现 ASP.Net MVC 与普通 ASP.Net 相比有许多不同之处和优势

        应用程序。如果不是请访问堆栈溢出页面。

        Biggest advantage to using ASP.Net MVC vs web forms

        为您的应用程序选择 MVC 概念的原因在很多方面有所不同

        1. 你的申请有什么用?无论是论坛、报告工具还是内网网站

        2. 是否要遵循设计模式?

          如果是,那是 MVC 还是其他??

        3. 您是否需要模块化来进行未来的增强?

        4. 您是否需要完全控制您的代码?

        5. 是否应该从开发人员的角度对测试部分提供更好的支持?

        如果对这些事情有把握,那么您可以将您的应用程序移至 MVC 框架模型。

        最好继续使用 ASP.Net Web.apps,因为它包含所有最新的

        具有当前行业所需的功能。

        【讨论】:

        • 我不明白第 4 点,您是否需要完全控制您的代码?我从来没有注意到 asp.net 代码缺乏控制。
        • 控制 - 您自己的代码架构。不会有任何自动生成的代码块,因为它在正常的 ASP.Net 应用程序中
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-07
        • 2011-06-22
        • 1970-01-01
        • 2016-01-08
        • 2013-06-18
        相关资源
        最近更新 更多