(1) 支持结构体和数据库表之间的灵活映射,并支持自动同步;
(2) 同时支持原始SQL语句和ORM操作的混合执行[8];
(3) 支持级联加载类型;
(4) 支持数据库级别的缓存;
(5) 支持记录版本(即乐观锁)、创建时间和更新时间。
2。5 REST
本系统API主要以RESTful形式,利用不同的http请求类型,对应新增、更新、删除等操作。
REST即表述性状态传递(Representational State Transfer,简称REST)是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格[9]。主流的三种Web服务交互方案中,REST相比于SOAP(简单对象访问协议)以及XML-RPC更加简单明了,无论是对URL的处理还是对Payload的编码,REST都倾向于用更加简单轻量的方法设计和实现。值得注意的是REST并没有一个明确的标准,而更像是一种设计的风格[10]。
概括来说,可以这么理解RESTful架构
(1)每一个URI代表一种资源,如课程就是一个资源,为了方便,我们通常将课程定义为复数;
(2)客户端和服务器之间,传递这种资源的各种表现层,即客户端和服务器只需要通过URI即可完成通信;
(3)客户端通过GET、POST、DELETE、PATCH等HTTP动词,分别对服务器进行查询、新增、删除和更新等操作
良好的RESTful API应该提供在线测试文档,本系统选用Swagger UI作为在线文档生成和测试工具。Swagger UI支持根据代码同步生成API在线文档,这些文档可用户项目内部API审核,方便测试人员了解API。同时良好的APU设计也有助于产品的维护。
2。6 本章总结
本章首先介绍了本系统使用的开发语言Go语言,通过对比Java、Python等语言,讲解了使用Go语言开发本系统的原因;然后介绍了数据库PostgreSQL,用以增强系统的稳定性,而且在数据类型方面也有多种选择;接着介绍了其中使用的Go语言框架,很大程度上节约了开发时间,避免重复制造轮子;最后介绍了接口设计规范REST,并利用其中的一款在线测试文档Swagger作为开发工具。
第三章 系统总体设计
本章以整体架构为切入点,先介绍了基于云平台的移动学习系统的总体架构,然后详细介绍了系统服务器端功能模块,接着介绍了系统基于RBAC(Role Based Access Control)的权限设计,最后根据需求制定了数据库设计。
3。1 系统总体架构
如图3-1所示,基于云平台的移动学习系统以移动互联网和云计算技术为核心,可分为服务器端、云平台、Web端和移动端4个部分。
图3-1 总体架构图
系统的主要使用者为学生、教师和管理员。系统基于现有云平台(七牛云存储平台),实现“在线学习资源”的云端持久化。服务器端采用Go语言,采用CQRS架构(命令查询职责分离),利用其高并发的特性完成对请求的处理;数据库采用PostgreSQL数据库,持久化存储课程、用户等相关数据。论文网
3。2 系统功能模块设计
本文主要实现了服务器端和云平台处理。如图3-2所示,服务器端可分为登录注册模块、课程管理模块、用户管理模块、云存储模块、日志管理模块。课程模块和用户模块是本系统的两大核心。
图3-2系统功能模块图
(1) 登录注册模块
登录注册模块是最基础的模块,分为登录、登出和注册3个子模块。注册时,邮箱是用户的标识之一。其余请求是基于Token的身份验证方式,登录即是为了获取这个Token,并且在一定时间内,Token有效。相较于传统的Session,基于Token的身份验证能投将Web与客户端有机统一起来。登出模块,主要是为了清除服务器端存储的Token。