使用ASP.Net MVC vs web表单最大的优势

使用其中一个的优点是什么?

ASP.net MVC的主要优点是:

  1. 启用对呈现的HTML的完全控制。

  2. 提供清晰的问题分离(SoC)。

  3. 启用测试驱动开发(TDD) 。

  4. 与JavaScript框架轻松集成。

  5. 遵循网络的无状态性质的设计。

  6. REST风格的网址,使搜索引擎优化。

  7. 没有ViewState和PostBack事件

ASP.net Web Form的主要优点是:

  1. 它提供RAD开发

  2. 易于开发者来自winform开发的开发模式。

ASP.NET Web Forms和MVC是由微软开发的两个Web框架 – 它们都是不错的选择。 这两个网络框架都不会被另一个替代,也没有计划将它们“合并”成一个框架。 继续的支持和发展是由微软平行完成的,也不会“走开”。

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

ASP.NET Web窗体:

  • 开发支持状态 •给人一种错觉: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网页表单中的许多控件会自动生成您在呈现页面时看到的大部分原始HTML。 这可能会给开发人员带来麻烦。 使用MVC,它可以更好地控制呈现的内容,而不会有任何意外。 更重要的是,HTML表单通常比Web表单要小很多 – 这是一个值得认真考虑的问题。
  • 测试驱动开发(TDD) •使用MVC,您可以更轻松地在网络方面创建测试。 一个额外的测试层将提供另一层防御意外行为。

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

任何能够记住经典ASP的人都会记得用html和javascript混合在一起的代码打开页面的噩梦 – 即使是最小的页面也很难找出它到底在做什么。 我可能是错的,我希望是我,但MVC看起来像回到那些糟糕的过去。

当ASP.Net出现时,它被誉为救世主,从内容分离代码,并允许我们有网页设计师创建的HTML和编码器后面的代码工作。 如果我们不想使用ViewState,我们将其关闭。 如果我们不想因为某种原因而使用代码,我们可以像传统的ASP一样将代码放入html中。 如果我们不想使用PostBack,我们重定向到另一个页面进行处理。 如果我们不想使用ASP.Net控件,我们使用标准的html控件。 如果我们不想在控件上使用ASP.Net runat =“server”,我们甚至可以询问Response对象。

现在,一个有智慧的人(可能是一个从未编写过传统ASP的人)已经决定是时候回到混合代码和内容的时代,并称之为“分离关注点”。 当然,你可以创建更清洁的HTML,但你可以用传统的ASP。 如果说“如果代码里面有太多的代码,那么编程不正确”就像是说“如果你用经典的ASP编写了结构合理,功能强大的代码,它比ASP.NET更干净,更好”

如果我想回到混合代码的内容,我会考虑开发使用PHP,这种开发有一个更成熟的环境。 如果ASP.NET有这么多的问题,那么为什么不解决这些问题呢?

最后但并非最不重要的是新的Razor引擎意味着更难区分html和代码。 至少我们可以在ASP中寻找开始和结束标记,即<%和%>,但现在唯一的迹象是@符号。

现在可能是转向PHP的时候了,再等10年才能再次将代码从内容中分离出来。

如果您正在与其他开发人员(例如PHP或JSP)合作,那么您将在页面上进行转换或协作更容易,因为您不会拥有所有“讨厌”的ASP.NET事件和控制无处不在。

MVC的问题在于,即使对于“专家”来说,它也消耗了很多宝贵的时间,并且需要付出很大的努力。 不管背后的技术如何,企业都是靠“快速解决方案”这个基本的东西来驱动的。 WebForms是一种节省时间和金钱的RAD技术。 任何需要更多时间的东西都是企业所不能接受的。

  1. 适当的AJAX,例如JSONResults没有部分页面回发废话。
  2. 没有视图状态+1
  3. 没有重命名的HTML ID。
  4. 干净的HTML =没有膨胀,并在渲染XHTML或符合标准的页面有一个体面的镜头。
  5. 没有更多的生成AXD的JavaScript。

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

我没有看到在ASP.Net的MVC的任何优势。 10年前,微软提出了UIP(用户界面流程)作为MVC的答案。 这是一个失败。 我们做了一个大型项目(4名开发人员,2名设计师,1名测试人员)与UIP当时,这是一个纯粹的噩梦。

不要只为了炒作而跳入潮流。 上面列出的所有优点已经可以在Asp.Net中得到了( Asp.Net 4中有了更多的改进[ Asp.Net 4中的新特性 ])。

如果你的开发团队或者一个有Asp.Net的开发者家庭只是坚持使用它,并快速地制作漂亮的产品来满足你的客户(谁支付你的工作时间)。 MVC会吃掉你的宝贵时间,并产生与Asp.Net相同的结果:-)

弗朗西斯·沙纳汉,

  1. 你为什么称部分回发为“废话”? 这是Ajax的核心功能,在Atlas框架和Telerik等精彩的第三方控件中得到了很好的利用

  2. 对于视角状态,我同意你的看法。 但是,如果开发人员仔细禁用视图状态,这可以大大减少呈现的HTML的大小,从而使页面变得轻量级。

  3. 只有HTML服务器控件在ASP.NET Web Form模型中被重命名,而不是纯html控件。 无论如何,如果重命名完成,为什么这么担心呢? 我知道你想在客户端处理大量的JavaScript事件,但如果你巧妙地设计你的网页,你一定可以得到你想要的所有ID

  4. 即使ASP.NET Web窗体符合XHTML标准,我也没有看到任何膨胀。 这不是我们为什么需要MVC模式的理由

  5. 再一次,你为什么用AXD Javascript困扰? 为什么会伤害你? 这不是一个有效的理由

到目前为止,我是使用经典的ASP.NET Web窗体开发应用程序的粉丝。 例如:如果你想绑定一个下拉列表或gridview,你需要最多30分钟,不超过20行代码(当然最小)。 但在MVC的情况下,与开发人员讨论它是多么的痛苦。

MVC最大的缺点是我们要回到ASP的时代。 记住混合了服务器代码和HTML的意大利面代码? 哦,我的上帝,尝试阅读与JavaScript,HTML,JQuery,CSS,服务器标签混合的MVC aspx页面,什么不是….任何机构可以回答这个问题?

Web表单也从Telerik等第三方控制提供商的成熟和支持中获益。

在webforms中,您也可以手动呈现几乎整个html,除了viewstate,eventvalidation等类似的标签之外,可以使用PageAdapters来删除这些标签。 没有人强迫你使用GridView或其他服务器端控件的HTML渲染输出错误。

我会说MVC的最大优势是SPEED!

接下来是被迫分离的担忧。 但是它并不禁止你将整个BL和DAL逻辑放在Controller / Action中! 这只是视图的分离,也可以在webforms(例如MVP模式)中完成。 人们提到mvc的很多东西都可以通过webforms来完成,但是还需要额外的努力。
主要区别在于请求到达控制器,而不是查看,这两个层是分开的,没有像webforms(aspx +后面的代码)那样通过部分类连接,

我的2美分:

  • ASP.net表单非常适合快速应用程序的开发和快速增加业务价值。 我仍然将其用于大多数Intranet应用程序。
  • MVC对搜索引擎优化非常有用,因为您可以在更大程度上控制URL和HTML
  • MVC通常会产生更精简的页面 – 没有视图状态和更干净的HTML =快速加载时间
  • MVC容易缓存页面的部分。 -MVC很有趣,写: – 个人意见;-)

MVC可以让你在一个页面上有多个表单,一个我知道的小功能,但是非常方便!

另外我觉得MVC模式使得代码更容易维护,尤其是。 当你几个月后重新访问它。

MVC控制器:

  [HttpGet] public ActionResult DetailList(ImportDetailSearchModel model) { Data.ImportDataAccess ida = new Data.ImportDataAccess(); List<Data.ImportDetailData> data = ida.GetImportDetails(model.FileId, model.FailuresOnly); return PartialView("ImportSummaryDetailPartial", data); } 

MVC视图:

 <table class="sortable"> <thead> <tr><th>Unique Id</th><th class="left">Error Type</th><th class="left">Field</th><th class="left">Message</th><th class="left">State</th></tr> </thead> <tbody> @foreach (Data.ImportDetailData detail in Model) { <tr><th>@detail.UniqueID</th><th class="left">@detail.ErrorType</th><th class="left">@detail.FieldName</th><th class="left">@detail.Message</th><th class="left">@detail.ItemState</th></tr> } </tbody></table> 

那有多难? 没有ViewState,没有BS页面生命周期…只是纯粹高效的代码。

我可以看到小网站的唯一两个优点:6)启用SEO的REST风格的网址。 7)没有ViewState和PostBack事件(一般情况下性能更好)

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

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

我发现的主要好处是它使项目变成一个更可测试的结果。 这可以很容易地与webforms(MVP模式)完成,但需要开发人员有这个了解,许多不。

Webforms和MVC都是可行的工具,在不同的领域都很出色。

我个人主要使用Web表单来开发B2B / LOB应用程序。 但是我们总是用一个MVP模式来完成,我们可以在单元测试中实现95%以上的代码覆盖率。 这也让我们自动测试webcontrols属性的属性值通过视图暴露例如

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

)我不认为这个级别的测试在MVC中很容易实现,不会污染我的模型。

你不会不好意思使用“非回传控件”,而是想象如何把它们变成一个传统的asp.net环境。

这意味着,现代(免费使用)的JavaScript控制这样或这个或这个都可以使用,而不是试图适合一个圆形钉在方孔的感觉。

现代的JavaScript控件以及JSON请求可以使用MVC轻松处理。 在那里,我们可以使用很多其他机制将数据从一个行为发布到另一个行动。 这就是为什么我们喜欢MVC而不是Web表单。 我们也可以建立轻量级的页面。

我个人的意见是,使用ASP.Net MVC的最大的不利之处在于CODE BLOCKS混合了HTML
HTML地狱的开发人员维护它…