暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MVC软件架构模型

达摩院首座 2019-02-17
1121

        上一节我们讲了软件开发的框架,其中提到了MVC架构模型,就有读者让我介绍一下啥是架构模型,啥是MVC。

        MVC(建模、视图、控制器)是最常用的开发模型之一,它可以有限的分离应用的各个功能模块,提升编程协同效率。回到我们上一章所讲的,以下的网页开发框架都分别用到了MVC的概念(只是借用概念,有些并没有完全严格的目录结构,比如Django):

Ruby框架:

  • Ruby on Rails

  • Sinatra

JavaScript框架:

  • Express

  • Backbone

  • Angular

PHP框架:

  • Laravel

  • Codeigniter

  • Zend

Python框架:

  • Django

  • Flask

        接下来我们一一来介绍下MVC。

        M指建模(Model),是整个MVC模型的大脑,它接收并处理数据,因此与数据库有直接交互,可以是关系型数据库,如MySQL;抑或是非关系型数据库,如MangoDB;甚至是可以是从单个文件拉取,如JSON。在接入不同数据库的时候,Model的代码并不会有差异,只是对接的数据库驱动程序需要更新。Model还会与控制器(Controller)通信,通常情况下控制器向模型请求数据,获取数据后,控制器更新视图(View);当然还有些情况Model可以直接更新视图。

        V(View)当然是指整个应用的视图界面,也就是与用户交互的界面。视图通常包含HTML及CSS样式,视图内容是由控制器获取的动态数据,因此视图也会与控制器甚至模型交互。根据我们选取得不同模型引擎可以实现不同层级的用户交互:比如说静态HTML页面引擎,就不能输出变量,不能设定交互逻辑;亦比如说JavaScript的dust引擎可以定义各种交互逻辑(if、while等等),与此类似的还有Ruby的ERB引擎以及Python的flask引擎。

        C(Controller)控制器用来接收用户输入,包括用户访问一个页面、点击一个链接(GET请求)、提交一个表单(POST请求)以及不能在浏览器端直接执行的DELETE和PUT请求(只有开放框架的客户端浏览器可以)。控制器的作用类似于视图和模型的中间人:它会要求模型(Model)从数据库中获取数据,然后将数据加载到视图(View),之后模板引擎将数据结合预编译的逻辑和交互形式呈现给用户。

        以上是交互示意图:用户从浏览器中看到应用的视图(View),然后在浏览器中提交请求,浏览器将请求通过“路由器”传递给控制器,控制器判断请求的内容做出响应,可能是直接更新页面(比如重定向请求等),也可能是返回数据。前者直接与应用的视图交互,后者与模型交互,让模型从数据库获取相应的请求数据。


UneedR∣大数据与AI学习园地



长按,识别二维码,加关注

文章转载自达摩院首座,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论