论软件三层架构设计
摘要:
本人于2018年1月参与了中石化XX油田XX采油厂“用电管理系统”的项目建设,该系统建设目标是实现分单位、分线路、分系统评价、优化、考核,全面提升采油厂用电管理水平。在该项目组中我担任系统架构师一职,主要负责系统整体架构设计。本文以该项目为例,讨论系统三层架构的设计过程,重点讨论系统在设计过程和在设计实施过程中碰到的一些问题和解决方法,最后说明采用三层架构所带来的效果,以及可以改进的地方。在我的带领下,项目实施非常顺利,并获得采油厂领导及厂、区多级用户的一致好评,该项目也成功获得了当年度分公司科技进步创新一等奖。
正文:
“用电管理系统”项目是采油厂能源管控中心系统的一个子系统。能源管控中心是中石化集团公司十三五规划中的“能效倍增”计划在胜利油田分公司的示范应用项目,该示范项目能够在实现企业节能目标管理、能源计量统计、节能潜力识别、能效分析优化的同时,有效支撑企业实施节能技术改造、促进企业用能水平不断提升
“用电管理系统”的建设目标是建立覆盖厂、区两级用电管理一体化体系,实现分单位、分线路、分系统评价、优化、考核,达到电网运行质量实时监控、异常情况精准管控、能耗总量全面受控,按照运行产量的方式运行电量,全面提升采油厂用电管理水平。该项目功能设计参考PDCA闭环管理的理念,共设计包括用电计划、用电分析、用电优化、用电考核、设备管理等五大功能模块。
我作为单位技术骨干之一,主持并参与了项目计划制定、需求分析、设计、编码、设计、测试等阶段的工作。由于油田系统对安全性、可靠性、可用性和扩展性要求很高,我选择了三层B/S架构作为该系统的软件体系架构,下面,我将分层次详细介绍三层B/S软件体系结构的设计过程。
(1)表示层采用了HTML5+Vue+BootStrap等前端技术。
由于用户提出全厂的电力系统拓扑图能够自由定制,我们综合考虑多种方案后选择了使用HTML5Canvas技术来实现电力系统拓扑图的自由定制。HTML5是互联网的下一代标准,是构建以及呈现互联网内容的一种语言方式.被认为是互联网的核心技术之一。最终采用HTML5Canvas技术实现的拓扑图的非常轻巧,性能出色,能够支持上万图元,操作流畅,并且支持矢量图形,无极缩放等。Vue是一套用于构建用户界面的渐进式JavaScript框架。Vue与其他JS库不同,它的核心库只关注视图层,非常容易学习,非常容易且方便与第三方库或既有项目整合。项目组的两个新接触vue的开发人员在极短时间内就掌握了相关开发技巧,为项目前端的快速开发打下了良好的基础。Bootstrap是最受欢迎的基于HTML、CSS、JS的框架之一,是一个用于快速开发Web应用程序和网
站的前端框架。我们采用基于Bootstrap的系统界面样式及响应式的展现形式得到了客
户的称赞,为后续项目工作的开展打下了良好的基础。
(2)中间业务逻辑层采用SpringMVC+ApacheShiro,并使用ehcache缓存技术以提高访问效率。
我们选择了当前最优秀的MVC框架之一的SpringMVC来简化开发,使开发人员可以专注于表示逻辑和业务逻辑的开发工作,SpringMVC是一种实现了WebMVC设计模式的请求驱动类型的轻量级Web框架。通过框架的使用,缩短了开发周期,减少了开发费用和维护费用,提高了开发的成功率。基于安全性方面考虑,我们选择ApacheShiro,它是一个功能强大且易于使用的Java安全框架,为开发人员提供了一个直观而全面的解决方案,用于身份验证、授权、加密和会话管理。通过使用SpringMVC+ApacheShiro的分层设计,实现了各层次低耦合,高内聚,并严格遵循了web安全的相关规范,通过前后台双重验证,参数编码传输,密码SHA-256加密存储,shiro权限验证等手段,从根本上避免了SQL注入,XSS攻击,CSRF攻击等常见的web攻击手段。为防止频繁读取数据库导致系统性能下降问题,我们选择采用开源的J2Cache两级缓存框架,即一级采用Ehcache,二级采用Redis缓存技术,通过该框架的使用,提高了系统性能和访问效率。
(3)数据层选择MyBatis,数据库选择Oracle11g。
数据层方面我们选择了MyBatis作为持久层框架,它可以使用简单的XML或注解来配置和映射原生信息,将接口和Java的POJOs(PlainOrdinaryJavaObject,普通的Java对象)映射成数据库中的记录。MyBatis简单