解析ASP#WebForm和Mvc开发的区别

上传人:平*** 文档编号:19844439 上传时间:2017-11-20 格式:DOC 页数:11 大小:259.84KB
返回 下载 相关 举报
解析ASP#WebForm和Mvc开发的区别_第1页
第1页 / 共11页
解析ASP#WebForm和Mvc开发的区别_第2页
第2页 / 共11页
解析ASP#WebForm和Mvc开发的区别_第3页
第3页 / 共11页
解析ASP#WebForm和Mvc开发的区别_第4页
第4页 / 共11页
解析ASP#WebForm和Mvc开发的区别_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《解析ASP#WebForm和Mvc开发的区别》由会员分享,可在线阅读,更多相关《解析ASP#WebForm和Mvc开发的区别(11页珍藏版)》请在金锄头文库上搜索。

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

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

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

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

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

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

7、amWork 会创建 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 /处理的业

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

9、 ActionResult Default()2 3 4 return View();/返回给视图5 4)然后会访问视图文件夹下的 Default.cshtml,返回给浏览器(其中包括 html,css,js 等等)流程的示意图如下:这只是一个比较简单的运行过程。其实在这过程中发生了很多事情,比如说:执行Global.asax 中的 Application_Start()方法来完成一些初始化的工作等等,会在以后的文章中继续解析。以上就是 WebForm 网站和 MVC 网站运行机制的区别。那么到底使用 MVC 的优点比 WebForm 到底有哪些优点呢?最重要的就是.NET 程序员在开发的时候

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

11、可以看到有“ASP.NET Web 窗体应用程序”和“ASP.NET MVC 4 Web 应用程序” 如下图:因为要创建 MVC 程序就选择点击第二个选项然后会看到项目模板,默认的是选择“Internet 应用程序”,如果选择默认的话,就会默认的创建一个具有基本功能的站点。我们这里选择“基本” ,VS 只会创建包含基本框架简的模板创建完以后我们会在解决方案下看到代码的树状结构,其中包含 Models,Views 和 Controllers 三个文件夹我们首先创建实体对象 Model,在 Models 文件夹下创建一个 Child 类,并声明属性和初始化1 public class Child2

12、 3 /编号4 private int id;5 6 7 public int Id8 9 get return id; 10 set id = value; 11 12 13 /姓名14 private string strName;15 16 public string StrName17 18 get return strName; 19 set strName = value; 20 21 22 在 Controllers 文件夹上右键,“添加”,会看到有“控制器” 的选项,如下图:点击控制器后会出现一个“添加控制器”窗体,在控制器名称中”Default1Controller“中”De

13、fault1“是默认选中的,我们修改其名称为”HomeController“,注意:这里的”Default1Controller“中的”*Controller“是必须保留的,主要是因为 MVC 框架有一个”约定大于配置“ 的规则单击”添加“添加控制器,默认生成的控制器代码,如下:1 /默认生成的控制器代码2 public class HomeController : Controller3 4 /5 / GET: /Home/6 7 /包含一个 Action 方法8 public ActionResult Index()9 10 /返回给视图11 return View();12 13 14

14、然后我们创建一个集合来初始化在 Models 中创建的 Child 类的属性值1 #region 初始化数据集合 +List InitData()2 / 3 / 初始化数据集合4 / 5 / 6 public List InitData()7 8 9 List list = new List()10 11 new Child()Id=1,StrName=你好啊! ,12 new Child()Id=2,StrName=不好啊! 13 ;14 15 return list;16 17 18 #endregion然后开始编写 Action 方法,即”ActionResult Index()“方法, 1 / 2 / Action 方法(相当于 MVC 设计模式的

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 试题/考题

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号