2011-10-06 68 views
3

可能重复:
Biggest advantage to using ASP.Net MVC vs web forms优势和ASP.NET Web表单Vs的ASP.NET MVC的缺点,一些点

我是专门阅读本文件

http://msdn.microsoft.com/en-us/library/dd381412(VS.98).aspx 

优点和缺点:

优势的基于MVC的Web应用程序

ASP.NET MVC框架提供了以下优点:

这使得它更容易通过将应用划分为模型,视图管理复杂性,以及控制器。

它不使用视图状态或基于服务器的表单。这使得MVC框架非常适合想要完全控制应用程序行为的开发人员。

它使用前端控制器模式,通过单个控制器处理Web应用程序请求。这使您可以设计支持丰富的路由基础结构的应用程序。有关更多信息,请参阅前端控制器。

它为测试驱动开发(TDD)提供了更好的支持。

它适用于大型开发团队支持的Web应用程序以及需要高度控制应用程序行为的Web设计人员。

它支持的事件模型,在HTTP保持状​​态,有利于线的:基于窗体的Web的Web应用程序

基于表单的Web框架提供了以下优点

优势 - 商业Web应用程序开发。基于Web窗体的应用程序提供数百个服务器控件支持的数十个事件。

它使用页面控制器模式,为单个页面添加功能。有关更多信息,请参阅页面控制器。

它在基于服务器的表单上使用视图状态,这可以使管理状态信息更容易。

对于希望利用大量可用于快速应用程序开发的组件的小型Web开发人员和设计人员来说,它非常适用。通常,应用程序开发并不复杂,因为组件(页面类,控件等)紧密集成,并且通常比MVC模型需要的代码少。


因为我对MVC,但不是在Web表单一个新手,我有这方面的优点和缺点如下:?问题

  1. MVC没有viewstate?那么如何将数据保存在当前页面?这似乎是一个非常大的缺点。

  2. Webform表示,提供了一个广泛的事件模型与大量的控件,没有MVC支持控件和事件作为一个正常的webform?

假设我是两个专家吗?为什么我会选择一个或另一个? 到目前为止,关于MVC的唯一好处就是可测试性,因为webforms中的快速应用程序开发以多种方式赢得MVC。(只是我的观点)

现在谈论RazonEngine,它似乎要回到旧的ASP,你不能使用服务器端控件?这对我有什么好处?

+1

@Will你是在最后,它不是一个确切的重复非常错误的,如果你花时间阅读的问题,也有在底部非常具体的问题。请重新打开它。 –

+1

你是对的,它不是一个确切的副本;它不具有建设性。这种问题在这里不再可以接受。我没有直接关闭它,而是将它作为复制到MVC与vanilla ASP.NET的优缺点之一的其他问题之一。如果您对此有任何进一步的问题,请转至[meta]。我会建议在询问任何事情之前先查询相关问题。 – Will

+0

耻辱的投票下来没有评论,你的耻辱 –

回答

10

1)MVC没有视图状态?那么如何将数据保存在当前页面?这似乎是一个非常大的缺点。

为什么要在页面中保存东西?这就是数据库应该做的事情。保存数据。在页面中,您只需使用隐藏字段即可从最初存储的任何位置重新获取数据。而对于可以改变的数据,你有表单输入字段,所以它会在那里。

2)网络表单说,提供大量的控制,那并不MVC支持控制和事件作为一个正常的Web窗体广泛的事件模型?

不,MVC不支持控件和事件。它支持模型,控制器和视图。

假设我是两方面的专家?为什么我会选择一个或另一个?到目前为止,关于MVC在我看来唯一的好处是可测试性,因为webforms中的快速应用程序开发以多种方式赢得MVC。

这是一个没有客观答案的主观问题。我可以给你的答案是:它将取决于上下文。我同意RAD在WebForms中胜出,但是你必须记住的是,这不是开发最成本的应用程序。这是它的支持和维护。因此,如果您的应用程序的编写速度很快,那么您的应用程序的确很快就会发布,但如果您没有正确设计它的可扩展性,那么这个快速应用程序开发就会慢慢变成一场噩梦,直到​​您需要重写它为止因为它要花费你很多才能继续支持它。

现在谈论的RazonEngine,它似乎要回到旧的 ASP,你不能使用服务器端控件? 我的优势如何?

您完全控制了标记,您的页面不再受无用的ViewStates污染,最后您的标记验证。如果你想在ASP.NET MVC中重用一些视图部分,你可以使用部分视图。

以下是我可以给你的建议。由于您已经是WebForms的专家,在学习ASP.NET MVC时,这对您会有很大的好处。所以学习它,通过学习它,你可能会开始亲眼看到不同的优势,并能够自己回答这两个问题中哪一个更适合你的问题。在这样

+0

使用asp.net webforms的每个人都使用viewstate,实际上你甚至不知道它使用viewstate,因为在所有服务器控件中默认启用viewstate。 –

+0

关于最后一个答案,它是否使应用程序更快? –

+1

@Luis搜索,再次http://stackoverflow.com/questions/221944/is-there-a-performance-difference-between-asp-net-mvc-and-web-forms –

5

ASP.NET MVC应用程序的手你回控制你的应用作品和它符合HTTP/HTML的“天然”的模式。

WebForms是Web应用程序编程的抽象;设想将简化Visual Basic程序员的过渡,这些程序员是.NET推出时的主要目标。麻烦的是,这是一个'漏洞抽象'。它使用封面下的“技巧”,使它看起来像对VB的基于事件的模型那样简单,比如视图状态和回传。这个(以及所有那些'泄漏抽象')的麻烦是,虽然基本的东西很容易,但是一旦你尝试去做一些不适合抽象的东西,它就会变得更加复杂。

如果您的应用程序是微不足道的和抽象的WebForms始终为你工作,随时能坚持下来。微软一直很体贴,继续支持它。

但如果你的应用程序在所有复杂的或复杂的(因为越来越多的这些天),我建议以开放的心态看MVC。

作为测试,采取由非微软的背景web开发人员,让他们松两个WebForms和MVC,看看他们是用更有效率。

+2

downvote没有评论?耻辱对你... –

+0

我同意,有些人真的应该为自己感到羞愧,他们甚至没有读完整个问题和答案,他们只是认为它可能会重复并关闭它。 –

4

ViewState是一个诅咒,对于不了解HTTP是一种无状态协议的人来说,它是一个拐杖,并试图用一种黑客解决方案来维持跨请求状态,导致严重失败。

  • 多个客户端之间的并发消失在窗口之外。
  • 它被存储为隐藏字段中的大量数据,导致页面加载大小增加。
  • 它完全依赖于POST方法,因此它会在HTML中导航。

简单地说,它不是用户友好的。

而且这些控件的标记也很糟糕。


关于UserControls:您可以使用Partials来模拟Controls的一些功能。

事件:您通过控制器中的操作对事件建模。


火焰战争开始!

+0

这是一个非常有用的答案+1。你认为主持人关闭非常有帮助的问题和答案怎么样? -1表示该行为。 –

+1

@路易斯:我不是关闭它的版主。对不起 –

+0

能否请你解释我最后一部分的答案:它完全依赖于POST方法,因此它会在HTML中导航。我真的不明白这一点。 @Daryl Teo –