webform和mvc的区别,javaweb mvc是什么
webform和mvc的区别博客园
可以说各有优势:MVC纵向切割了开发过程中的代码,从服务器到浏览器层层分离,层次之间耦合度很低,因为它是顺着底层的开发脉络进行封装,所以有利于开发者对整个程序过程流转的理解。但是MVC有一个非常大的缺点,这个缺点是和整个软件发展思路相背离的,那就是它无法封装、无法封装所以无法被重用。有谁看到过mvc下面的组件?有的只是一个个现成的案例,然后拿来修改。因为一个组件肯定牵涉到控制和显示,但是mvc的开发这两个层次是分离的。MVC只适合轻量级的开发,桌面开发是极少用到mvc模式的。然而web开发恰恰就是轻量级,至今所有的web开发都是轻量级的,因为网络硬件条件的限制,不需要也无法做到非常复杂的逻辑。这也是MVC非常非常适合web开发的原因。
WebForm是微软前面一套web开发的机制。它横向切割了代码,控制和显示是封装在一起的。它从开发者思维逻辑上而不是实际情况上对代码进行封装,开发webform容易上手的原因也就在此了,但这个不利于开发者对底层程序流转机制的理解。WebForm中view和controller是放在一起的,WebForm一出现后,随之而来的是大量的组件诞生,这是mvc模式下看不到的。微软的经验之一是硬件发展很迅速。代码的封装是靠牺牲运行效率来提高开发效率,牺牲的运行效率通过提高硬件性能来解决。但微软在webform上犯了经验主义的错误,这个经验不适合网络硬件,网络硬件要考虑兼容性而且是国家的基础设施,更新的灵活性远比单机要差。大量的组件因为硬件的瓶颈无法给WebForm带来什么优势。在发展了几年webform后,微软觉得这样下去不行,等到网络硬件发展起来不知道到猴年马月了,所以就抄了一下成熟的mvc,通过Entity Framework做数据库和对象的映射,很明显,它是为了充当mvc中那个Model。通过mvc来控制和展示。
webform生产关系是比mvc先进的,但是它不适合现在的网络设施生产力,如果要适合说不定要10年后。webform和mvc很好的印证了生产关系必须适合生产力,即使强大如微软也无法改变客观规律。
ASP.NET MVC 与 ASP.NET Web Form 的介绍与区别
是微软提供的以MVC模式为基础的ASP.NET Web应用程序开发框架。
MVC 模式分别为:
Model:领域模型 处理应用程序数据逻辑部分,获取数据,处理数据
View:视图 用于处理实际返回给用户的页面
Controller:控制器 通过Model 读取处理数据,通过View 将结果返回。
在 ASP.NET 框架下的一种基于事件模型的开发模式,有开发速度快,容易上手等特点。
ASP.NET 作为微软的Web程序开发框架,MVC与Webform 是不同时期的开发模式,
Webform 优点 :可以基于事件模型开发,类似Winform中,所有请求使用ViewState和页面生命周期来维持控件状态,同时控件的开发,加快了开发速度,整体Webform的内部封装比较高。
Webform 缺点 : 正是由于封装程度高,Webform非常难扩展,开发人员便利了解内部运行原理,不容易被测试。同时控件的ViewState 增加了网站服务器的传输量,一定程度上影响程序的效率。
MVC 优点 :易于扩展,易于单元测试,易于测试驱动开发。MVC中的一个路由的存在,可以做一些链接伪静态的处理。
总结 : MVC 不是取代了Webform,两者适用于不同的开发环境下,都是简单三层中的表示层的开发框架,都是ASP.NET 框架下的开发模式。
1 页面处理流程:
MCV的页面处理流程依旧在ASP.NET原有上有扩展,MVC通过特定的IHttpModule和IHttpHandler 来处理请求,与Webform不同的,Webform中每个aspx页面都会有是一个IHttphandler实例。MVC中 Controller都比是IHttpHandler的子类实例,Action是在MvcHandler中通过MVC的工厂反射执行的,MvcHandler可以自定义。
2 上下文 请求对象: Context Session Request Response Cookie 基本一致
3 配置文件基本一致,但不通用
4 部分服务器控件并不是不可以在MVC中使用
5 在ASP.NET MVC中,包括Membership,healthMonitoring,httpModule,trace在内的内置和自定义的组件模块仍然是继续可用。
附图 :MVC 原理图和介绍
1 客户端发出请求给IIS(mvc中为集成模式),执行HttpRunTime的ProcessRequest方法
5 第八个管道事件
6 第十一,十二个管道事件
webform和mvc的区别 知乎
用过这俩,不能说那个复杂那个不复杂,应该认为二者对实现目标有不同的路径,极限的讲,他们可以互相代替,但是,有的路远有的路近,类似两条路都能上山,只不过一条路好走另外一条路风景好。
WebAPI针对数据无状态的通讯可以说一条近路,用起来轻松,不复杂。但是如果你用WebAPI实现页面生成和通讯那您慢慢欣赏景色吧,是条远路。
MVC生成页面等等,非常方便容易,不复杂,但是如果实现数据通信也是没问题的,则不如WebAPI灵活,如遇到特殊需求则可能需要复杂的一些操作。