前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ASP.NET MVC 与 ASP.NET Web Form 的介绍与区别

ASP.NET MVC 与 ASP.NET Web Form 的介绍与区别

原创
作者头像
conanma
发布2021-12-29 11:15:42
2.5K0
发布2021-12-29 11:15:42
举报
文章被收录于专栏:正则正则

1 ASP.NET MVC

是微软提供的以MVC模式为基础的ASP.NET Web应用程序开发框架。

MVC 模式分别为:

Model:领域模型 处理应用程序数据逻辑部分,获取数据,处理数据

View:视图 用于处理实际返回给用户的页面

Controller:控制器 通过Model 读取处理数据,通过View 将结果返回。

2 ASP.NET Webform

在 ASP.NET 框架下的一种基于事件模型的开发模式,有开发速度快,容易上手等特点。

3 两者的区别和各自优缺点

ASP.NET 作为微软的Web程序开发框架,MVC与Webform 是不同时期的开发模式,

在ASP.NET 运行处理原理 基本一致.

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 原理图和介绍

123123123.jpg

1 客户端发出请求给IIS(mvc中为集成模式),执行HttpRunTime的ProcessRequest方法

代码语言:javascript
复制
2 创建了一批MvcApplication对象,存放在应用程序池中,执行第一个MvcApplication对象实例中的 Application的Application_Start()方法、

RouteConfig.RegisterRountes(RouteTable.Routes)-->向路由规则集合注册一条默认的路由规则

3  调用Application对象实例的ProcessRequest方法 ,传入上下文对象HttpContext,开始执行19个管道事件

4 第七个管道事件:

    UrlRouting过滤器:

    1 获取当前Reuqest对象中的RawUrl:此时 /Home/Index

    2 去扫描当前路由规则集合中的所,从上而下开始匹配,匹配成功了--{controller}/{action}/{id}这条路由规则,MVC底层就会根据路由规则解析出控制器名称

    HomeController action:Index

    3 调用DefaultControllerFactory反射创建控制器类的对象实例,存入RemapHandler中

    4 将 控制器和action名称以字符串的形式存入RouteData中

5 第八个管道事件

代码语言:javascript
复制
1 判断当前RemapHandler是否为null, 不为null直接跳过执行后面的管道事件

2 为null继续创建页面类对象

6 第十一,十二个管道事件

代码语言:javascript
复制
1 获取上下文的RemapHandler中的控制器类的对象实例

2从RoutData中取出当前请求action名称

3 以反射的方式动态执行action方法

4 action返回类型分为:

    4.1 如果是一个视图类型:调用具体的视图(.cshtml)编译成页面类,在调用页面类的Excute()方法,将所有的代码执行后写入到Response中

    4.2如果是一个非视图类型,直接将结果写入到Response中即可

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
作者已关闭评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 ASP.NET MVC
  • 2 ASP.NET Webform
  • 3 两者的区别和各自优缺点
  • 在ASP.NET 运行处理原理 基本一致.
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档