ASP.NETWebForm和Mvc开发的⽐较
在初步了解MVC后,发现很多⼈对于MVC和三层架构开发概念上会有很⼤的混淆,所以把这两天的学习笔记整理⼀下,分享给⾃⼰的同学们。同时也做⼀个⼩Demo,让没有接触过MVC开发的同学,能对MVC有⼀个简单的了解。
⼀,MVC和三层架构的区别
①什么是三层架构?
在学校的时候,和同学或者⽼师⼀起讨论MVC的时候,别⼈可能会说,“不就是三层架构嘛!实体层(Model),⽤来创建对象的实体;业务逻辑层(BLL),⽤来处理复杂的数据间的关系或者是业务间的关系;数据库访问层(DAL),⽤来⽤来访问数据库的;当然还会
有,View(视图层),⽤来展⽰数据;”其实⾃⼰虽然知道不是这样,但是⾃⼰也仅仅是了解⼀点点,也解释不清楚,所以也就算了。(具体的三层架构之间的操作的关系可以看我以前的博客【ASP.NET开发】.NET三层架构简单解析)。
它们之间互相操作的关系,基本的⽰意图如下:
什么是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站点:le.hk/Default.aspx(仅仅是⽰例)。我们的浏览器和服务器都是做了哪些动作呢?
1)⾸先浏览器会向⽬的服务器发送请求报⽂。
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 }
4)返回给浏览器(包括Html,CSS,Js等等)
流程⽰意图如下:
什么是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站点:le.hk/Default.aspx(仅仅是⽰例)。我们的浏览器和服务器都是做了哪些动作呢?
1)⾸先浏览器会向⽬的服务器发送请求报⽂。
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 }
4)返回给浏览器(包括Html,CSS,Js等等)
流程⽰意图如下:
什么是MVC呢?
MVC其实是软件架构的⼀种模式,也就是我们经常说的设计模式。其中主要包括三个模块,就是如MVC名字所显⽰的那样:模型(Model),视图(View),控制器(Controller);
其中这⾥的模型(Model)和视图(View )是完全区别于三层架构中的模型(Model)和视图(View)的。
1)MVC中的模型(Model)指的是数据模型,⽤于封装与应⽤程序的业务逻辑相关的数据,除此之外还可以封装数据的处理⽅法(相当于业务逻辑)。这是完全区别于三层架构的模型层(Model)的。
MVC中模型(Model)的特点:
①有对数据直接访问的权利,如:对数据库的访问;
②模型(Model)“不依赖”视图(View)和控制器(Controller),即模型(Model)不关⼼它会被如何显⽰或者如何被操作;
③模型(Model)中数据的变化⼀般会通过⼀种刷新机制被“公布”;
④为了实现③中的“机制”⽤于监视此模型的视图必须事先在此模型上注册。从⽽,视图可以了解在数据模型上发⽣的改变。
mvc三层架构如何实现2)视图(View),这⾥的视图基本跟三层中的视图⼀样,都是为了显⽰数据,没有程序上的逻辑。为了实现视图上数据的刷新,视图(View)需要访问它监视的模型(Model),所以应该事先在被它监视的数据那⾥进⾏注册。
3)控制器(Controller),这个概念是在三层中不存在的概念。它主要起到不同层⾯的组织作⽤,⽤于控制应⽤程序的流程。主要处理事件并作出相应。“事件”主要包括:⽤户的⾏为和数据的改变。
以上就是关于三层架构和MVC在概念上的区别。
⼆,WebForm⽹站和MVC⽹站运⾏机制的区别
①WebForm⽹站的运⾏机制
⽐如说我们现在要访问⼀个WebForm站点:le.hk/Default.aspx(仅仅是⽰例)。我们的浏览器和服务器都是做了哪些动作呢?
1)⾸先浏览器会向⽬的服务器发送请求报⽂。
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 }
4)返回给浏览器(包括Html,CSS,Js等等)
流程⽰意图如下:
②MVC⽹站的运⾏机制
还⽐如说我们现在要访问⼀个MVC站点:le.hk/FirstPage/Default(仅仅是⽰例)。我们的浏览器和服务器⼜做了哪些动作呢?
1)浏览器向服务器发送Request请求报⽂(FirstPage/Default)
2)服务器端的IIS相应Request请求
3).NET FramWork根据路由配置,解析URL,并创建FirstPage类的对象,并调⽤相应的Default⽅法
1 public ActionResult Default()
2 {
3
4 return View();//返回给视图
5 }
4)然后会访问视图⽂件夹下的Default.cshtml,返回给浏览器(其中包括html,css,js等等)
流程的⽰意图如下:
这只是⼀个⽐较简单的运⾏过程。其实在这过程中发⽣了很多事情,⽐如说:执⾏Global.asax中的Application_Start()⽅法来完成⼀些初始化的⼯作等等,会在以后的⽂章中继续解析。
以上就是WebForm⽹站和MVC⽹站运⾏机制的区别。
那么到底使⽤MVC的优点⽐WebForm到底有哪些优点呢?
①最重要的就是.NET程序员在开发的时候再也不会使⽤那些被很多⼈诟病的微软封装的控件了。
②MVC设计模式降低了模型(Model,业务和数据)和视图的耦合关系。包括我们在开发WebForm⽹站使⽤三层架构的思想也是为了降低数据和视图的耦合等;
③可以复⽤视图,也就是说同样的数据可以使⽤不同的视图以不同的图标展⽰出来。
-------------------------------------------------------理论到此结束---------------------------------------------------------------
常⽤的WebForm开发⽅式就不举例了,我下边主要演⽰⼀个基本的MVC程序的创建和运⾏过程。
要创建MVC程序VS肯定是必不可少的,我的开发环境是VS2013,⼤家请酌情考虑⾃⼰的VS版本。
①⾸先的打开“⽂件”→“新建项⽬”,在左侧的项⽬栏选择“Visual C#”→“Web”,在右边就可以看到有“ASP.NET Web窗体应⽤程序”和“ASP.NET MVC 4 Web应⽤程序”如下图:
②因为要创建MVC程序就选择点击第⼆个选项然后会看到项⽬模板,默认的是选择“Internet应⽤程序”,如果选择默认的话,就会默认的创建⼀个具有基本功能的站点。我们这⾥选择“基本”,VS只会创建包含
基本框架简的模板
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论