项目概述

国内外已经有了一些成熟的视频流媒体共享网站,例如国内的慕课平台,国外最著名的是Coursera,为学生提供了海量的学习资源。但是不管MOOC和还是Coursera都只主要提供了学习相关的视频教学。对于一个校园共享平台,还应该具有其他更完善的功能。本项目将搭建一个集视频学习,作业提交,课程考试等功能于一体的网络共享平台。

一、架构与设计模式

本系统采用 B/S(Browser/Server)架构模式,B/S 架构主体为客户端浏览器和远程服务器,是目前软件行业中广泛使用网络应用模式,它要求各个构件之间具有相互独立的功能,具有较高重用性。B/S 模式使本地客户端的使用方式统一化和简单化,开发人员可以把更多的经历投入在系统开发中,而用户从浏览器进行远程访问即可,无需安装额外软件,这样就可以很方便的访问和使用 Web 系统。相比于 C/S 模式,本文所采用的 B/S 模式通常只有一次性的成本投入,可操作性更强。对于用户而言 B/S 模式可以减少安装在客户端的软件数量。前端部分的功能实现较少,客户端的管理人员可以投入更多精力侧重于后台的维护,便于进行后期的维护工作,降低了开发过程中的时间和经济的成本。在 B/S 模式下,用户只要通过浏览器就可以获取远程服务,在后台处理程序过程中完成信息的通信和交互工作,而系统业务处理过程中涉及到的一些必要的信息将保存在数据库中,这样就构成了下图 所示的三层结构:

共享平台架构 共享平台模式_共享平台架构


MVC 系统设计模式综合了设计模式中的观察者模式、策略模式、工厂模式、组合模式,从而集合了这四种模式的优点,经过不断的完善,成为现下比较成熟的一种设计模式。MVC 即 Model(M 模型)、View(V 视图)和 Controller(C 控制器),取自三个单词首字母。MVC 将将业务逻辑、数据和显示层相互分开,同时也保证各层的代码编写相互隔离;这样的方式降低了各层间的耦合性,便于底层代码的整理和维护。从而增加代码的可重用行和提高可维护性。

共享平台架构 共享平台模式_设计模式_02

二、运行环境与开发技术选型

1.运行环境

jdk8 + Linux Ubuntu18.04.1 + mysql5.7 + redis4.0.0

2.技术选型

(1)前端框架vue

Vue.js是一款轻量级的以数据驱动的前端JS框架,其和jQuery最大的不同点在于jQuery通过操作DOM来改变页面的显示,而Vue通过操作数据来实现页面的更新与展示。

共享平台架构 共享平台模式_共享平台架构_03

(2)后端框架SpringBoot + MyBatisPlus

SpringBoot可以创建独立的Spring应用程序,直接嵌入Tomcat,提供自以为是的“入门”依赖项,以简化构建配置尽可能自动配置Spring和3rd Party库,提供生产就绪的功能,例如指标,运行状况检查和外部配置,完全没有代码生成,也不需要XML配置。

MyBatis是一流的持久性框架,支持自定义SQL,存储过程和高级映射。MyBatis消除了几乎所有的JDBC代码以及参数的手动设置和结果检索。MyBatis可以使用简单的XML或注释进行配置,并将图元,映射接口和java pojo(普通的旧Java对象)映射到数据库记录。MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。


(3)Nginx

Nginx 是一个很强大的高性能Web和反向代理服务,它具有很多非常优越的特性。在连接高并发的情况下,Nginx是Apache服务不错的替代品:能够支持高达 50,000 个并发连接数的响应。Nginx可以通过反向代理来实现负载均衡。

共享平台架构 共享平台模式_Nginx_04

(4)数据库

关系型数据库采用mysql,因为mysql数据库相比其他关系型数据库相比,主从复制读写分离比较简单实现,而且它的存储引擎是可拔插的,可以根据不同的业务场景选择不同的存储引擎,比较灵活,主要的是mysql还是免费的,成本较低。

NoSql可以采用redis作为mysql的缓存,减小mysql的压力,加快数据查询速度。

共享平台架构 共享平台模式_Nginx_05

三、REST API接口

共享平台架构 共享平台模式_mysql_06

共享平台架构 共享平台模式_设计模式_07

四、概念原型视图

1.分解视图

共享平台架构 共享平台模式_Nginx_08

2.依赖视图

共享平台架构 共享平台模式_共享平台架构_09

3.执行视图

用户权限管理

共享平台架构 共享平台模式_共享平台架构_10

课程视频管理

共享平台架构 共享平台模式_Nginx_11

课程资料管理

共享平台架构 共享平台模式_Nginx_12

在线观看视频

共享平台架构 共享平台模式_Nginx_13

4.实现视图

共享平台架构 共享平台模式_mysql_14

共享平台架构 共享平台模式_共享平台架构_15

5.部署视图

共享平台架构 共享平台模式_Nginx_16

五、数据库设计

1.概念设计

本系统中有学生用户、教师用户以及管理员用户三个角色类型。这三个角色之间的联系,作为系统数据库设计的实际依据。各角色实体关系图如下:

共享平台架构 共享平台模式_mysql_17

除各用户角色外,本系统还有很多实体,部分实体介绍如下:

共享平台架构 共享平台模式_mysql_18

共享平台架构 共享平台模式_Nginx_19

共享平台架构 共享平台模式_设计模式_20

2.逻辑设计

(1)用户信息表:主要用于保存在线学习系统各类角色所有用户的相关信息。

共享平台架构 共享平台模式_共享平台架构_21

(2)视频信息表:存储课程视频的相关信息

共享平台架构 共享平台模式_Nginx_22

(3)上传文件信息表:记录上传的文件信息

共享平台架构 共享平台模式_mysql_23

(4)习题信息表:存储习题相关信息,便于进行课堂练习和考试

共享平台架构 共享平台模式_设计模式_24

六、概念原型工作机制

用户分为系统管理员、学生、教师三种角色,系统管理员主要负责对学生、教师的注册身份审核以及学生选课及教师授课权限管理,教师注册成功后可以登陆进系统,发布录制的课程视频,布置课程作业,为学生课程打分,设置课程考试,以及在评论区与学生进行互动交流,学生注册成功后登陆进系统,可以选修课程,然后观看课程视频,完成课程作业和考试,最后得到课程分数,还可以在评论区向老师提问。