ASP.NET MVC - 如何解释它?

时间:2008-12-10 04:30:22

标签: asp.net-mvc

我正在尝试向过去8周一直在研究ASP.NET的学生(本科生)讲授ASP.NET MVC(我知道这听起来不是很多时间,但课程是每天4小时,每周5天,有实验室,测验,考试和摔跤)。

我还没有得到这个问题......但我知道它即将来临......

  

我什么时候使用MVC代替ASP?

我对ASP MVC没有任何实际经验,我在网上找不到任何明确的答案。诸如“......网络是无状态的,ASP MVC是一个更接近的匹配等等”的论点对他们来说并不重要。他们开始注意到ASP有很多控件似乎比MVC简化了他们的标记。

我正在尝试诚实地旋转,任何反馈都会非常感激! TIA

6 个答案:

答案 0 :(得分:6)

无国籍是一个很好的解释,正如成员已经强调的那样。 除此之外,向学生提出以下问题?

如果他们必须使用ASP.NET(没有MVC)执行以下操作,它会有多容易吗?

  1. 测试您的观点
  2. 模拟Http对象。
  3. Viewstate减少(按设计)(
  4. 替换.aspx的轻量级视图引擎。
  5. 彻底分离关注点。
  6. 清除HTML
  7. 等。等。
  8. 现在在上面的上下文中解释asp.net mvc。可能还有更多。 Atleast我认为他们会明白这一点,认为这可能并不适用于所有项目,但如果我们只是从中获益,那会有什么危害。

答案 1 :(得分:4)

对我来说,MVC方法是与ASP Forms API截然不同的范例。我认为“无国籍”的想法实际上是用一个词来解释一个非常广泛的主题的好方法。

我看到的一个主要优点是MVC框架可以很好地控制页面的设计和输出。对于小型项目,这可能不是最佳用途,但对于大型项目,它可以很好地扩展,因为您可以做出(个人)我发现更好的不同架构选择,例如MVC框架分离逻辑的方式从视角来看。

此外,如果您正在设计一个拥有大量Javascript的网站,那么您在MVC框架中获得的输出控制可能非常有用,因为您不必过多担心ID和其他标记可能如何像通常在ASP Forms框架中那样呈现。

MVC框架实际上是一种完全不同的网站设计方式。就个人而言,我认为这对大型项目更有利,但我也从网络语言开始,其中MVC是一个更受欢迎的设计选择。

那只是我的2美分。

答案 2 :(得分:4)

我一直认为ASP.NET MVC框架因其设计模式而名声不好。

问题应该是:

我什么时候会在ASP.NET Web表单上使用ASP.NET MVC Framework?

开发者体验

a)ASP.NET Web Forms试图从开发人员中抽象出HTTP的无状态特性。 GUI元素和/或数据的状态存储在Viewstate / Session中。 Everyone Form对自身进行回发,基本上模仿了WinForm事件驱动设计的行为。

b)HTML GUI元素进一步抽象为可以重复使用的控件,从第三方供应商处购买。这有助于开发人员将HTML应用程序粘合在一起,而无需使用JavaScript和HTML / HTTP知识。基本上类似于开发VB / WinForms的方式

c)您可以很好地在ASP.NET webforms中实现MVC / MVP模式。查看模式和实践Web客户端软件工厂,看看他们是如何做到的。

d)使用WebForms进行开发通常会根据服务器上的用户反馈更改HTML(视图)。大多数事件(用户单击按钮,编辑字段)在服务器上以连续的回发循环处理,执行称为ASP.NET页面生命周期的任务。

VS

浏览器控制的视图(不知道还有什么可以调用它)。基于用户输入的HTML的所有更改都在浏览器中处理。您将使用Javascript操纵DOM。

注意:我的理由是ASP.NET MVC很可能是由基本的HTML + Ajax驱动的

我将如何亲自在他们之间做出选择(从未使用过MVC,只是阅读它)

1)如果我要使用Ajax,Jquery,EXT JS类型库构建一个纯无状态前端,ASP.NET MVC似乎更合适。虽然您可以在ASP.NET Webforms中构建它,但由于您没有利用Postback模型和服务器控件,因此它似乎毫无意义。

2)如果我被要求构建一个新的基本Web应用程序,我会坚持使用ASP.NET Webforms,因为我已经熟悉它并且知道整个页面的生命周期。

3)如果我被要求构建一个Web 2.0(讨厌该术语)以获得下一代用户体验,我可能会使用ASP.NET MVC,并使用JQuery / ASP.NET Ajax客户端控件。

4)许多公司已经建立了一套可靠的WebForm控件来使用。以纯无状态的方式重建它们将是昂贵的:)

答案 3 :(得分:1)

对于在Winforms中有经验(和痛苦)的人来说,最大的区别就是Viewstate。表单上的控件状态保存在客户端,浏览器中,并针对每个请求发送到服务器。

如果您使用Javascript,则更容易在浏览器端进行更改,而服务器端则可以轻松地查看整个表单,而无需重新创建控件绑定。

除了MVC提供的所有好东西 - 视图/代码的分离,可测试性 - 这对我来说是转向MVC的关键点。

答案 4 :(得分:1)

除了已列出的所有其他优秀回复。 Webforms是一种远离HTML的抽象

当你想要一个html数据表时,你在页面上放了一个“gridview”控件 - 你最终得到的是“gridview”html,很可能不是完全你在追求什么

鞋子在90%的时间都适合,但很多时候,特别是当事物超出控制装置不适合的基本位置时。使用Webforms通常意味着您无法完全控制呈现给浏览器的最终输出。

您当然可以扩展或编写自己的网格控件。但是你不想只想写你想要的HTML吗?

根据我的经验,项目变得越来越复杂,并且UI变得越来越复杂,最终你越来越频繁地对抗webforms。

答案 5 :(得分:1)