关于Mvc与WebForm的优缺点在网上的评论可谓不胜枚举,但脱离了我们的项目来谈这些意义就不大了。以我们这次改版来看,WebForm的优势有以下几点:

一,可以使用<#include>,css、html与js可以实现跨页面乃至夸项目的重用,Mvc没有发现此类功能;

二,可以精确的调用用户控件中的属性、字段、函数并可以获得相应的返回值,Mvc也未发现此类功能;

三,可以方便的将公共或保护性字段属性函数等应用到aspx页面上,Mvc无法直接调用控制其中的相应字段属性等。

针对以上WebForm的有点或Mvc的确点,我们在改版商铺写字楼时遵循了下面的几个规范予以弥补:

一,使用局部视图来实现html的重用;

二,对控制器中所用到的属性字段函数进行合理的封装,如将原有的变量集成到一个大的类中作为一个强类型视图传递的对象传给相应的视图,实现在视图中的方便使用。在这里对于类的划分需要尽可能的把相关性比较高的放到一块儿,优先采用类的组合而非继承,若需要放到视图对象中的字段是一个较大的复合类,如经纪人实体或房源实体,建议单独存放在ViewBag中。这些做法的目的比一方面希望这些变量使用起来更加方便,另一方面减小在视图中调用局部视图或函数的时候传递参数的颗粒度,也就提高了这些局部视图或函数的重用性,如用经纪人实体做参数的函数我们既可以在商铺写字楼中用,也可以用在普通的经纪人详情页中使用,而视图对象做参数无法实现这点;

三,将代码的重用单位放到对象和函数上,原则上不在控制器中创建不直接向浏览器做交代的函数,而是放在底层以方便重用。

在遵循了上述一些规范之后方才发现Mvc还是有些优点的:

一,优秀的Razor引擎使得在视图中使用C#代码更加方便流畅;

二,单个视图可以对应多个控制器,提高了代码的重用;

三,在主视图的ViewBag或ViewData中存储的对象可以在局部视图(仅限通过RenderPartial方式渲染的视图)或母版页中使用;

四,可以在视图中以函数方式重用普通的html代码到局部视图中且可以向局部视图中传递一个对象;

五,视图与控制器的分界更加清晰,局部视图的重用可以直接在视图中予以调用,而在WebForm中用户控件在后台代码中由于需要传参绑定而无法放在底层实现更高的重用。

除了上面的异同,还有一些在WebForm与Mvc中名字相同的对象,这些对象虽然名字相同,但是类型已经不是一个类型了,如:

         //
// 摘要:
// 为当前 HTTP 请求获取 System.Web.HttpRequestBase 对象。
//
// 返回结果:
// 请求对象。
public HttpRequestBase Request { get; }
//
// 摘要:
// 为当前 HTTP 响应获取 System.Web.HttpResponseBase 对象。
//
// 返回结果:
// 响应对象。
public HttpResponseBase Response { get; }

Mvc中的http对象

         //
// 摘要:
// 获取请求的页的 System.Web.HttpRequest 对象。
//
// 返回结果:
// 当前与该页关联的 System.Web.HttpRequest。
//
// 异常:
// System.Web.HttpException:
// System.Web.HttpRequest 对象不可用时发生。
[Browsable(false)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public HttpRequest Request { get; }
//
// 摘要:
// 获取与该 System.Web.UI.Page 对象关联的 System.Web.HttpResponse 对象。该对象使您得以将 HTTP 响应数据发送到客户端,并包含有关该响应的信息。
//
// 返回结果:
// 当前与该页关联的 System.Web.HttpResponse。
//
// 异常:
// System.Web.HttpException:
// System.Web.HttpResponse 对象不可用。
[Browsable(false)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public HttpResponse Response { get; }

WebForm中的http对象

由于类型不同,在Mvc中一些特性不再灵验,如在controller里面不能识别Response.End()页面会继续运行下面的代码,可以用return null来代替。另外也添加了一些好玩的属性函数如Request.IsAjaxRequest(),该函数可以用来判断是否异步访问。但毕竟相应对象的类型依然共用一个基类,它们的大多数属性函数用法依然相同。目前对相应对象的各种新的用法了解还是很有限,需要在今后的工作中加以总结,以最大化的发挥出框架的优势。

就现在的改版来说,我们做的尚不够好,但依然可以发现,在MVC中我们用的代码更少,重用的地方更多了。其实无论是MVC还是WebForm只要能够合理的使用都可以获得较高的效率及可维护性,要想提高代码的可维护性及性能还是需要我们定制并完善统一的标准,同时也要提高我们的个人水平。

Mvc与WebForm优缺点及Mvc的使用的更多相关文章

  1. MVC和WebForm区别

    WebForm的理解 1. WebForm概念 ASP.NETWebform提供了一个类似于Winform的事件响应GUI模型(event-drivenGUI),隐藏了HTTP.HTML.JavaSc ...

  2. asp.net MVC 和 webForm的区别

    asp.net MVC请求过程 ASP.NET MVC框架只是给开发者提供了开发web应用程序的一种选择,并不是要取代Webform这两种技术各有优缺点,开发者需要根据实际情况,选择对应的技术有时候, ...

  3. MVC与WebForm的区别

    在初步了解MVC后,发现很多人对于MVC和三层架构开发概念上会有很大的混淆,所以把这两天的学习笔记整理一下,分享给自己的同学们.同时也做一个小Demo,让没有接触过MVC开发的同学,能对MVC有一个简 ...

  4. MVC和WebForm 中国省市区三级联动

    MVC和WebForm是微软B/S端的两条腿,两种不同的设计理念,相对来说MVC更优于WebForm对于大数据的交互,因为WebForm是同一时间传输所有数据,而MVC它只是传输所用到的数据,更精确, ...

  5. (读书笔记)Asp.net Mvc 与WebForm 混合开发

    根据项目实际需求,有时候会想在项目中实现Asp.net Mvc与Webform 混合开发,比如前台框架用MVC,后台框架用WebForm.其实要是实现也很简单,如下: (1)在MVC 中使用Webfo ...

  6. ASP.NET MVC与WebForm区别

    [转贴一] 使用ASP.NET MVC框架,创建默认项目,第一直观感觉就是地址都是Rewrite过的.对源码和配置文件稍加分析不难看出,MVC使用了httpModules来拦截地址请求,具体用到了Sy ...

  7. MVC与WebForm的一些区别

    MVC与WebForm的一些区别 它们都是ASP.NET WEB开发的两种方式 .但是他们也是有一些不同.做个小结. 1.MVC是没有服务器端控件这么一说的,也就是没有viewstate,也就不会产生 ...

  8. MVC与WebForm最大的区别

    原文地址:http://www.cnblogs.com/birdshover/archive/2009/08/24/1552614.html 使用ASP.NET MVC框架,创建默认项目,第一直观感觉 ...

  9. MVC与WebForm的简单的比较

    MVC与WebForm的简单的比较 ASP 强制程序员将业务逻辑和展示页放到一个文件中 WebForm 允许程序员将业务逻辑与页面展示分开到不同的文件中,并且提供强大的开发平台来写  业务逻辑代码  ...

随机推荐

  1. weblogic配置数据源

    启动weblogic 管理服务器,使用管理用户登录weblogic管理控制台   打开管理控制台后,在左侧的树形域结构中,选择服务->数据源. 在右侧的窗口中,选择 新建->一般数据源   ...

  2. Sql Server系列:Transact-SQL概述

    结构化查询语言(Structure Query Language,SQL)是对数据库进行查询和修改的语言.Transact-SQL是SQL的一种实现形式,它包含了标准的SQL语言部分. 根据完成的具体 ...

  3. IOS数据存储之归档/解档

    前言: 前天学习了NSUserDefaults,我们知道NSUserDefaults不能保存自定义对象,所以我们今天来认识一下归档(NSKeyedArchiver)和解档(NSKeyedUnarchi ...

  4. CSS样式之优先级

    说到到css的样式优先级,今天偶再来回顾下,从css的样式优先级可分为两个部分: 1.从CSS代码放置的位置看权重优先级:     内联样式 > 内部嵌入样式 >外联样式 2.从样式选择器 ...

  5. MySQL分区表的管理~1

    一.如何管理RANGE和LIST分区 以该分区表为例 CREATE TABLE members ( id INT, fname ), lname ), dob DATE ) PARTITION BY ...

  6. Java内存模型深度解析:重排序 --转

    原文地址:http://www.codeceo.com/article/java-memeory-2.html 数据依赖性 如果两个操作访问同一个变量,且这两个操作中有一个为写操作,此时这两个操作之间 ...

  7. C#/VB.NET 向PowerPoint文档插入视频

    如今,Microsoft Office PowerPoint在我们日常生活中的应用已经很广泛了,利用Microsoft Office PowerPoint不仅可以创建演示文稿,还可以在互联网上召开面对 ...

  8. 1Z0-053 争议题目解析212

    1Z0-053 争议题目解析212 考试科目:1Z0-053 题库版本:V13.02 题库中原题为: 212.Note the following parameters settings in you ...

  9. C#调用SQL中的存储过程中有output参数,存储过程执行过程中返回信息

      C#调用SQL中的存储过程中有output参数,类型是字符型的时候一定要指定参数的长度.不然获取到的结果总是只有第一字符.本人就是由于这个原因,折腾了很久.在此记录一下,供大家以后参考! 例如: ...

  10. 大数据下的Distinct Count(二):Bitmap篇

    在前一篇中介绍了使用API做Distinct Count,但是精确计算的API都较慢,那有没有能更快的优化解决方案呢? 1. Bitmap介绍 <编程珠玑>上是这样介绍bitmap的: B ...