MVC与WebForm最大的区别

上传人:飞*** 文档编号:31754644 上传时间:2021-10-12 格式:DOCX 页数:18 大小:349.10KB
收藏 版权申诉 举报 下载
MVC与WebForm最大的区别_第1页
第1页 / 共18页
MVC与WebForm最大的区别_第2页
第2页 / 共18页
MVC与WebForm最大的区别_第3页
第3页 / 共18页
资源描述:

《MVC与WebForm最大的区别》由会员分享,可在线阅读,更多相关《MVC与WebForm最大的区别(18页珍藏版)》请在装配图网上搜索。

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

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

3、T三 层架构简单解析)。它们之间互相操作的关系,基本的示意图如下:还记的暑假在郑州找实习工作的时候,被别人问过一个n层架构的概念,当时就懵 了,尼玛的压根就没听说过啊!不过后来查询资料知道,所谓的n曾架构就是根据 系统的需要把业务逻辑层(BLL)或者数据库访问层(DAL)再抽象成几个层次(具 体的就是再抽象成类),便于逻辑的处理和代码模块的维护。其基本原理还是基于 三层架构。什么是MVC呢?MVC其实是软件架构的一种模式,也就是我们经常说的设计模式。其中主要包括 三个模块,就是如MVC名字所显示的那样:模型(Model),视图(View), 控制器(Controller);其中这里的模型(Mo

4、del)和视图(View )是完全区别于三层架构中的模型 (Model)和视图(View)的。1) MVC中的模型(Model)指的是数据模型,用于封装与应用程序的业务逻辑 相关的数据,除此之外还可以封装数据的处理方法(相当于业务逻辑)。这是完全 区别于三层架构的模型层(Model)的。MVC中模型(Model)的特点,有对数据直接访问的权利,如:对数据库的访问;模型(Model)”不依赖视图(View)和控制器(Controller),即模型(Model) 不关心它会被如何显示或者如何被操作;模型(Model)中数据的变化一般会通过一种刷新机制被、公布;为了实现中的机制用于监视此模型的视图必

5、须事先在此模型上注册。从而, 视图可以了解在数据模型上发生的改变。2)视图(View),这里的视图基本跟三层中的视图一样,都是为了显示数据, 没有程序上的逻辑。为了实现视图上数据的刷新,视图(View)需要访问它监视 的模型(Model),所以应该事先在被它监视的数据那里进行注册。3)控制器(Controller),这个概念是在三层中不存在的概念。它主要起到不 同层面的组织作用,用于控制应用程序的流程。主要处理事件并作出相应。3事件 主要包括:用户的行为和数据的改变。以上就是关于三层架构和MVC在概念上的区别。二,WebForm网站和MVC网站运行机制的区别WebForm网站的运行机制比如说我

6、们现在要访问一个WebForm站点:.hk/Default.aspx(仅仅是示例)。我们的浏览器和服务器 都是做了哪些动作呢?1)首先浏览器会向目的服务器发送请求报文。配置过IIS的都知道,网站挂载在服务器上,我们是通过访问虚拟目录的方式访问 网站的。这时候目的主机的HS接收的是访问该虚拟目录下Default.aspx文件 的请求;(当然这也是一个非常复杂的过程,包括请求DNS服务器,找到目的主 机IP,根据IP地址访问目的主机。复杂的网络过程就不叙述,有兴趣的自己找资 料学习);2)服务器端的IIS软件接收到请求后,把请求交给.NET FramWork进行处理;3),NET FramWork

7、会创建Defauljaspx类的对象,也就是我们所说的页 面对象。(在WebFrom网站创建完,并且编译后Default.aspx会被编译成 Default_aspx 类)到现在的豆个过程都还是Http请求,IIS的内部机制会去实现一个 IHttphandler 的接口,其中该接口实现一个 ProcessRequestfang 方法 MSDN是这样解释的名称ProcessRequest说明通过实现*HttpHandler接二的三定义HttpHancig ProcessRequest ()方法会去调用对应页面的Page_Load ()方法1 protected void Page_Load(ob

8、ject sender, EventArgs e)2 3 处理的业务逻辑或者是访问数据库的代码4 要输出的Html或者其它内容5 )4)返回给浏览器(包括HtmL CSS, Js等等) 流程示意图如下:服务器WebForm请求显示页面的涮呈MVC网站的运行机制还比如说我们现在要访问一个MVC站点:.hk/FirstPage/Default(仅仅是示例)。我们的浏览器和 服务器又做了哪些动作呢?1)浏览器向服务器发送Request请求报文(FirstPage/Default)2)服务器端的IIS相应Request请求3) .NET FramWork根据路由配置,解析URL,并创建FirstPag

9、e类的对象, 并调用相应的Default方法1 public ActionResult Default()2 34 return View();返回给视图5 4)然后会访问视图文件夹下的Default.cshtml,返回给浏览器(其中包括html,css,js 等等)流程的示意图如下:服务器MVC请求显示页面的流程这只是一个比较简单的运行过程。其实在这过程中发生了很多事情,比如说:执行 Global.asax中的Application_Start()方法来完成一些初始化的工作等等, 会在以后的文章中继续解析。以上就是WebForm网站和MVC网站运行机制的区别。那么到底使用MVC的优点比Web

10、Form到底有哪些优点呢?最重要的就是.NET程序员在开发的时候再也不会使用那些被很多人诟病的微软 封装的控件了。MVC设计模式降低了模型(Model,业务和数据)和视图的耦合关系。包括我们 在开发WebForm网站使用三层架构的思想也是为了降低数据和视图的耦合等; 可以复用视图,也就是说同样的数据可以使用不同的视图以不同的图标展示出 来。理论到此结束 常用的WebForm开发方式就不举例了,我下边主要演示一个基本的MVC程序 的创建和运行过程。要创建MVC程序VS肯定是必不可少的,我的开发环境是VS2013,大家请酌情 考虑自己的VS版本。首先的打开“文件一、新建项目,在左侧的项目栏选择“i

11、sual C#一 “Web,在右边就可以看到有ASP.NET Web窗体应用程序和 ASP.NET MVC 4 Web应用程序如下图:排序依据:默认值I .NET Framework 4Visual C#Visual C#因为要创建MVC程序就选择点击第二个选项然后会看到项目模板,默认的是选 择Internet应用程序,如果选择默认的话,就会默认的创建一个具有基本功能 的站点。我们这里选择、基本,VS只会创建包含基本框架简的模板视图弓I孽so:说明:基本ASRNET MVC4项目Razor创建单元测试项目 测试项目刍称():MvcApplicationS.Tests测试框架(E);Visual

12、 Studio Unit Test其他信息CD创建完以后我们会在解决方案下看到代码的树状结构,其中包含Models,Views 和 Controllers 三个文件夹 解法方案帼客示例”(1个项目)/羸1博客示例D ,PropertiesD 引用App_D 己 taD App_Start/ ContentD ScriptsViews themes 同 Site.css Cggtro Ilers ModelsShared-Layout.cshtml倒 Error.cshtmlC _ViewStart.cshtml。Web.configD 茄 Global.asaxQ packages.confi

13、g Q Web.config我们首先创建实体对象Model,在Models文件夹下创建一个Child类,并声 明属性和初始化电123456789101112131415161718192021public class Child编号private int id;public int Idget set )姓名 private return id; id = value; string strName;public string StrNameget return strName; set strName = value; )阖口 ASP.NET文件夹Ctrl+XCtrl+CCtrl+V甘圭pa

14、ckages, config Web.config22在Controllers文件夹上右键,”添加,会看到有“控制器的选项,如下图:在浏览器中亘看(Google Chrome)(B) 浏览方式(H).添加(添限定为此范圉解 新建蟀况方案资源管理署视图(N)品在代再圆上显示(Q从项目中排除0)X翦切CD印复制(Y)1粘贴点击“控制器”后会出现一个“添加控制器窗体,在控制器名称中DefaultlC。ntr。Her、中Defaultl、是默认选中的,我们修改其名称 HomeController,注意:这里的339口代1(:。11。11”中的*8|1。110广是必须保留的,主要是因为MVC框架有一个约

15、定大于配置”的规则单击添加、添加控制器,默认生成的控制器代码,如下:1 默认生成的控制器代码2 public class HomeController : Controller3 (4 /5 / GET: /Home/67 包含一个Action方法8 publicActionResultIndex()9 10 返回给视图11 return View();12 )1314 )然后我们创建一个集合来初始化在Models中创建的Child类的属性值 电1 ttregion 初始化数据集合 +List InitDataO2 /3 /初始化数据集合4 III5 /6 public List InitDa

16、taO7 89 List list = new List()10 11 new Child。1d=l, StrName=你好啊! ”,12 new Child。Id=2, StrName=不好啊! ”13 );1415 returnlist;16 )1718 ttendregion电然后开始编写Action方法,即ActionResult Index。”方法,电1 / 2 / Action方法(相当于MVC设计模式的Model)3 / 4 / 56 public ActionResult Index()7 8 可以处理当前业务(你比如读取数据库,判断等)9 StringBuilder strB

17、uilder = new StringBuilder();10 创建数据集合,获取数据11 List list = InitDataO;12 遍历集合获取生成的Html代码13 list. ForEach(d =14 15 strBuilder. AppendLine (* + d. Id. ToStringO +);16 );1718 使用ViewBag传输数据给同名的Indexcshtml视图19 /ViewBag是一个dynamic类型的集合,可以动态添加任意类型的任意名称和属性20 ViewBag. HtmlStrBuilder = strBuilder. ToStringO;21 加

18、载同名视图Index, cshtml22 return View();23 )在其中我们使用ViewBag把数据传输给同名的Views文件夹下的同名视图。itendregion/ / Action方法(相当于兴/ / /return50个弓I用public ActionResult In(创建视图接收数据,上面代码的Index方法上右键,会出现添加视图: 如下 图回话加视图.注El 转到视图Ctrl+M, Ctrl+G勒(R)组织 using(O) .生成序图(N)品 在代码图上显示(QCtrl。之后会在Views文件夹下,生成一个Home文件夹,Home文件夹下面会有一个Index.cshtml文件(这个就是视图文件)视图接收数据2 3 4 Index5 6 7 8 9 0Html. Raw( ViewBag. HtmlStrBuilder)10 11 12 由到这里基本上就完成了一个MVC程序的创建,我们运行程序,结果如下:12注意:因为MVC的运行机制跟WebF。口n不一样,所以浏览的方式也不一样。 我们可以直接在Views文件夹上右键,选择在浏览器中查看就可以预览到结果。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!