使用 ASP.Net MVC 相对于 Web 表单的最大优势

使用一种方法比使用另一种方法有什么好处?

282950 次浏览

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

ASP.net MVC的主要优点是:

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

  2. 提供洁净关注点分离。

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

  4. 易于与 JavaScript 框架集成。

  5. 遵循 Web 的无状态特性设计。

  6. 支持 SEO 的 RESTful url。

  7. 没有 ViewState 和 PostBack 事件

ASP.net 网上表格的主要优点是:

  1. 它提供 RAD开发

  2. 对于那些来自 winform 开发的开发人员来说,简单的开发模型。

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

在 webform 中,你也可以手工渲染几乎完整的 html,除了像 viewstate、 eventvalidation 和类似的一些标签,这些标签可以用 PageAdapter 删除。没有人强迫您使用 GridView 或其他具有不良 html 呈现输出的服务器端控件。

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

其次是强制分离关系。但是它并不禁止你把整个 BL 和 DAL 逻辑放在 Controller/Action 中!这只是视图的分离,也可以在 webform 中完成(例如 MVP 模式)。人们为 mvc 提到的很多事情都可以在 webform 中完成,但需要一些额外的工作。
主要区别在于,请求来自控制器,而不是视图,而且这两个层是分离的,不像 webform (后面是 aspx + 代码)那样通过部分类连接

如果你和其他开发人员一起工作,比如 PHP 或者 JSP (我猜是 Rails) ,那么你在转换页面或者在页面上进行协作就会容易得多,因为你不会到处都是那些“讨厌的”ASP.NET 事件和控件。

你不会再为使用“非 post-back 控件”而感到不舒服了,并且你可以考虑如何把它们放到传统的 asp.net 环境中。

这意味着,现代(免费使用)的 javascript 控件,如 这个这个这个,都可以使用,而不必试图适应一个圆钉在一个方孔的感觉。

MVC 可以让你在一个页面上有多个表单,我知道这是一个很小的特性,但是很方便!

而且我觉得 MVC 模式使代码更容易维护,尤其是。当你几个月后再来看它的时候。

我的建议是:

  • Net 表单对于快速开发应用程序和快速增加业务价值非常有用。我仍然在大多数内部网应用程序中使用它。
  • 当你在更大程度上控制 URL 和 HTML 时,MVC 对于搜索引擎优化来说是很棒的
  • MVC 通常产生一个更简洁的页面-没有视图状态和更简洁的 HTML = 快速加载时间
  • MVC 容易缓存页面的某些部分。 - MVC 写起来很有趣-个人观点 -)

我认为小型网站的唯一两个优势是: 6)支持 SEO 的 RESTful URL。 7)没有 ViewState 和 PostBack 事件(通常性能更好)

测试小站点不是问题,当一个站点被正确地编码时,设计优势也不是问题,MVC 在许多方面混淆了问题,使得更改变得更加困难。我还在考虑这些优势是否值得。

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

我发现的主要好处是,它迫使项目成为一个更可测试的结构。 这也可以很容易地用 webform (MVP 模式)来实现,但是需要开发人员对此有所了解,很多人并没有这样做。

Webform 和 MVC 都是可行的工具,都擅长于不同的领域。

我个人使用 Web 表单,因为我们主要开发 B2B/LOB 应用程序。 但是我们总是使用一个 MVP 模式来完成,这样我们的单元测试就可以达到95% 以上的代码覆盖率。 这也允许我们自动测试 webcontrol 的属性 财产价值是通过视图暴露出来的

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

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

  1. 正确的 AJAX,例如 JSONResults no 部分页面回发的废话。
  2. 无视状态 + 1
  3. 不重命名 HTML ID。
  4. 干净的 HTML = 没有膨胀,在呈现 XHTML 或标准方面有一个不错的机会 符合规定的页面。
  5. 不再生成 AXD javascript。

弗朗西斯 · 沙纳汉,

  1. 你为什么称部分回发为“无意义的”?这是 Ajax 的核心特性,已经在 Atlas 框架和像 Telerik 这样出色的第三方控件中得到了很好的利用

  2. 我同意你关于观点的观点。但是,如果开发人员小心地禁用视图状态,这可以大大减少 HTML 的大小,从而呈现的页面变得轻量级。

  3. 只有 HTML Server 控件在 ASP.NET Web Form 模型中重命名,而不是纯 HTML 控件。不管是什么,如果重命名完成了,你为什么这么担心?我知道你想在客户端处理大量的 javascript 事件,但是如果你聪明地设计你的网页,你肯定可以得到所有你想要的 id

  4. 即使 ASP.NET Web 表单也符合 XHTML 标准,我没有看到任何膨胀。这并不能解释为什么我们需要 MVC 模式

  5. 同样,你为什么要为 AXD Javascript 烦恼? 为什么它会伤害你? 这又不是一个有效的理由

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

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

NET Web Forms 和 MVC 是微软开发的两个 Web 框架,它们都是不错的选择。这两个网络框架都不会被另一个所取代,也没有计划将它们“合并”成一个单一的框架。持续的支持和开发是由微软平行完成的,两者都不会“消失”。

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

NET 网上表格:

  • 发展支持国家 给人一种网络应用程序知道用户在做什么的错觉,类似于 Windows 应用程序。也就是说,让“向导”功能更容易实现。Web 表单在向开发人员隐藏许多复杂性方面做得很好。
  • 快速应用程式发展 •直接“跳进去”并开始发布网络表单的能力。这是有争议的一些 MVC 社区,但由微软推动。最后,这取决于开发人员的专业知识水平以及他们对什么感到舒适。对于经验不足的开发人员来说,Web 表单模型可能缺乏学习曲线。
  • 更大的控制工具箱 NET Web Forms 提供了一个更强大更健壮的工具箱(Web 控件) ,而 MVC 提供了一个更原始的控件集,更依赖于通过 jQuery (Javascript)实现的富客户端控件。
  • 成熟 自2002年以来,有大量关于问题、问题等方面的信息。提供更多的第三方控件-需要考虑您现有的工具包。

NET MVC:

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

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

MVC 的问题在于,即使对于“专家”来说,它也会占用大量宝贵的时间,并且需要大量的努力。企业的驱动力是基本的“快速解决方案”,而不管其背后的技术是什么。WebForms 是一种节省时间和金钱的 RAD 技术。任何需要更多时间的事情都是企业所不能接受的。

任何一个年纪足够大的人,只要记得经典的 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 进行开发,PHP 对于这种开发有一个更加成熟的环境。如果 ASP.NET 有这么多问题,那么为什么不解决这些问题呢?

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

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

我没有看到任何 MVC 优于 ASP.Net 的地方。10年前,微软提出了 UIP (用户界面处理)作为 MVC 的解决方案。失败了。当时我们用 UIP 做了一个大项目(4个开发人员,2个设计人员,1个测试人员) ,那简直是一场噩梦。

不要为了炒作而随波逐流。上面列出的所有优势在 Asp 中都已经可用。Net (在 Asp 中进行了更大的调整[ Asp.Net 4中的新特性]。网4)。

如果您的开发团队或单个开发人员家庭使用 ASP。网络只是坚持它,快速制造漂亮的产品,以满足你的客户(谁支付你的工作时间)。MVC 会消耗你宝贵的时间,并产生与 Asp 相同的结果。网址: -)

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 Page 生命周期... 只有纯粹的高效代码。

现代的 javascript 控件以及 JSON 请求可以通过 MVC 轻松处理。在这里,我们可以使用许多其他机制来将数据从一个操作发布到另一个操作。这就是为什么我们更喜欢 MVC 而不是 web 表单。我们也可以建立轻量级的网页。

我个人认为, 使用 ASP.Net MVC 的最大缺点是 CODE BLOCKSHTML的混合..。
Html 地狱为开发人员谁维护它..。