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

时间:2020-03-06 14:26:22  来源:igfitidea点击:

与另一种相比,使用一种有什么优势?

解决方案

对我来说,最大的单一优势是模型,视图和控制器层之间的明确分隔。它从一开始就有助于促进良好的设计。

ASP.net MVC的主要优点是:

  • 启用对呈现的HTML的完全控制。
  • 提供关注点的清晰分离(SoC)。
  • 启用测试驱动开发(TDD)。
  • 易于与JavaScript框架集成。
  • 遵循网络无状态性质的设计。
  • 启用S​​EO的RESTful网址。
  • 没有ViewState和PostBack事件

ASP.net Web窗体的主要优点是:

  • 它提供RAD开发
  • 适用于来自winform开发的开发人员的简易开发模型。

Web表单还得益于成熟的技术以及来自Telerik之类的第三方控制提供程序的支持。

在webforms中,我们还可以手动渲染几乎整个html,除了很少的诸如viewstate,eventvalidation之类的标签,可以使用PageAdapters删除它们。没有人会强迫我们使用GridView或者其他具有不良HTML呈现输出的服务器端控件。

我会说MVC的最大优势是速度!

接下来是强制分离关注点。但这并不禁止我们将整个BL和DAL逻辑放入Controller / Action!它只是视图分离,也可以在Web表单中完成(例如MVP模式)。人们为mvc提到的许多事情都可以在Web表单中完成,但需要额外的努力。
主要区别在于请求来自控制器,而不是视图,并且这两层是分开的,而不是通过部分类(如Webforms)连接(aspx +代码在后面)

如果我们正在与其他开发人员(例如PHP或者JSP)一起工作(并且我猜是Rails),那么在页面上进行转换或者协作的时间将大大简化,因为我们将不会遇到所有这些"讨厌的" ASP.NET事件和控制各地。

我们再也不用使用"非后置控件"了,并弄清楚如何将它们混入传统的asp.net环境中。

这意味着可以使用这种现代或者免费的javascript控件,例如this或者this或者this,而无需试图将圆钉固定在方孔的感觉中。

MVC使我们在页面上拥有多个表单,这是我知道的一个小功能,但是很方便!

我也认为MVC模式使代码更易于维护,尤其是。几个月后重新访问时。

我的2美分:

  • ASP.net表单非常适合快速应用程序开发和快速增加业务价值。我仍将其用于大多数Intranet应用程序。
  • MVC非常适合搜索引擎优化,因为我们可以更大程度地控制URL和HTML
  • MVC通常会生成更精简的页面-没有视图状态且更清晰的HTML =快速加载时间
  • MVC易于缓存页面的某些部分。 -MVC很有趣:-个人观点;-)

我可以看到较小站点的唯一两个优点是:
6)启用SEO的RESTful网址。
7)没有ViewState和PostBack事件(总体而言,性能更高)

对小型站点进行测试不是问题,无论如何,对站点进行正确的编码也不会带来设计优势,MVC在许多方面会造成混淆,并使更改更难进行。我仍在决定这些优势是否值得。

我可以清楚地看到MVC在大型多开发人员站点中的优势。

我发现的主要好处是,它迫使项目进入了更具可测试性的结构。
使用Web表单(MVP模式)也可以很容易地做到这一点,但是要求开发人员对此有一定的了解,但许多人没有。

Webforms和MVC都是可行的工具,它们在不同领域都表现出色。

在我们主要开发B2B / LOB应用程序时,我个人使用Web表单。
但是我们总是使用MVP模式来做到这一点,因为我们可以在单元测试中实现95%以上的代码覆盖率。
这也使我们能够自动测试Webcontrols的属性
属性值通过视图公开,例如

bool IMyView.IsAdminSectionVisible{
       get{return pnlAdmin.Visible;}
       get{pnlAdmin.Visible=value;}
    }

)
我不认为在MVC中可以轻松实现这种测试水平,而又不会污染我的模型。

  • 适当的AJAX,例如JSONResults没有部分页面回传废话。
  • 无观看状态+1
  • 不重命名HTML ID。
  • 干净的HTML =不会出现膨胀,并且在渲染XHTML或者符合标准的页面时表现得不错。
  • 不再生成AXD javascript。

弗朗西斯·沙纳汉(Francis Shanahan),

  • 为什么将部分回发称为"废话"?这是Ajax的核心功能,在Atlas框架和Telerik等出色的第三方控件中得到了很好的利用。
  • 我同意我们关于viewstate的观点。但是,如果开发人员小心地禁用了viewstate,则可以大大减小呈现的HTML的大小,从而使页面变轻。
  • 只有HTML Server控件在ASP.NET Web窗体模型中被重命名,而不是纯HTML控件。不管是什么,我们为什么如此担心重命名是否完成?我知道我们想在客户端处理很多javascript事件,但是如果我们聪明地设计网页,则可以肯定获得所需的所有ID。
  • 甚至ASP.NET Web表单也符合XHTML标准,我认为没有任何膨胀。这不是为什么我们需要MVC模式的理由
  • 同样,为什么还要为AXD Javascript烦恼?为什么会伤到你?这又不是有效的理由

到目前为止,我还是使用经典的ASP.NET Web表单开发应用程序的爱好者。例如:如果要绑定下拉列表或者网格视图,则最多需要30分钟,最多不超过20行代码(当然是最少的)。但是在使用MVC的情况下,请与开发人员交谈这是多么痛苦。

MVC的最大缺点是我们要回到ASP的时代。还记得将Server代码和HTML混合在一起的意大利面条代码吗?噢,天哪,请尝试阅读混合了javascript,HTML,JQuery,CSS,Server标签和其他内容的MVC aspx页面。

ASP.NET Web窗体和MVC是Microsoft开发的两个Web框架,它们都是不错的选择。这两个Web框架都不能被另一个替代,也没有计划将它们"合并"为一个框架。 Microsoft会同时进行持续的支持和开发,而且两者都不会"消失"。

这些Web框架中的每一个都提供了优点/缺点,在开发Web应用程序时需要考虑其中的一些优点/缺点。可以使用任何一种技术来开发Web应用程序,这可能会使针对特定应用程序的开发更容易选择一项技术,而选择另一项则相反。

ASP.NET Web表单:

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

ASP.NET MVC:

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

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