初识MVC

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

初次遇见你--MVC小编总是会把你和以前学习过的三层和设计模式弄混,再此,小编查阅相关资料,接着,小编就对这些相似的知识点进行简单对比:

mvc  pk  三层

三层架构界面层,业务逻辑层和数据访问层,很多人就通mvc里面的三个核心部件同三层架构等同起来,认为界面层等于View,业务逻辑层等于Controller,数据访问层等于Model,这是完全错误的,mvc设计模式解决的是页面代码,页面控制逻辑和数据耦合的问题,所以她首先属于界面层,比如mvc和structs都是界面层框架,mvc里面的controller是负责对界面进行控制的,比如,页面间跳转,显示逻辑等,三层架构里的业务逻辑层主要是对业务实体数据的加工,把加工后的数据传给页面显示,mvc里面的model只是数据实体,不具备增删改查的功能,她接收的数据是从业务逻辑层处理好传过来的数据,而三层架构里面的数据访问层是具有增删改查功能的,是直接对数据库操作的,为业务逻辑层提供数据支持,切忌mvc只是三层里面的界面层,不要混淆了哦。

mvc pk 设计模式

有很多小伙伴往往把框架模式和设计模式混淆,认为MVC是一种设计模式。实际上她们完全是不同的概念。

框架、设计模式这两个概念总容易被混淆,其实它们之间还是有区别的。框架通常是代码重用,而设计模式是设计重用,架构则介于两者之间,部分代码重用,部分设计重用,有时分析也可重用。在软件生产中有三种级别的重用:内部重用,即在同一应用中能公共使用的抽象块;代码重用,即将通用模块组合成库或工具集,以便在多个应用和领域都能使用;应用框架的重用,即为专用领域提供通用的或现成的基础结构,以获得最高级别的重用性。

框架与设计模式虽然相似,但却有着根本的不同。设计模式是对在某种环境中反复出现的问题以及解决该问题的方案的描述,它比框架更抽象;框架可以用代码表示,也能直接执行或复用,而对模式而言只有实例才能用代码表示;设计模式是比框架更小的元素,一个框架中往往含有一个或多个设计模式,框架总是针对某一特定应用领域,但同一模式却可适用于各种应用。可以说,框架是软件,而设计模式是软件的知识。

框架模式有哪些?

MVC、MTV、MVP、CBD、ORM等等;

框架有哪些?

C++语言的QT、MFC、gtk,Java语言的SSH 、SSI,php语言的 smarty(MVC模式),python语言的django(MTV模式)等等

设计模式有哪些?

工厂模式、适配器模式、策略模式等等简而言之:框架是大智慧,用来对软件设计进行分工;设计模式是小技巧,对具体问题提出解决方案,以提高代码复用率,降低耦合度。介绍完了大家的的区别和联系之后,回到今天博文的主角mvc,接着小编就来做一个简单的入门例子。

第一步:创建一个mvc的例子,如下图所示:

第二步:选择Internet应用程序:

接着,我们就开始编写代码,在model中新建一个Dog类,用于模拟数据,代码如下所示:

<span style="font-size:18px;"><span style="font-size:18px;">using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace mvcTest.Models
{
    public class Dog
    {
        public int ID { get; set;}
        public string Name{ get; set;}

        public override string ToString()
        {
            return "ID=" + this.ID + ",Name=" + this.Name;
        }
    }
}</span></span>

第三步:在Controllers文件夹下新建一个控制器,用于从获取数据,添加控制器的方法,右击Controllers,添加控制器即可,代码如下所示:

<span style="font-size:18px;"><span style="font-size:18px;">using mvcTest.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace mvcTest.Controllers
{
    //控制器类(继承了Controller)
    public class HomeController : Controller
    {

        #region 初始化数据集合+void InitData()
        /// <summary>
        /// 初始化数据集合
        /// </summary>
        public List<Models.Dog> InitData()
        {
            List<Models.Dog> list = new List<Models.Dog>()
            {
                new Dog(){ID=1,Name="小样1~~"},
                new Dog(){ID=2,Name="小样2~~"},
                new Dog(){ID=3,Name="小样3~~"},
                new Dog(){ID=4,Name="小样4~~"}
            };

        }

        #endregion

       //Action方法(可是看成是mvc设计模式的 Model)
       public ActionResult Index()
        {
            System.Text.StringBuilder sbHtml = new System.Text.StringBuilder(4000);
           //处理当前业务(比如读取数据库,判断等)
            //创建一个数据集合(伪数据),获取数据
            List<Models.Dog> list = InitData();
            //遍历集合,生成html代码,存入sbHtml
            list.ForEach(d =>
            {
                sbHtml.AppendLine("<div>" + d.ToString() + "</div>");
            });
           //使用ViewBag传输数据给同名 Index.cshtml视图
           //ViewBag是一个dynamic类型集合,可以动态添加任意类型的任意名称的属性和值
           ViewBag.HtmlStr = sbHtml.ToString();
            return View();
        }

    }
}
</span></span>

第四步:添加视图,代码如下所示:

<span style="font-size:18px;"><span style="font-size:18px;">@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
</head>
<body>
    <!--相当于把Action方法中保存的内容,放在此处输出!
        默认Razor视图会将从后台输出的字符串里保护的《转义成&1t;
        为了不转义,使用Row方法,来输出html标签源码!-->
    @Html.Raw(ViewBag.HtmlStr)
</body>
</html>
</span></span>

至此,一个简单的mvc的例子就完成了。

小编寄语:该博文,小编简单的介绍了一下mvc的基础知识,以及使用mvc敲了一个简单的例子,并且对mvc和三层,以及mvc和以前学习过的设计模式进行了简单的对比,通过对mvc的学习,小编对这块知识的理解又加深了一点点,档案管理项目,未完,待续......

时间: 2024-10-10 10:19:19

初识MVC的相关文章

第一节初识MVC实现计算器

第一节初识MVC实现计算器 /* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab filetype=css: */ /*! * Base CSS for pdf2htmlEX * Copyright 2012,2013 Lu Wang * https://github.com/coolwanglu/pdf2htmlEX/blob/master/share/LICENSE */ /* Part 1: Web Page Lay

初识MVC和KVC

简单MVC M---model:模型,相当于饭馆里的厨师,厨师提供他会的菜式给老板,老板不会关心他是怎么去做的. V---view:视图,相当于饭馆里的服务员,服务员从老板那里拿到菜单,提供给客户. C---controller:控制器,相当于饭馆里的老板.老板从厨师那里得到菜式,弄成菜单提供给服务员处. KVC--是一种键值编码,通过键值间接编码 K---key:键 V---value值 C---coding:编码 使用说明: 1.使用KVC间接修改对象属性时,系统会自动判断对象属性的类型,并

初识MVC,MVC里面的基本数据传递

? ? ? MVC是一种表现形式,他将Web应用程序分成三个组件即:视图(View)控制器(Controller)模型(Model). M:Model 主要是存储或者是处理数据的组件 V:View 是用户接口层组件.主要是提供html模板并将Controller里获取的数据显示到页面中cshtml文件被用来处理视图的职责. C: Controller 处理用户交互,负责处理业务,并获取数据装入Model中,然后交给视图. ? ? ? ASPX是有一个前台页面类和一个后台页面类,前台页面类继承后台

【MVC】初识MVC

一.MVC是什么? MVC(Model-View-Controller),是视图-模型-控制器的框架,刚开始看见这些概念的时候,我以为是U-D-B呢?视图界面,模型是对应这数据库呢,而控制器是存放的一些业务逻辑,这不就和三层很像吗?所以很自然的将其联想到我们的经典三层(U-B-D). 既然能让我联想到三层,那这个所谓的新知识就是可以和旧知识联系起来,有相似点,也有不同点.其实,MVC和我们的三层还是不太一样的. Model:模型,表示应用程序的核心(因为数据就是核心嘛),是处理应用程序数据逻辑的

初识MVC之建项

MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,用一种业务逻辑.数据.界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,是一种数据持久框架. Model是框架的核心,应用程序的数据处理在此进行,可以实现对数据库的操作等:View是用户界面,用来显示和输入数据:而Controller是控制Model与View之间的交互:这个也可以与我们之前学过的三层相互联系起来.Model层其实就可以看作是三层中的B层和

1.MVC框架开发(初识MVC)

1.约定大于配置 Content:存放静态文件(样式表.静态图片等) Controllers:存放控制器类 Models:存放数据模型文件 Scripts:存放脚本文件 Views:存放视图文件,里面的Shared存放公共视图(比如模板) 2.构建model模型 需要创建EF框架,新建一个项目的时候都需要去安装EF框架(目的:引入EF框架所需要的类库) 3.编写MVC 第一步:编写控制器(controller),所有的控制器都必须要求以Controller结尾 第二步:在控制器里写方法 publ

初识mvc分层思想

首先要清楚的是: mvc是一种设计模式,一种分层思想,没有具体的技术与之对应,无论是js还是java或者其他的技术都可以运用. 既然是分层那么这些层都有哪些职责呢? View层(界面层): 为用户展示数据,渲染由controller层和module层处理完的数据. Controller层(业务逻辑层): 接收界面层的数据,对接受到的数据进行封装和类型转换. 调用模型层的服务进行业务逻辑的处理. 调用合适的视图去渲染数据. Model层(模型层 ): 提供算法,比如:业务算法实现,数据持久算法等.

我所理解cocos2d-x 3.6 lua -- 初识MVC

简单说几句: 最近的游戏项目中使用了lua脚本来开发,项目中用到了MVC框架. 从cocos2d-x 3.6 创建lua demo, 简单分享一下思路和一些开发中的技巧. 先简单说说MVC,即Model View Controller. Model(模型):一般负责数据的处理 View(视图):一般负责界面的显示 Controller(控制器):一般负责前端的逻辑处理 比如 :拿一款手机游戏来说,界面UI的显示.布局等就是View负责:点击了按钮,手势的滑动等操作由Controller来处理:游

[原创]java WEB学习笔记19:初识MVC 设计模式:查询,删除 练习(理解思想)

本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 ---------------------------------