mvc模式

1、什么是MVC

    一、概念

        MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑汇集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不须要从新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。
html

        小编点睛:架构,主要仍是采用封装(分层)的思想,来下降耦合度,从而使咱们的系统更加的灵活,扩展性更好。web

    二、内容

      Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。数据库中存取数据。
      View(视图)是应用程序中处理数据显示的部分。一般控制器负责从视图读取数据,控制用户输入,并向模型发送数据
数据库

        小编点睛:
设计模式

 

          

    大大提升了代码的可重用性。
       (2)因为MVC的三个模块相互独立,改变其中一个不会影响其余两个,因此依据这种设计思想(3)此外,四、缺点

       (1)增长了系统结构和实现的复杂性。架构

          对于简单的界面,严格遵循MVC,使模型、视图与控制器分离,会增长结构的复杂性,并可能产生过多的更新操做,下降运行效率。
  (2)视图与控制器间的过于紧密的链接。
框架

           视图与控制器是相互分离,但确实联系紧密的部件,视图没有控制器的存在,其应用是颇有限的,反之亦然,这样就妨碍了他们的独立重用。
  (3)视图对模型数据的低效率访问。
ide

             依据模型操做接口的不一样,视图可能须要屡次调用才能得到足够的显示数据。对未变化数据的没必要要的频繁访问,也将损害操做性能。
  (4) 目前,通常高级的界面工具或构造器不支持MVC架构。
工具

              改造这些工具以适应MVC须要和创建分离的部件的代价是很高的,从而形成使用MVC的困难
性能

        小编点睛:根据MVC的优缺点,咱们知道,对于开发存在大量用户界面,而且业务逻辑复杂的大型应用程序,MVC将会使你的软件在健壮性、代码重用和结构方面上一个新的台阶。尽管在最初构建MVC框架时会花费必定的工做量,但从长远角度看,它会大大提升后期软件开发的效率。ui

        因此咱们在具体适用时,要综合考虑其适用范围,

2、工做原理

    一、web工做原理图



        小编点睛:

       小编点睛:   二、内部工做原理图

                                       

        小编点睛:上边这张图是MVC的处理过程:三、小例子        (1)先在model层写一个Dog实体类

 

[csharp] view plain copy
  1. public class Dog  
  2. {  
  3.     public int ID { get; set; }  
  4.     public string Name { get; set; }  
  5.   
  6.     public override string ToString()  
  7.     {  
  8.         return "ID=" + this.ID +",Name=" + this.Name ;  
  9.     }  
  10. }  


       (2)先在controller层写相应的代码

 

[csharp] view plain copy
  1. //控制器类(继承了Controller)  
  2.    public class HomeController : Controller  
  3.    {  
  4.        #region 0.1初始化数据集合 void IntData()  
  5.        /// <summary>  
  6.        /// 初始化数据集合  
  7.        /// </summary>  
  8.        public List<Models.Dog> IntData()  
  9.        {  
  10.            List<Models.Dog> list =new List<Models.Dog >()  {  
  11.                new Dog(){ ID=1,Name ="小样~~" },  
  12.                new Dog(){ ID=2,Name ="小样2~~" },  
  13.                new Dog(){ ID=3,Name ="小样3~~" },  
  14.                new Dog(){ ID=4,Name ="小样4~~" },  
  15.            };  
  16.            return list;  
  17.        }  
  18.  
  19.        #endregion  
  20.   
  21.        // GET: /Home/  
  22.        /// <summary>  
  23.        /// Action方法(可堪称MVC设计模式的Model  
  24.        /// </summary>  
  25.        /// <returns></returns>  
  26.        public ActionResult Index()  
  27.        {  
  28.            System.Text.StringBuilder sbHtml = new System.Text.StringBuilder(4000);  
  29.            //2.1处理当前业务(好比读取数据库。判断等)  
  30.            //2.1.1建立一个数据集合(伪数据,并得到数据  
  31.            List<Models.Dog> list = IntData();  
  32.            //2.1.2遍历集合,生成HTNL代码,存入builder  
  33.            list.ForEach (d => {  
  34.                sbHtml.Append("<div>" + d.ToString() + "</div>");  
  35.                  
  36.            });  
  37.            //2.2使用viewBag传输数据给同名Index.cshtml 视图  
  38.            //viewBag是一个dynamic类型集合,能够动态添加任意类型的任意名称的属性和值  
  39.            ViewBag.HtmlStr = sbHtml.ToString();  
  40.   
  41.            return View();  
  42.        }  
  43.    }  


       (3)最后在view层显示数据

 

[csharp] view plain copy
  1. @{  
  2.     Layout = null;  
  3. }  
  4.   
  5. <!DOCTYPE html>  
  6.   
  7. <html>  
  8. <head>  
  9.     <meta name="viewport" content ="width=device-width" />  
  10.     <title>Index</title>  
  11. </head>  
  12. <body>  
  13.     <!-- 至关于把Action中的内容,存放在此处 输出!-->  
  14.     @Html.Raw(ViewBag.HtmlStr)  
  15. </body>  
  16. </html>  


       (4)运行效果图

                                

相关文章
相关标签/搜索