谢谢
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服务的平台。
ASP.NET 在最基本的层面上提供了一种方式,让你可以在事件驱动的编程模型中使用 VB、C# 等语言,结合服务器端“控件”来提供通用的 HTML 标记。你可以定义网站的页面,插入控件,并提供程序化的引擎来使它们协同工作。
ASP.NET MVC 是一个应用程序框架,基于 Model-View-Controller(模型-视图-控制器)的架构模式。这是一种特定实现网站的“预设”框架,其中一个页面作为“控制器”,将请求分派到应用程序中的适当页面。其想法是将应用程序的各个元素进行“分区”,如业务规则、展示规则等等。
前者可以被视为一个“空白画布”,你可以根据自己设计的网站架构来实现它。而 MVC 提供了一种围绕预先确定的应用程序访问“模式”设计网站的机制。当然,它比这更加技术细节,但就此问题而言,这就是简略解释。
祝好运!
ASP.NET MVC2 web应用程序基于MVC模式,以便于进行单元测试,无需对asp.net管道进行模拟,因为这非常困难。在Code Behind中没有代码,以分离图形代码和功能代码。
使用MVC,您的应用程序与视图无关。您可以轻松替换创建视图的技术。
阅读本文非常有趣:http://msdn.microsoft.com/en-us/magazine/dd942833.aspx
与ASP.Net Web Forms类似,ASP.Net MVC是一种在Microsoft .net框架中构建Web应用程序的开发模型。它们之间的主要区别在于ASP.net MVC基于MVC架构。我们有三个独立的层 - 模型、视图控制器相互交互以呈现HTML输出。
主要区别:
Web Forms主要采用事件驱动模型。其中我们有页面级事件(Page_load、pre render、page_init等)和控件级事件。而这在MVC中并不适用。请求生命周期相对较为复杂。(为什么复杂?因为请求必须经过所有事件才能呈现HTML输出)
Web Forms基本上是一个包含UI控件和代码后台文件的aspx页面。所有页面级事件和控件级事件都在此处处理。在MVC中,视图、模型和控制器可以独立存在(清晰地分离关注点)。
SOC使开发更加容易,因为我们可以为视图(设计HTML)和控制器(实现业务逻辑)分别指定开发人员。
由于其紧密耦合的特性,Web Forms不适合进行单元测试。在MVC中,我们可以在控制器级别和操作方法级别编写单元测试。在这里,我们可以模拟要传递给视图的数据,并对操作方法的不同属性(如视图名称、模型属性、空值检查等)进行断言。
在Web Forms中,我们具有状态完整行为。ASPX页面中的服务器控件使用视图状态来在请求响应周期中保留其状态。由于这些视图状态存储为页面内部的隐藏控件,并在请求和响应周期中发送,因此它们更加沉重。MVC的无视图状态和无状态特性使其更加轻量级。因此,在请求生命周期中,它们更加快速。
ASP.NET是一种2层应用程序,其中没有单独的数据库部分,而MVC是一种3层应用程序,其中视图和逻辑被分开。在ASP.NET中,为每个.aspx
表单生成一个URL,但在MVC中,URL是基于控制器和路由器配置生成的。