解析ASP.NET WebForm和Mvc开发的区别

article/2025/9/21 23:10:02

因为以前主要是做WebFrom开发,对MVC开发并没有太深入的了解。自从来到创新工场的新团队后,用的技术都是自己以前没有接触过的,比如:MVC 和EF还有就是WCF,压力一直很大。在很多问题都是不清楚的情况下,问周围的人,别人也只是给自己讲一个大概。而且前两天因为问了一个比较细的问题,还被别人的一句话打击。“我只能告诉你方法,你还指望我手把手的交给你呀,不会你得自己学呀。。。”。没办法只能自己找时间在下面找一些资料学习。

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

一,MVC和三层架构的区别

①什么是三层架构?

在学校的时候,和同学或者老师一起讨论MVC的时候,别人可能会说,“不就是三层架构嘛!实体层(Model),用来创建对象的实体;业务逻辑层(BLL),用来处理复杂的数据间的关系或者是业务间的关系;数据库访问层(DAL),用来用来访问数据库的;当然还会有,View(视图层),用来展示数据;”其实自己虽然知道不是这样,但是自己也仅仅是了解一点点,也解释不清楚,所以也就算了。(具体的三层架构之间的操作的关系可以看我以前的博客【ASP.NET开发】.NET三层架构简单解析)。

它们之间互相操作的关系,基本的示意图如下:

还记的暑假在郑州找实习工作的时候,被别人问过一个n层架构的概念,当时就懵了,尼玛的压根就没听说过啊!不过后来查询资料知道,所谓的n曾架构就是根据系统的需要把业务逻辑层(BLL)或者数据库访问层(DAL)再抽象成几个层次(具体的就是再抽象成类),便于逻辑的处理和代码模块的维护。其基本原理还是基于三层架构。

②什么是MVC呢?

MVC其实是软件架构的一种模式,也就是我们经常说的设计模式。其中主要包括三个模块,就是如MVC名字所显示的那样:模型(Model),视图(View),控制器(Controller);

其中这里的模型(Model)和视图(View )是完全区别于三层架构中的模型(Model)和视图(View)的。

1)MVC中的模型(Model)指的是数据模型,用于封装与应用程序的业务逻辑相关的数据,除此之外还可以封装数据的处理方法(相当于业务逻辑)。这是完全区别于三层架构的模型层(Model)的。

MVC中模型(Model)的特点:

①有对数据直接访问的权利,如:对数据库的访问;

②模型(Model)“不依赖”视图(View)和控制器(Controller),即模型(Model)不关心它会被如何显示或者如何被操作;

③模型(Model)中数据的变化一般会通过一种刷新机制被“公布”;

④为了实现③中的“机制”用于监视此模型的视图必须事先在此模型上注册。从而,视图可以了解在数据模型上发生的改变。

2)视图(View),这里的视图基本跟三层中的视图一样,都是为了显示数据,没有程序上的逻辑。为了实现视图上数据的刷新,视图(View)需要访问它监视的模型(Model),所以应该事先在被它监视的数据那里进行注册。

3)控制器(Controller),这个概念是在三层中不存在的概念。它主要起到不同层面的组织作用,用于控制应用程序的流程。主要处理事件并作出相应。“事件”主要包括:用户的行为和数据的改变。

 

以上就是关于三层架构和MVC在概念上的区别。

二,WebForm网站和MVC网站运行机制的区别

①WebForm网站的运行机制

比如说我们现在要访问一个WebForm站点:www.google.com.hk/Default.aspx(仅仅是示例)。我们的浏览器和服务器都是做了哪些动作呢?

1)首先浏览器会向目的服务器发送请求报文。

配置过IIS的都知道,网站挂载在服务器上,我们是通过访问虚拟目录的方式访问网站的。这时候目的主机的IIS接收的是访问该虚拟目录下Default.aspx文件的请求;(当然这也是一个非常复杂的过程,包括请求DNS服务器,找到目的主机IP,根据IP地址访问目的主机。复杂的网络过程就不叙述,有兴趣的自己找资料学习);

2)服务器端的IIS软件接收到请求后,把请求交给.NET FramWork进行处理;

3).NET FramWork会创建Default_aspx类的对象,也就是我们所说的页面对象。在WebFrom网站创建完,并且编译后Default.aspx会被编译成Default_aspx类)

到现在的整个过程都还是Http请求,IIS的内部机制会去实现一个IHttphandler的接口,其中该接口实现一个ProcessRequestfang方法

MSDN是这样解释的

该ProcessRequest()方法会去调用对应页面的Page_Load() 方法

1 protected void Page_Load(object sender, EventArgs e)
2         {
3             //处理的业务逻辑或者是访问数据库的代码
4             //要输出的Html或者其它内容
5         }



http://chatgpt.dhexx.cn/article/Seg1MwFF.shtml

相关文章

C#-WebForm-WebForm开发基础

1、C/S  客户端应用程序 WinForm  WPF  平级 数据是存放在其他的电脑上或服务器上 需要从服务器上下载相应的数据,在本地电脑上的客户端里进行加工 数据的加工是在用户的电脑上执行的,会对用户的电脑配置有所要求 2、B/S  网页端应用程序 ASP.NE…

ASP.NET--WebForm框架

WebForm框架 WebForm是微软推出的一款为了吸引更多的其他开发者能够快速入门到.NET技术中的一个框架,让开发人员感觉使用.NET技术进行BS开发和使用.NET技术进行CS开发一样简单快速。 微软的想法:以后程序员开发网站项目不需要先学习HTML+CSS就能够直接入门BS,因此将HTML标…

ASP.NET(二)--WebForm框架

WebForm框架 WebForm框架WebForm介绍WebForm窗体框架事件驱动开发简单应用ASP.NET程序开发过程网页生成过程的分析案例 WebForm框架 WebForm是微软推出的一款为了吸引更多的其他开发者能够快速入门到.NET技术中的一个框架,让开发人员感觉使用.NET技术进行BS开发和使…

winform webform 简单高效的UI界面框架

一、winform的界面框架设计( james_lx) 一直以来,我都在寻找WINFORM程序,简单高效的UI界面框架,终于,我领悟了。在此分享给和我一样使用C#而苦于界面设计的人。我的发现中,并没有加入什么其它的…

WebForm 基础学习

C/S 客户端应用程序(Client/Server) 客户端——服务器端 两种技术 WinForm WPF -- WPF开发于WinForm之后, --GUI 图形用户界面(采用图形方式显示的计…

c#webform制作网页应用的思路login登录

一方面是有实际工作需要,一方面是想学点东西,制作一个webform的信息科工单登记查询网页,虽然目前还是很多bug,虽然代码基本都是复制的,但是慢慢的搭建成型。自己记录下思路,纯小白,可以说基本都…

<form>表单

1.form表单 <form>标签是表单是一个框架&#xff0c;其中主要包含<input>,<textarea>,<select>标签 1.1<input>标签 <input>标签首先是一个单标签 <input>标签的格式是<input type"" value"" name"&…

表单<form>

创建表单 <form> 标签用于创建供用户输入的 HTML 表单。 <form>标签的action属性的值指定了表单提交到服务器的地址。 <form> 元素包含一个或多个如下的表单元素&#xff1a; <input> <textarea> <button> <select> <option&g…

ASP.NET WebForm--简介

文章目录 ASP.NETASP.NET 模型HTTP请求处理过程HttpHandler ASP.NET ASP.NET基于.NET Framework的Web开发平台&#xff0c;不但吸收了ASP以前版本的最大优点并参照Java、VB语言的开发优势加入了许多新的特色&#xff0c;同时也修正了以前的ASP版本的运行错误。 ASP.NET就是属于…

WebForm

什么是ASP.NET ASP.NET指的是动态服务器页面(Active Server Pages),运行在IIS&#xff08;Internet Information Service)上&#xff0c;文件类似于HTML,后缀为.aspx. Classic ASP的局限性&#xff1a; 代码块必须放置在需要进行输出的位置 <html> <body style&qu…

ASP.NET(一)--WebForm简单介绍

WebForm B/S程序 浏览器服务应用程序&#xff0c;直接可以解释为网站类应用程序 静态网页与服务器技术 静态网页 以.html或以.htm为后缀的网页文件只能单纯的显示文本和图像无法和用户进行数据交互&#xff0c;无法根据用户的请求显示不同的网页内容(也就是无法和后台数据库…

关于webform的简单的基础操作 2.学会开发(一)

.net的B/S架构开发主要是MVC和webform的开发&#xff0c;因为WebForm是微软开发的一款产品&#xff0c;它将用户的请求和响应都封装为控件。让开发者认为自己是在操作一个windows界面&#xff08;和winform也是差不多的&#xff09;。极大地提高了开发效率。而MVC是由视图&…

35.Trie树:如何实现搜索引擎的搜索关键词提示功能

文章目录 1. 什么是“Trie树”&#xff1f;2. 如何实现一棵Trie树&#xff1f;3.Trie树真的很耗内存吗&#xff1f;4.Trie树与散列表、红黑树的比较5. 解答开篇 问题&#xff1a;搜索引擎的关键词的联想词是如何实现的&#xff1f; 1. 什么是“Trie树”&#xff1f; Trie树&a…

Trie树详解

什么是Trie树 Trie树又称字典树、单词查找树。是一种能够高效存储和查找字符串集合的数据结构。 可以快速的在集合中查询某个字符串 Trie树的本质就是利用字符串之间的公共前缀&#xff0c;将重复的前缀合并在一起 Trie的存储 Trie的存储形式就是构造成一个树形结构 比如我们以…

java trie_Trie树(字典树)的介绍及Java实现

简介 Trie树&#xff0c;又称为前缀树或字典树&#xff0c;是一种有序树&#xff0c;用于保存关联数组&#xff0c;其中的键通常是字符串。与二叉查找树不同&#xff0c;键不是直接保存在节点中&#xff0c;而是由节点在树中的位置决定。一个节点的所有子孙都有相同的前缀&…

Trie前缀树

Trie前缀树 简介 Trie (发音为 "try") 又经常叫前缀树&#xff0c;字典树等等&#xff0c;是一种树数据结构&#xff0c;用于检索字符串数据集中的键。 在计算机科学中&#xff0c;trie是一种有序树&#xff0c;用于保存关联数组&#xff0c;其中的键通常是字符串…

Trie树

Trie树 文章目录 Trie树Trie树介绍应用场景举例代码实现例题 Trie树介绍 字典树 又称单词查找树&#xff0c;Trie树&#xff0c;是一种树形结构&#xff0c;是一种哈希树的变种。典型应用是用于统计&#xff0c;排序和保存大量的字符串&#xff08;但不仅限于字符串&#xff…

trie 树

一、普通 t r i e \rm trie trie 树 t r i e \rm trie trie 树又称字典树、前缀树&#xff0c;它把很多单词放到一棵树上&#xff0c;使用空间去换时间。 LUOGU2580 于是他错误的点名开始了 Description \text{Description} Description 给定 n n n 个互不相同且只含小写字…

Trie

文章目录 应用替换其他数据结构字典表达术语索引 算法排序全文检索 实现Bitwise triesCompressing triesExternal memory trie About Me Trie ,也叫做 digital tree(数字树) 有时候也是 radix tree(基数树) 或者 prefix tree(前缀树) (因为他们可以通过前缀进行搜索) 是一种 se…

Trie(字典树/前缀树)

字典树/前缀树 Trie&#xff08;发音类似 “try”&#xff09;或者说 前缀树&#xff08;字典树&#xff09; 是一种树形数据结构&#xff0c;用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景&#xff0c;例如自动补完和拼写检查。主要思想是利用字符…