校园软件服务平台的开发与搭建

工程论文 2020-05-01 点击:

学校的软件服务平台不仅包含企业的工作流程,还包括教师授课产出的智力资源共享管理以及学生相关的查询服务。校园软件服务平台支撑着来自各个部门的工作需求,为全校所有人员的提供相应服务。校园软件服务平台是对人事、教学、科研、管理、技术服务、生活服务、安全等各个领域的信息进行收集、处理、集成、保存、挖掘、传输和应用,拓展校园的时间和空间,使知识资源得到充分利用和共享,使师生交流,部门协同更加方便,提高学校管理水平和工作效率,降低教学和管理成本。它是“数字校园”系统工程的一部分,承担着数据保存和应用的重要使命。随着信息化实践的深入,信息技术的快速更新迭代,使得早先现存的软件服务体系难以兼容后期引进的现代化的软件服务。最终导致学校遗留的软件服务系统与后来引进的各种软件服务不能很好地协同工作。这种新旧兼容性问题带来了额外的工作量,同时暴露出很多局限性和困惑,导致“信息孤岛”的产生。
  
  信息技术日新月异,或许无法做到根治,但能在相当长的时间中保持稳定。校园软件服务平台应该从软件架构上解决新旧兼容性问题,重新设计软件服务平台框架,保证在可以预计的10年内持续提供服务,并支持上下兼容。该框架应解决如下问题:
  
  (1)数据保存,读取采用统一的访问接口,屏蔽具体的数据软件版本。  
  (2)软件服务平台必须具备跨操作系统平台特性,能轻松从Windows转向Linux等其他系统。  
  (3)软件服务平台具备可拆卸、组装的项目模块特性,既能形成整体提供服务,也能拆卸出单个项目独立运行。  
  (4)软件服务应具有统一的数据传输格式。  
  (5)软件服务平台自适应各种终端(电脑端、移动端)。
  
  一、系统结构设计
  
  总体上分为4层,每层只能访问相邻的层服务,不能越层访问。
  
  数据库层(含连接配置):Mysql,Oracle,Derby等各种不同厂商的不同软件。
  
  数据访问层:承上启下作用,对上层数据库实现基本的CRUD原子操作,对下层提供公共的统一的访问接口(基于REST风格实现)。
  
  传输协议层:使用XML或者JSON格式作用数据传输的协议。
  
  展示终端:浏览器(含PC和移动端),安卓App,苹果App,微信App等。
  
  系统结构设计示意图如图1-1所示:
  
  这种四层总体设计,并不只是针对整个软件服务体系,而是可以应用在单个子系统项目中,不论是子系统,还是服务平台,都遵循这种设计模式,就能实现子系统项目合并和分离时对软件服务不会造成障碍。
  
  二、技术选型
  
  (一)软件结构选型。为实现在任何展示终端中都能够显示,这里设计的结构不再是常规意义上的B/S结构(浏览器-服务器)或者C/S(客户端-服务器)结构,而是遵循“前后分离”的模式,当下阿里巴巴也在做这样的事情,只不过业务不同罢了。“前后分离”需要做到接口规范清晰定义,数据格式清晰定义,后端开发无需关心前端的业务逻辑,前端业务无需关心后端开发进度。两者之间的关联通过“数据访问层”和“传输协议”进行了隔离,实现了“解耦”.基于REST风格的Web服务结构,保证了任何终端都能使用同一个后端服务,不对展示前端的平台做任何限制。
  
  (二)软件开发技术选型。开发技术选择SpringMvc+Ma-yen,Spring是轻量级开源的Java开发框架,可扩展性强,不仅有自己的JPA规范,而且几乎兼容市面上所有的数据库框架(如Hibernate,Mybatis等),同时全面支持REST风格开发。选择SpringMVC作为“数据访问层”既安全又便捷。
  
  (三)数据库的选择。遵循敏捷开发原则,逐步迭代,刚开始选择轻量级框架和数据库:Mybatis+Mysql;选择MySql数据库的作为第一首选,是因为Mysql发展很快,阿里云数据库服务就是在开源MySql的基础之上升级改造出了性能和功能超过Oracle的软件。加之MySql提供了Cluster分布式集群数据库,经测试集群MySql在多个机器的内存之间传输数据非常快。选择Mysql作为数据库,在相当长的一段时间内不会变动。后期根据实际需求和业务需要可以考虑更换为重量级框架和数据库:Hibernate+Oracle.
  
  (四)软件通信协议选择。通常Web服务不需要通信协议,直接通过网页的形式展现服务结果。这种方式使得服务器和前端形成高耦合,属于强关联关系,伸缩性低,不便于后期扩展。软件平台提供的服务不应该局限于浏览器,它既可以是浏览器,也可以是桌面应用程序,还可以是移动端App,因此在服务器和终端之间加入一层通信协议,只要能够遵循这种协议格式,就能基本实现“前后分离”式的同步开发。当前市面上比较通用的两种数据交换格式分别是XML和JSON.JSON是一种轻量级的数据交换格式,它采用完全独立于语言的文本格,编码比XML简单,结构也更清晰,占用空间更少,节约带宽;考虑到服务的密集型访问带来的宽带消耗,大量碎片数据传输引起的性能消耗,通信协议的选择更适合选择JSON.
  
  (五)浏览器前端开发技术选择。桌面端市场主流框架有很多,比如:Bootstrap,jQueryUI,ExtJS,D0jo,Mootools,YUI等等。对于桌面端,目前Bootstrap和jQueryUI已经可以满足大多数的开发需求,从展示效果,美观程度上,Bootstrap更胜一筹。Boot-strap本身是基于jQuery进行JavaScript处理,所以浏览器的选型使用HTML5+CSS3+Bootstrap作为基本配置。接着前端开发的另一个重要组成就是js框架。选择js框架的参考的因素是,前端是否需要投入更多的精力,是否需要承担更多的业务逻辑。在实现软件服务平台的“前后分离”,同时适当分担服务器的压力,前端的业务逻辑不可缺少,在市面上支持MVVM模式的框架已经三分天下:angular、vue和react.vile.js有更好的性能,并且容易优化,语法结构与angularjs相当。这里选择vue作为前端开发的MVVM框架。
  
  (六)移动端开发技术选择。移动端的操作系统阵营有:Android,IOS.以及应用层的微信App,两大操作系统完全不同,开发难度和成本都很高,我们通常开发的app软件都属于原生程序(使用操作系统的API开发的软件),现在出现一种新技术叫做混合App开发(HyBrid),实现了一次编码多平台使用的跨平台执行特点。经过实际测试,这种技术可以应用在校园软件服务平台的展示端(终端)。初步选择起步公司的Wex5开发工具。Wex5对cordova插件进行了封装,使用HTML5技术就能自动转换成安卓App和苹果App.
  
  三、数据库层
  
  数据库使用mysql,相比MicrosoftSql,它是跨平台的,对各个开发语言友好,占用空间小,性能高,首次使用可与服务器安装在一个操作系统中,根据需求的变化,完全可以迁移到独立的数据库服务器中运行,甚至可以使用mysqlcluster集群分布式放在多个数据库服务器中(在虚拟机云就更加方便管理),而迁移后的配置变更只需要对配置文件中的IP地址进行变更即可,迁移成本非常低,配置灵活。
  
  四、数据访问层和传输协议
  
  (一)负责上层的连接管理。数据访问层由SpringMVC+Maven实现,通过配置文件访问具体的数据库软件,所有与数据库软件由直接接触的操作都由这一层负责连接和管理,这里使用轻量级数据库ORM(对象关系管理)框架Mybatis统一管理所有的数据库层。经过Mybatis框架将数据库中的表结构转换成Java对象,让开发真正面向对象,而无需考虑具体数据表结构。
  
  (二)提供下层访问接口。在SpringMVC中提供controller层(MVC中的c,控制层),controller中充分使用Spring的注解语法@RequestMapping和@ResponseBody提供RESTful风格接口服务。这是关键的核心所在。这种风格是决定“前后分离”的最重要因素,是前后端同步开发的充分条件。
  
  (三)制定接口服务规范。在SpringMVC的controller中实现访问接口服务的开发,同时在controller中定制服务规范,提前定义好GET/POST的使用语义,基本CRUD操作的命名规则,以及制定服务器后端的访问权限,参数个数,参数类型,返回数据的结构,前端的接收方式,接收格式。前后端都要遵循服务规范,才能无障碍通信。
  
  (四)传输协议。在SpringMVC项目中添加jackson依赖关系包,Spring项目中默认支持Jackson插件,jackson插件负责将Java对象转换成JSON字符串,这种转换时隐式的,不需要明显的代码调用,只需要在依赖关系中添加jackson-core,jackson-databind,jackson-annotations三个包,然后在controller的方法头上加入@ResponseBody就能实现返回数据自动转换成JSON格式的数据。
  
  五、展示终端层
  
  (一)遵守服务规范。根据上层制定的访问接口规范,展示层尽量使用非阻塞的方式访问服务,获取返回数据。非阻塞(异步访问)的方式最常用的就是Ajax技术。根据服务器提供的REST风格接口地址,在前端jQuery中使用$.ajax(),$.post(),$.get()等异步方式访问服务器接口,然后在回调函数success(data)中获得JSON数据,返回的data数据直接可以作用对象或者数组使用。解析方式遵照服务规范执行。
  
  (二)桌面端和移动端。作为服务型软件系统,对实时性要求不高,再加上移动端的浏览器都实现了HTML5的标准,在这个前提下,移动端开发技术的选择最适合使用的是HyBrid方式--混合式开发。目前主流的开发模式无外乎三种,分别是NativeApp,WebApp,HyBridApp.
  
  1.NativeApp,原生App,使用原生(即Android或iOS)开发的APP.
  
  2.WebApp,就是把手机当做一个浏览器。
  
  3.HyBridApp,综合了前面两种技术,性能和速度都介于前面两种之间。
  
  国内外兴起的HyBrid开发框架集成环境有:Wex5(基于PhoneGap),AppCan,DCOULD,IONIC,APICloud等等,以免费,开发速度,跨平台作为考量指标,适合校园软件服务平台移动端的开发工具和开发环境是Wex5,虽然这款工具在质量和效率上与国外还存在差距,选择它是因为在国内普遍需要应用的环境有:安卓,IOS,微信平台。而由Wex5开发的混合App同时支持桌面端的浏览器,几乎前端平台全兼容。
  
  作为移动端的服务部署也要考虑兼容JavaWeb平台,Spri-ngMvck框架实现的服务器容器JEE(常用的是Tomcat)后期可引入Apache或者Nginx做负载均衡,Wex5制作出来的软件也是部署在Tomcat下,与整个系统可以融为一体。既可以直接使用浏览器访问,也能通过App安装在手机移动端访问,一举两得。
  
  关键配置,将JEE项目war包,放人到Wex自带的Tomcat中,即可实现前端调用服务接口的实际测试。
  
  六、项目管理
  
  项目管理工具中Maven提供了一个插件,叫做:maven-War-plugin.这个插件的作用是实现子系统项目合并和分离的重要工具。使用maven-War-plugin插件做系统分隔的时候,注意下面几个方面:
  
  (一)将公共的功能单独放在一个独立的项目中,比如:登录认证,学生公共服务,教师公共服务等需要提供给多个项目使用的就单独放在一个项目中,通过项目依赖进行组合调用,在导入项目依赖时,在pom.xml中配置信息将默认的war更改为jar,否则依赖关系导入会失败。
  
  (二)将项目名称加入到插件配置文件中:在Maven主项目的pom.xml中将需要合并的其他项目的groupId和artifactId加入到配置信息中。
  
  (三)注意合并顺序,后加入的合并出现冲突时不覆盖之前的文件。
  
  批处理的使用在于同步公共项目,比如登录认证的首页项目。为了便于各个子系统测试,通过批处理的复制功能,将登录认证同步到所有的子项目中,便于调试测试。对于其他的公共功能可以通过Maven的依赖关系导入。
  
  结束语
  
  校园软件服务平台是集大成者,数据的互通共享是必然的途径,要避免信息孤岛,就要实现数据的隔离,所有的数据访问统一管理;项目的整合方式与功能分解极为相似,功能分解看做是手术刀,做的是细致的活,项目整合看做是部门分类,是粗粒度的。移动端的选型根据学校的具体情况作出选择,通常游戏类,图形图画类的最好选择原生的开发方式,不同的操作系统分别开发。而应用型的,实时性要求不高的建议使用HyBrid混合式开发。

校园软件服务平台的开发与搭建

http://m.rjdtv.com/gongchenglunwen/4013.html

相关推荐

猜你喜欢

大家正在看