ASP.Net MVC与ASP.Net Forms比较

8
为什么考虑在Web项目中使用ASP.Net MVC或标准的带有表单和控件的ASP.Net?除了个人喜好之外,还有什么原因?您认为哪种项目更适合MVC,哪种项目更适合普通ASP.Net?
您是否考虑将当前项目转移到其中一个平台上?
3个回答

13

ASP.NET Web Forms和MVC是由微软开发的两个web框架 - 它们都是不错的选择。两种框架都不会被另一种框架所取代,也没有计划将它们“合并”成一个单一的框架。微软会同时进行持续支持和开发,两者都不会“消失”。

这些web框架各自都具有优缺点 - 在开发web应用程序时需要考虑其中的一些因素。可以使用任一技术来开发web应用程序 - 选择其中一项技术可能会使某个应用程序的开发变得更容易,反之亦然。

ASP.NET Web Forms:

  • 开发支持状态 • 提供了一种假象,即web应用程序知道用户一直在做什么,类似于Windows应用程序。即使实现“向导”功能,Web表单也很好地隐藏了开发人员的许多复杂性。
  • 快速应用程序开发(RAD) • 能够随时开始交付Web表单。 MVC社区中的一些人对此提出了异议,但微软推崇这种方式。最终,这取决于开发人员的专业水平和他们熟悉的内容。对于经验较少的开发人员来说,Web表单模型可能有更少的学习曲线。
  • 更大的控件工具箱 • ASP.NET Web Forms提供了一个更大、更强大的工具箱(web控件),而MVC则提供了一个更原始的控件集,更多地依赖于通过jQuery(Javascript)的丰富客户端控件。
  • 成熟稳定 • 它已经存在了自2002年以来,关于问题、困惑等方面有大量信息。提供更多第三方控制器 - 需要考虑你现有的工具包。

ASP.NET MVC:

  • 关注点分离(SoC) • 从技术角度来看,在MVC中代码的组织非常干净、有组织和粒度化,使得web应用程序在功能上易于扩展。从开发角度促进了良好的设计。
  • 更容易与客户端工具(丰富的用户界面工具)集成
    • 相比桌面应用程序,Web应用程序越来越丰富多彩。通过MVC,您可以比Web表单更轻松、无缝地集成诸如jQuery之类的工具包。
    • 搜索引擎优化(SEO)友好/无状态 • URL对搜索引擎更加友好(例如mywebapplication.com/users/1-检索ID为1的用户,而不是mywebapplication/users/getuser.aspx(在会话中传递ID))。同样,由于MVC是无状态的,这消除了从同一窗口生成多个Web浏览器的用户(会话冲突)的头疼问题。沿着这些线路,MVC遵守无状态网络协议而不是“对抗”它。
    • 适合需要高度控制的开发人员 • ASP.NET Web表单自动生成页面呈现时看到的大部分原始HTML。这可能会给开发人员带来麻烦。使用MVC,您完全控制要呈现的内容,没有任何惊喜。更重要的是,HTML表单通常比Web表单小得多,这可能等同于性能提升-值得认真考虑。
    • 测试驱动开发(TDD) • 使用MVC,您可以更轻松地为Web端创建测试。额外的测试层将为意外行为提供另一层保护。

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


8
WebForms是一种抽象层,它将Web开发的机制隐藏在开发者背后。这使得桌面应用程序开发人员相对轻松地转移到Web上。尽管它在某种程度上实现了这一点,但在实际情况下,往往不久就会出现抽象层的破裂,并需要使用混乱的解决方法。单元测试很困难,因为处理用户交互的逻辑与UI紧密耦合。典型的WebForms应用所生成的HTML远非最佳。它通常很臃肿,难以阅读,并且包含许多内容,仅为了使抽象层正常工作而存在(例如ViewState,这是一个巨大的信息块,用于帮助抽象层向开发者展示状态 illusory,即使Web是无状态的介质。

MVC则拥抱Web的机制。Web请求和响应中发生的基本操作被呈现给开发者作为简单的抽象层。MVC具有明确的职责分离。模型仅表示系统所涉及的业务对象或实体,具有检索和存储这些对象实例的方法。控制器接受Web请求,对模型执行操作,然后将模型传递给视图。视图只是一个渲染器,用于向用户呈现模型并公开界面项,以允许用户制定下一个请求并传递给控制器。这种职责分离使相对容易进行单元测试。开发者完全控制所生成的HTML,并且不需要其他工件存在(例如ViewState)。

我更喜欢MVC。在某些特殊情况下,例如快速原型或演示,使用WebForms可能有用,但除此之外,我始终建议使用MVC。

至于将项目从WebForms转移到MVC,这显然非常主观且取决于应用本身和预算限制,但总体而言,我认为这是朝着正确的方向迈出的一步。


1

ASP.Net MVC相对于普通的ASP.Net应用程序有许多不同之处和优势。

如果没有了解,请访问Stack Overflow页面。

使用ASP.Net MVC与Web表单相比最大的优势

选择MVC概念作为您的应用程序的原因有很多方面:

  1. 您的应用程序是用来做什么的?是论坛、报告工具还是内部网站?

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

    如果是,那么是MVC还是其他模式?

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

  4. 您是否需要对代码有完全控制权?

  5. 开发人员在测试方面是否需要更好的支持?

如果您确定这些事情,那么您可以将应用程序迁移到MVC框架模型。

否则,最好继续使用ASP.Net Web应用程序,因为它包含当前行业所需的所有最新功能。


我不明白第四点,您是否需要对代码有完全的控制权?我从未注意到使用asp.net代码时缺乏控制权。 - JL.
控制 - 通过自己的方式架构代码。与普通ASP.Net应用程序不同,不会有任何自动生成的代码块。 - solairaja

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接