‹  返回课程

一个人接单开发,需要学什么?

课文
阅读量:376
技术范畴
将上一节的“前后端架构”进一步细分为三层结构:展现层、业务层、数据层,并与常见的MVC架构对应讲解各层分工。最后,从系统架构倒推出我们需要学习的主要内容。
课前导言
理解: “Model、View、Controller” 各自含义和对应功能。特别是 “Controller” 的惯常操作。
一个人接单开发,需要学什么?
从目标系统的架构细分,倒推出为了接单,我们需要学习的内容。

目录

  1. 理解“三层架构”和“MVC”
  2. 所以, 需要学什么?

 

1. 理解 “三层架构” 和 “MVC”

上一节课《一个人接单,开发用什么架构?》我们给了一张最基础的,仅区分客户端和服务端的架构图:

Web应用的两层架构

这一节,我们对它做进一步的划分:

三层结构

这是一个典型的“三层”架构。最左边“展现层”对应之前的“客户端”,它不是本节的重点,所以我们对它做了一些简化。重点在服务端,现在被细分出两层:业务层和数据层。业务层也可以称为“控制层/Controller”,数据层也可以称为“模型层/Model”,再加上“展现层/View”。正好是流行的“MVC”架构。

假设你写的是一家卖男性内裤的在线商城,其中某个页面的某个版块用来显示一条“今日推荐内裤”;以此为例,上图中三层在该版块上的作用分工解释如下:

  • M:“数据、模型、Model”——今天推哪一款内裤?颜色是什么?款式是什么?有没有店主亲身试穿的图?价格呢?推荐理由呢?这些数据必须事先存在。所以这一层是基础的作用,就是存放必要的业务数据。
  • V:“展现、视图、View”——今日推荐内裤的数据已经有了,那么要如何在网页上展现呢?这就需要一个比有美感并且懂顾客心理的设计师来操刀了。比如,该推荐版块是占用整个页面的顶部?还是左部?占多大版面?“店主亲身试穿内裤图”和“推荐理由”的一段话,是上下布局还是左右布局?二者比例是1比1还是黄金比例?等等,负责如何展现数据的这一层,就叫“展现层”或“视图层”。注意,既然是“今日推荐”模块,说明每天推荐的内裤通常是变化的;于是可以推理出:在设计这个版块长什么样子时,设计师只知道“会有一张卖家秀的图”、“会有一款内裤”、“会有一个价格”……等等,但并不知道具体是那张图、哪一款内裤,卖多少钱。因此术语上往往将设计好的页面称为“模板”。展现层其实也不仅仅是展现,很多时候还需要接受用户的输入并发起请求。比如,当用户心动了,决定购买“今日推荐内裤”时,展现层就负责接受用户的下单请求,发送给后台。
  • C:“业务、控制、Controller”——前边有一个模板用以显示待推荐的内裤,后边有今天要推荐的具体的那条内裤的数据。还缺一件什么事?当然就是缺一个把具体的内裤数据套进用于显示模板的这样一个动作。“业务层”或“控制器/Controller”就负责从数据层取出数据,然后套进视图层的展现模板。这当中,“数据/模型”是名词、“视图/模板”也是名词。需要有一个动作、操作来把前者套进后者。当然,这个动作又不能乱动,必须严格按既定业务(Business)要求进行。因此这一层被叫做“业务”层或“控制层”。当然,动作本身通常也是一个事物来发起,因此在“MVC”架构中它被叫做“Controller/控制器”。

听起来“C”这一块做的事挺简单面无聊:把数据取出来,然后写入视图模板。很多业务还真就如此,但也有更多业务会复杂一些。典型的如:有时候为了填满一个展现模板,需要从数据层中取出多份数据。假设我们希望“今日推荐内裤”要做到“千人千面”。意思是,需要参考客户以往的购买行为再做推荐。那么现在 “Controller/控制器” 在向当前用户推数据时,需要多读一样数据:“用户购买历史数据”。假设当前用户是小王,那么控制器的推荐过程大致如此:

  1. 先读取通用的“今日推荐内裤”数据;
  2. 再读取小王的历史购买数据,发现他通常购买中号、绿色的内裤;
  3. 检查“今日推荐内裤”是否有中号或绿色款,如果有,优先推荐该款;如无,推荐通用款。

这1、2、3 步操作用什么实现,正是我们在“业务层”要写的程序的重要组成。

注:MVC架构往往是可递归的。意思是,大的架构向下分解时,往往分解出来的各层内部,又可以采用一个小的MVC结构。所以等到后续课程教我们如何写业务层程序时,你会发现这里的程序的代码结构和逻辑结构,又是一个MVC。

在图中,我们还发现“业务层”中靠前的位置,还夹了一层“接入层”; 这一层经常用来存放前面说到“模板”网页文件。文件本质上也是一种数据,但它并不存放在三层架构中的“数据层”。这是因为这些数据通常仅用于控制展现形式(格式、样式),通常不被视为“业务数据”,因此放在比较靠近展现层的位置上。除此之外,前面提到的“店主穿内裤”的图片数据,虽然称得上是一种业务数据,但显然图片基本也是用来展现,图片内容不应影响业务逻辑;因此通常也会存储在这个夹层中。

对于一个WEB系统,这个接入层这个夹层中的数据,也称为“静态数据”。静态数据中有很大一部分,完全不影响业务流程,因此可以完全不受“控制器/Controller”控制,只要前端用户请求,后端服务器就直接“吐”给它。大家去过麦当劳吧?当你点餐后,负责配餐的服务员是“控制器/Controller”,她会帮你取薯条、汉堡、可乐。这些数据来自“数据层”,但有一样数据是直接摆放在柜台供你自己取的,那就是吸管。因此吸管可以理解为放在“接入层”的一种数据。

 

2. 所以, 需要学什么?

从系统实现以后的架构,当然可以倒推出我们在实现之前需要学习的主要内容。

  1. 层现层技术,也称为前端技术:需要学习展现层所需要的“模板”如何写。对应到三大块知识点:HTMLCSSJavascript。其中:a )HTML主要用来描述展现时的排版(整个页面布局,每一块的比例、大小等); b) CSS用以描述展现内容的样式(展现文字的字体、色彩、边框等); c) Javasctip用于动态改变展现效果以及处理用户的操作等。
  2. 业务层技术:如前所述,该层用于实现既定的业务逻辑和流程。首先需要学习一门编程语言加以实现。但由于不管什么业务的WEB应用系统,都存在大量相似(公共、通用)的逻辑和流程,它们不需要我们从零实现,而是由现成的,通常被称为“框架/Framework”的程序实现。因此在这一层,我们还需要学习此类框架。
  3. 数据层技术:需要学习数据库系统和缓存系统。这么理解二者的区别与分工:你开一家超市,在卖的东西可以放在超市货架上,一旦卖光了,再去仓库调货。缓存系统类似超市货架,数据库系统类型商品仓库。当前开发互联网WEB应用,全球最主流的数据库系统是MySQL,最主流的缓存系统是Redis
  4. 接入层(夹层):这是前端与后端对接的位置,该层除负责向展现层直接提供静态数据之外,也负责向业务层转发非静态数据的请求。该层有许多现成的方案与产品,我们同样学习最主流的Nginx

 

除了以上和Web应用系统开发息息相关的四点,其余还有一些更加具体的,只要是学习编程就基本需要的知识点,比如写代码需要用到IDE(集成开发环境)软件,管理代码需要用到Git等。再如,因为我们需要在Linux下学习、开发、部署我们的系统,所以这就需要学习Linux如何安装,使用等等。

课后导言

知道要学什么之后,下一个问题,就是这些知识点难不难学?一个零编程基础的人,能学会吗?需要多长时间?有什么好的学习捷径?学完之后我们的优势劣势各有哪些?这些问题的答案,请看看下一节。