开发企业级的部标GPS监控平台,投入的开发力量很大,开发周期也很长,选择主流的开发语言以及成熟的开源技术框架来构建基础平台,是最恰当不过的事情,在设计之初就避免掉了技术选型的风险,避免以后在开发过程中,不断的填坑走弯路,以至于整个团队被坑埋掉。做GPS平台这么多年,以前就了解到一些开发团队过于关注某一种语言的优势,比如过于选用GO,Erlang,python,php等技术,最后团队熟悉这些技术的关键人员离职了,都没人接手,不能不说是个悲剧。所以说平台的技术架构选型要注重的是稳健,均衡而不是偏激,而SpringMVC4, Mybatis4, Hibernate4就是GPS监控平台软件开发的理想框架选择。
废话少说,我们现在构建基于BS网页Web模式的部标GPS监控平台,基于主流的J2EE三层模型,主要的技术选型如下:
1.基础容器框架 spring4
2.Web框架 Springmvc4
3.ORM实体与关系数据库映射框架 hibernate4
4.SQL查询框架 mybatis3
5.单元测试 junit4
6.日志 log4j
7.定时任务框架Quartz
系统运行环境:tomcat7+ 、JDK7+、MySql 5.7/ SQSERVER2005/Oracle9
GPS监控的web平台对技术的要求如下:
1.实时监控和部标808协议的几十种终端指令的上传下达,百度地图车辆位置监控,地图操作等功能需要频发的对服务器发送基于ajax的request,返回json数据,基本上是重度使用ajax请求和Json传输。
2.Web服务器需要应对网页客户端重度的request请求,性能要求较高,在mvc框架开发的时候,一定要避免内存泄漏,因为在频繁的request请求调用之下,小小的内存泄漏,会一点一点积累,直至耗掉tomcat的内存。
3.安全性上,框架至少要能够防御CSRF、XSS和SQL注入攻击
Web框架我们采用sprngMVC4, 主要的考虑如下:
1.全注解环境,采用springmvc4,替xml配置,避免掉了一大堆的xml配置,对应URL的映射和request参数的映射直接在方法中通过注解配置;
2.spring mvc是基于方法的设计,controller是单例模式,而sturts是基于类,每次发一次请求都会实例一个action,每个action都会被注入属性,而spring基于方法,粒度更细,性能上更高一筹;
3.SpringMVC框架的安全性上要高于struts,详见百度搜索。
数据库ORM的框架要求如下:
1.能够比较灵活的适应主流的数据库,如mysql, mssqlserver, oracle等,现在的开发团队和开发人员在开发的时候,几乎没有人关注这个问题,基本都是在一个数据库上吊死,而作为一个平台的开发,为应对不同的客户要求,团队的开发力量有限,不能一个数据库一个版本,这样开发和维护、升级、测试成本就急速的升高,所以我们追求的是一下几个原则:
1)不用存储过程和触发器;
很多开发团队都是重度的存储过程和触发器的使用者,连简单的查询分页都要用存储过程,一旦开发人员离职,这些存储过程和触发器都像天书一样,难以维护,一般我们的代码都是在SVN基于配置库进行版本管理,而存储过程和触发器却脱离这些之外,存储过程和触发器如果有bug出现问题,在生产环境上,很难进行跟踪,web容器的日志记录只能跟踪到java代码级别,剩下就需要DBA来配合了。
2)使用Hibernate4 框架,实体类和数据库的映射都在类和属性方法上完成;基于Hibernate的配置就可以轻松切换到其他数据库。
3)采用采用Mybatis的物理分页插件,通过拦截器的方式,在开发人员编写的SQL上进行拦截,并自动包装上各个数据库的物理分页代码,可以支持多个主流数据库的物理分页查询方法。
4)采用mybatis和log4j,可以很方便的打印SQL日志,方便调试跟踪。
基于Maven构建多模块项目工程,打造干净的依赖库
我们在开发GPS监控平台的时候,一般都是基于业务功能和职责,将业务分为多个模块,各个模块之间相互独立,每个模块可以独立运行或者作为独立的公共类库被其他模块所依赖如Dao、Service等。
实际上一个部标GPS监控平台,里面包含了多个业务功能模块,如部标808GPS服务器,web网页客户端,809转发服务器,移动API,位置服务,计算服务等等。
由于多个模块,都需要依赖这些开发框架,而开源框架又有各自的依赖的jar包,他们的版本搭配非常关键,例如springmvc4用的jackson框架是2.1, springmvc3 用的jackjson框架是1.x版本,你如果搭配错了,项目运行不起来了。再比如spring和mybatis, hibernate之间的无缝结合,虽然是互相搭配,但你如果用的版本不一致,也会造成项目出错。未来我们想升级某个框架,比如从spring4升级到spring5,也是不是单纯的只升级spring4, 而是要考虑hibernate, mybatis等框架的联动升级。
所以采用Maven来提供工程的中央仓库,所有的子模块共享一个POM文件,避免各个子模块各自重复依赖一大堆jar包。Maven的多模块其实就是按照层级的管理构建,项目包含一个pom.xml文件和若干个模块,每个模块有一个单独的pom.xml文件,通过pom的依赖和继承关系来构建项目层次。一旦建好以后,就可以终身享用,工作量会大大降低,jar包版本不一致的造成的项目风险会大大降低。
而整个项目工程的拷贝复制就更加简单,里面不再有大量的jar包,开发人员只需从配置库上更新最新的代码后,配置库中不再有大量的开源框架jar包,而是从Maven中央仓库中自动更新。建立工程的时候,直接选择导入Maven工程,一键将所有的模块导入到新的workspace当中,非常方便。
购买GPS平台或GPS监控系统源码,联系我2379423771@qq.com
工程目录和包命名规范
我现在根据Spring的注释,包的命名,当然这首先建立在你对三层架构的熟悉上。
com.ltmonitor.jt808.app 808服务器应用程序
com.ltmonitor.jt809.app 808服务器应用程序
com.ltmonitor.web.vo 用于web页面传递的对象
com.ltmonitor.service.vo 用于服务传递的对象
com.ltmonitor.controller MVC中的控制,Spring的注释@controller
com.ltmonitor.controller.map 地图表现层
com.ltmonitor.controller.terminalcommand 终端指令
com.ltmonitor.entity 实体类
com.ltmonitor.entity.jt808 专用于808gps服务器的实体类
com.ltmonitor.entity.jt809 专用于809服务器的实体类
com.ltmonitor.dao Dao层
com.ltmonitor.servce service层
com.ltmonitor.server gps服务器层
。。。
。。。。。
。。。。
一下还有很多,就不一一列举。
.NET平台,参见:基于Asp.NET MVC构建GPS部标平台