概述

  • 在确定了大致需求之后,我们团队对第一版学长的代码进行研究。第一版代码是用php编写的后端,因为我们组对php开发并不是很熟悉,在运行过程中遇到了较大的困难。在恢复了原网站部分功能的基础上,我们组决定对该项目利用自己熟悉的技术进行重构,并在重构的基础上进行需求的增量开发。

后端技术

  • 因为有部分组员之前进行过Java后端方面的开发,对这块内容比较熟悉,所以打算采用springboot框架对后端进行重构。springboot能够创建独立的Spring应用程序,同时框架内有嵌入的Tomcat,使得我们无需部署War文件即可进行代码部署。同时,简化了包管理工具Maven的配置。
  • 同时springboot网上相关教程内容远比php丰富,用户社区活跃,对于我们开发能够起到一定的帮助作用。
  • 利用maven对依赖包进行管理控制,能够保证组内成员开发过程中保持包的一致性,同时也方便之后接受相应代码继续进行开发的工作。

前端技术

  • 前端技术可以复用之前项目所用的bootstrap技术,同时在这基础上,加入能与springboot较好配合的Thymeleaf模版引擎。
  • 在JS方面,沿用之前项目的Js,并在此基础上增加相应内容。
  • Thymeleaf特点
    1.Thymeleaf 在有网络和无网络的环境下皆可运行,即它可以让美工在浏览器查看页面的静态效果,也可以让程序员在服务器查看带数据的动态页面效果。这是由于它支持 html 原型,然后在 html 标签里增加额外的属性来达到模板+数据的展示方式。浏览器解释 html 时会忽略未定义的标签属性,所以 thymeleaf 的模板可以静态地运行;当有数据返回到页面时,Thymeleaf 标签会动态地替换掉静态内容,使页面动态显示。
    2.Thymeleaf 开箱即用的特性。它提供标准和spring标准两种方言,可以直接套用模板实现JSTL、 OGNL表达式效果,避免每天套模板、该jstl、改标签的困扰。同时开发人员也可以扩展和创建自定义的方言。
    3. Thymeleaf 提供spring标准方言和一个与 SpringMVC 完美集成的可选模块,可以快速的实现表单绑定、属性编辑器、国际化等功能。
        引用自https://www.cnblogs.com/jiangbei/p/8462294.html

项目大致结构

├── pom.xml
└── src
    ├── main
    │   ├── java
    │   │   └── spring
    │   │       └── boot
    │   │           └── core
    │   │               ├── QuickStartApplication.java
    │   │               ├── domain
    │   │               │   ├── Question.java
    │   │               │   └── QuestionRepository.java
    │   │               ├── service
    │   │               │   ├── QuestionService.java
    │   │               │   └── impl
    │   │               │       └── QuestionServiceImpl.java
    │   │               ├── controller
    │   │               │   ├── QuestionController.java   
    │   │               └── web
    │   │                   └── QuestionController.java
    │   └── resources
    │       ├── application.properties
    │       ├── static
    │       │   ├── css
    │       │   │   └── default.css
    │       │   └── images
    │       │       └── favicon.ico
    │       └── templates
    │           ├── xxxx.html
    │           └── xxxx.html
    └── test
        └── java
            └── spring
                └── boot
                    └── core
                        ├── QuickStartApplicationTests.java
                        └── domain
                            └── QuestionRepositoryTests.java
  • 上述内容为题库后端大致结构,物理实验报告的后端在原本的基础上进行重构,也遵循相应的结构进行。

各逻辑模块交互部分:

数据库部分

  • 数据库方面,数据库需要在原本数据库的基础上增加题库相关的内容。
  • 用户表中也需要增加如用户收藏的问题id等相关的字段。
  • 为了后端调用的方便,可能在此基础上还需要增加相关辅助字段。

前端与后端的交互

  • 前端通过html或者js提供相应的post或者get请求,获取后端的相应资源。
  • 用户登陆模块,沿用常规的用户登陆方式即可。
  • 在实验模版这块内容上,前端用户输入相应的实验数据,js将相应的实验数据转化为xml格式传递给后端,后端得到相应的请求之后,调用与脚本交互的逻辑。这是实验模块这部分的核心交互内容。
  • 在题库模块,前端与后端的交互主要传输用户对与题目的解答,后端根据传输的内容进行正确与否的判断之后,再传递回前端相应内容。

后端与脚本文件之间的交互

  • 只有实验模块部分后端才需要与脚本文件进行交互。
  • 后端根据前端传过来的信息,生成相应的xml文件并提供给python脚本调用。python脚本生成完成之后,将生成的内容传递回前端进行展示。
  • 在交互过程中,通过shell脚本文件作为后端与python脚本之间的桥梁。

运行环境等要求

  • 运行过程需要有网络的环境,如果对于输入输出的参数有假设的内容,在前端进行判断后,保证正确之后传递给后端。

设计的优缺点

  • 该设计的优点:分模块,分步进行相应内容的处理。降低了代码各个部分之间的耦合度。遇到错误的情况也能够较好地定位。同时遇到相应的性能问题也容易找到性能瓶颈的地方尝试进行相应优化。增加功能等方面也比写在一起更加灵活。

  • 该设计的缺点:逻辑上增加了一定复杂度。同时处理效率会有所下降。

posted on 2019-04-01 09:27  秘制牛肉  阅读(185)  评论(0编辑  收藏  举报