什么是MVC框架?

 

    在这里我简要的说明一下,想要详细的了解MVC的小伙伴们可以上百度百科,或者找来相应的书籍,仔细研究和理解一下,但是要说明的的一点是,完全理解MVC并不是一件容易的事。

 

         MVC的全称为Model View Controller,是模型-视图-控制器的缩写,一种软件框架模式,通俗点讲,就是将应用程序的输入、处理和输出进行解耦,使M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。

 

    简单来说一下MVC框架的三个核心部件的内容,即Model、View和Controller。它们各自处理自己的任务,因此可以使不同的开发人员可以同时开发视图、控制器逻辑和业务逻辑。

 

        Model: 是指要处理的业务代码和数据操作代码

        View: 视图主要是指能够跟用户打交道并能够展示数据

        Controller看成是Model和View的桥梁,接受用户的输入并调用模型和视图去完成用户的需求。

 

如何使用MVC编程?

 

    既然MVC是一个通用的框架,那么我们就可以通过VS去创建一个使用MVC框架的解决方案,然后编写自己的代码,实现要求的功能。

 

    首先,打开VS,新建项目如下图所示:

Web开发之MVC框架_jQuery

    点击确定之后会看到右侧的解决方案资源管理器中已经为我们自动创建好了MVC框架,如下图所示:

Web开发之MVC框架_javascript_02

    然后我们就可以在相应的文件下创建模型、控制器和视图了。

    来看一个小例子,我们在文件夹Controllers上右键添加一个控制器,如下图所示:

Web开发之MVC框架_ajax_03

Web开发之MVC框架_javascript_04

    然后在Models文件中添加一个实体类,代码如下:

 

 

1. <span style="font-size:18px;">namespace MVCBlog.Models  
2. {  
3. public class Dog  
4.     {  
5. public int ID { get; set; }  
6. public string Name { get; set; }  
7. public override string ToString()  
8.         {  
9. return "ID=" + this.ID + ",Name=" + this.Name;  
10.         }  
11.     }  
12. }</span>

 

    这样我们就可以在控制器中写代码了,代码如下:

 

 

1. <span style="font-size:18px;">namespace MVCBlog.Controllers  
2. {  
3. public class HomeController : Controller  
4.     {  
5. //  
6. // GET: /Home/  
7. public List<Models.Dog> InitData()  
8.         {  
9. null;  
10. new List<Models.Dog>()  
11.             {  
12. new Dog(){ ID=1,Name="藏獒"},  
13. new Dog(){ ID=2,Name="牧羊犬"},  
14. new Dog(){ ID=3,Name="吉娃娃"},  
15. new Dog(){ ID=4,Name="哈士奇"}  
16.             };  
17. return list;  
18.         }  
19. public ActionResult Index2()  
20.         {  
21. new System.Text.StringBuilder(4000);  
22.             List<Models.Dog> list = InitData();  
23.             list.ForEach(d =>  
24.             {  
25. "<div>" + d.ToString() + "<div>");  
26.             });  
27.             ViewBag.HtmlStr = sbHtml.ToString();  
28. return View();  
29.         }  
30.     }  
31. }</span>

 

    最后我们来创建视图,方法是在控制器中的Index2方法上右击,选择添加视图即可,如下图所示:

Web开发之MVC框架_javascript_05

    我们会看到在Views文件夹下的Home文件夹中有了一个名为Index2.cshtml的文件,这个就是视图文件,我们在视图中写一行代码就可以调用控制器中的方法了,代码如下:

 

 

1. <span style="font-size:18px;">@{  
2. Layout = null;  
3. }  
4.   
5. <!DOCTYPE html>  
6.   
7. <html>  
8. <head>  
9. <title>Index</title>  
10. </head>  
11. <body>  
12.         @Html.Raw(ViewBag.HtmlStr)  
13. </body>  
14. </html></span>


 

    下面看如何运行程序,运行传统的Web应用程序我们在浏览器的地址栏中输入的是http://localhost:60063/Views/Home/Index2.aspx,而我们使用MVC编写的应用程序不是这样,我们只需要调用相应的视图即可,在浏览器中输入的是http://localhost:60063/Home/Index2,回车之后的结果如下:

Web开发之MVC框架_ViewUI_06

    总结:对于MVC框架,很多人都会想到三层框架,它们的确有相似的地方,都是对应用程序进行分层解耦,但是相比较而言,MVC框架的三个部件解耦的比较彻底,它们是相互独立的,改变其中一个不会影响其他的两个,做到了耦合性低,这样带来的最大的好处是可维护性高。MVC还有其他的优势,当然也有很多缺点,有兴趣的可以自己查阅资料。

 

    还要说明一点的是,很多人对于框架模式和设计模式的概念不是很清楚,特别容易混淆两者。因此很多对MVC认识不深刻的人认为MVC是一种设计模式,实际上它们是完全不同的两个东西。简单来说,框架通常是代码重用,而设计模式是设计重用,架构则是介于两者之间,部分代码重用,部分设计重用,有时也可以分析重用。

 

    引用一句话,框架是大智慧,用来对软件设计进行分工;设计模式是小技巧,对具体问题提出解决方案,以提高代码复用率,降低耦合度

         MVC只是框架的一种,还有很多其他常用的框架,比如:Struts、Spring、Zend Framework以及.NET MVC等,期待去学习和使用它们。