ASP.NET和ASP.NET MVC有什么区别?

21
我完全不懂ASP.NET,但我想学习它,以便构建一个最终将与云托管的SQL服务器通信的Web应用程序。然而,我找不到任何介绍ASP.NET Web应用程序和ASP.NET MVC2 Web应用程序(在Visual Studio 2010中)之间区别的信息,因此我不确定从哪里开始。有人可以给我一个简单的解释/概述,以便我可以决定要跟随哪个教程吗?
谢谢

6
互联网上有许多相关资源。我建议您进行谷歌搜索,并稍后带来更具体的问题。 - Claudio Redi
http://www.asp.net/mvc/tutorials/older-versions/overview/asp-net-mvc-overview - c0deNinja
1
http://www.asp.net/web-forms/videos/how-do-i/choosing-the-right-programming-model - Shyju
有点儿:https://dev59.com/V1PTa4cB1Zd3GeqPnN-K - nawfal
8个回答

35

ASP.NET是一个Web平台。它提供了一个层,位于IIS(Web服务器)之上,用于促进Web应用程序和Web服务的创建。ASP.NET MVC是专门用于构建Web应用程序的框架。它位于ASP.NET之上,并使用ASP.NET提供的API。ASP.NET Web Forms是另一个专门用于构建Web应用程序的框架,而新的ASP.NET Web API是构建Web服务的平台。


4
这是最好的答案。可悲的是,这是唯一讨论比较无意义的答案。ASP.NET MVC是ASP.NET的包装和扩展;这就像问汽车和发动机之间的区别一样。 - Chris Pratt

14

ASP.NET 在最基本的层面上提供了一种方式,让你可以在事件驱动的编程模型中使用 VB、C# 等语言,结合服务器端“控件”来提供通用的 HTML 标记。你可以定义网站的页面,插入控件,并提供程序化的引擎来使它们协同工作。

ASP.NET MVC 是一个应用程序框架,基于 Model-View-Controller(模型-视图-控制器)的架构模式。这是一种特定实现网站的“预设”框架,其中一个页面作为“控制器”,将请求分派到应用程序中的适当页面。其想法是将应用程序的各个元素进行“分区”,如业务规则、展示规则等等。

前者可以被视为一个“空白画布”,你可以根据自己设计的网站架构来实现它。而 MVC 提供了一种围绕预先确定的应用程序访问“模式”设计网站的机制。当然,它比这更加技术细节,但就此问题而言,这就是简略解释。

祝好运!


11

ASP.NET MVC2 web应用程序基于MVC模式,以便于进行单元测试,无需对asp.net管道进行模拟,因为这非常困难。在Code Behind中没有代码,以分离图形代码和功能代码。

使用MVC,您的应用程序与视图无关。您可以轻松替换创建视图的技术。

阅读本文非常有趣:http://msdn.microsoft.com/en-us/magazine/dd942833.aspx


1

与ASP.Net Web Forms类似,ASP.Net MVC是一种在Microsoft .net框架中构建Web应用程序的开发模型。它们之间的主要区别在于ASP.net MVC基于MVC架构。我们有三个独立的层 - 模型、视图控制器相互交互以呈现HTML输出。

主要区别:

  1. Web Forms主要采用事件驱动模型。其中我们有页面级事件(Page_load、pre render、page_init等)和控件级事件。而这在MVC中并不适用。请求生命周期相对较为复杂。(为什么复杂?因为请求必须经过所有事件才能呈现HTML输出)

  2. Web Forms基本上是一个包含UI控件和代码后台文件的aspx页面。所有页面级事件和控件级事件都在此处处理。在MVC中,视图、模型和控制器可以独立存在(清晰地分离关注点)。

  3. SOC使开发更加容易,因为我们可以为视图(设计HTML)和控制器(实现业务逻辑)分别指定开发人员。

  4. 由于其紧密耦合的特性,Web Forms不适合进行单元测试。在MVC中,我们可以在控制器级别和操作方法级别编写单元测试。在这里,我们可以模拟要传递给视图的数据,并对操作方法的不同属性(如视图名称、模型属性、空值检查等)进行断言。

  5. 在Web Forms中,我们具有状态完整行为。ASPX页面中的服务器控件使用视图状态来在请求响应周期中保留其状态。由于这些视图状态存储为页面内部的隐藏控件,并在请求和响应周期中发送,因此它们更加沉重。MVC的无视图状态和无状态特性使其更加轻量级。因此,在请求生命周期中,它们更加快速。


0

ASP.NET是一种2层应用程序,其中没有单独的数据库部分,而MVC是一种3层应用程序,其中视图和逻辑被分开。在ASP.NET中,为每个.aspx表单生成一个URL,但在MVC中,URL是基于控制器和路由器配置生成的。


0

5
请注意,仅链接的答案不被鼓励,Stack Overflow上的答案应该是解决方案搜索的终点(而不是引用的另一个中转站,往往会随着时间而过时)。请考虑在这里添加一个独立的摘要,将链接作为参考。 - kleopatra
我同意你的看法,@kleopatra。 - Vishal Sharma

0
如果你有VS10,可以制作一个小的ASP.NET(WebForms)应用程序和一个小的ASP.NET MVC 2应用程序,并且比较它们之间的区别。这是一个很好的学习方式。

0
ASP.NET是一个网络平台。它提供了一个位于Web服务器之上的层,方便创建Web应用程序和Web服务。ASP.NET是专门用于构建Web应用程序的框架。它依赖于ASP.NET并使用ASP.NET提供的API。ASP.NET Web Forms是另一个专门用于构建Web应用程序的框架,而新的ASP.NET Web API是构建Web服务的平台。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接