基于Spring4+SpringMVC4+Mybatis3+Hibernate4+Junit4框架构建高性能企业级的部标GPS监控平台

时间:2022-12-17 19:21:05

开发企业级的部标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服务器层

。。。

。。。。。

。。。。

本版本是2015-2016年近一年推出的稳定版本,相对于原来的2014年研发的旧版的struts版本,从性能和功能上有了较大的提升,融合了大量客户的需求意见,特点:

1)SpringMVC版本已经替代struts成为主流框架,在安全和性能上有很大的提升,struts开源框架有安全隐患,容易受到攻击,公网服务器可以被黑客攻破获得管理员权限。

2)采用Netty框架替代原有的Mina框架,在服务器的并发性能上有了大幅提升,普通服务器单进程可以支撑到3万台终端;部标808服务器所支持的部标协议,旧版只支持jt/t 808 2011版本的协议,新版本全面支持jt/t 808 2013版本的协议,如定时拍照等新特性,增加了808协议数据实时转发的特性。

3)可以接收第三方的转发的数据,由于很多GPS平台所获得的数据都是从第三方平台而来,并不能得到一手的GPS终端数据,809模块增加了809*运管服务器,用来接收第三方转发而来的数据。

3)采用Mybatis替代旧版本中已经淘汰的Ibatis框架,通过Mybatis的查询分页插件,可以很方便的支撑各种数据库的分页查询,代码可以支持Mysql, Sqlserver, 和Oracle三种数据库,利用Mybatis的批量插入特性,大幅提升了GPS数据入库的性能;

4)地图部分做了较大的优化,统一地图接口,支持百度、高德和四维三种地图;

5)新版本是基于saas的多租户架构设计,充分支持多公司,多集团,多代理的组织架构模式,不同企业实体的数据、权限进行完全的隔离,可以单独为每个企业分配企业管理员,企业管理员在自己的企业实体内,可以单独分配角色权限,建立部门和车队;

6)Spring框架从旧版的2.5升级到Spring4, 从原来的全xml配置,利用Spring4的注解特性,大幅削减了系统的xml配置,系统部署和配置更加方便,维护更加容易;

7)对原有的代码做了大量的优化,性能做了较大的提升,代码进行了充分的重构,增加了大量的注释,设计文档进行了重写;

旧版的基于struts2技术框架的平台仍然在销售,但不再提供源代码升级的服务,参见基于Struts+Spring+Hibernate+Ibatis+Quartz+Mina框架构建部标监控平台

.NET平台,参见:基于Asp.NET MVC构建GPS部标平台

基于Spring4+SpringMVC4+Mybatis3+Hibernate4+Junit4框架构建高性能企业级的部标GPS监控平台的更多相关文章

  1. 基于Spring4+SpringMVC4+Mybatis3+Hibernate4+Junit4框架构建高性能企业级的部标1077视频监控平台

    开发企业级的部标GPS监控平台,投入的开发力量很大,开发周期也很长,选择主流的开发语言以及成熟的开源技术框架来构建基础平台,是最恰当不过的事情,在设计之初就避免掉了技术选型的风险,避免以后在开发过程中 ...

  2. GPS部标监控平台的架构设计(十一)-基于Memcached的分布式Gps监控平台

    部标gps监控平台的架构,随着平台接入的车辆越来越多,架构也面临越来越大的负载挑战,我们当然希望软件尽可能的优化并能够接入更多的车辆,减少在硬件上的投资.但是当车辆增多到某一个临界点的时候,仍然要面临 ...

  3. SSM框架整合环境构建——基于Spring4和Mybatis3

    目录 环境 配置说明 所需jar包 配置db.properties 配置log4j.properties 配置spring.xml 配置mybatis-spring.xml 配置springmvc.x ...

  4. 基于BootStrap框架构建快速响应的GPS部标监控平台

    最近一个客户要求将gps部标平台移植到bootStrap框架作为前端框架,符合交通部796部标只是他们的一个基本要求,重点是要和他们的冷链云物流平台进行适配.我自己先浏览了客户的云物流平台的界面,采用 ...

  5. 基于supersocket、C#对JT808协议进行解析构建gps监控平台服务端

    GPS监控平台.车联网.物联网系统中GPRS网络数据的并发通讯和处理解析,主要功能有socket的UDP和TCP链路建立和维持,网络数据协议包接收与解析,分发上传到其他业务规则服务器,在物联网以及位置 ...

  6. 基于Java Netty框架构建高性能的部标808协议的GPS服务器

    使用Java语言开发一个高质量和高性能的jt808 协议的GPS通信服务器,并不是一件简单容易的事情,开发出来一段程序和能够承受数十万台车载接入是两码事,除去开发部标808协议的固有复杂性和几个月长周 ...

  7. 基于C#和Asp.NET MVC开发GPS部标视频监控平台

    基于C#和Asp.NET MVC开发GPS部标监控平台 目前整理了基于.NET技术的部标平台开发文章,可以参考: 1.部标Jt808协议模拟终端的设计和开发 2.C#版的808GPS服务器开发-&gt ...

  8. 使用Maven完成SSM框架整合环境构建——基于Spring4和Mybatis3

    只言片语 使用Maven来搭建一个SSM环境,其实和使用手工倒入jar的过程没有多大区别,所用的jar包都是一样的,但是区别在与不用你手动导入jar包了,而是只修改pom.xml,maven会自动根据 ...

  9. 基于Java Netty框架构建高性能的Jt808协议的GPS服务器(转)

    原文地址:http://www.jt808.com/?p=971 使用Java语言开发一个高质量和高性能的jt808 协议的GPS通信服务器,并不是一件简单容易的事情,开发出来一段程序和能够承受数十万 ...

随机推荐

  1. 快速学习C语言二: 编译自动化, 静态分析, 单元测试,coredump调试,性能剖析

    上次的Hello world算是入门了,现在学习一些相关工具的使用 编译自动化 写好程序,首先要编译,就用gcc就好了,基本用法如下 gcc helloworld.c -o helloworld.o ...

  2. UIView的生命周期总结

    序言: loadView.viewDidLoad.viewDidAppear.initWithNibName.awakeFromNib等经常出现在UIViewController中的方法介绍. 这些方 ...

  3. Direct3D-3 四元数

        其实本来这篇文章是打算接上篇的各种变化矩阵的推导了,想了想,还是先讲四元数吧.本人的文章并不会提到欧拉角,因为我自己没弄懂欧拉角的万向锁问题.     很多人学习数学时,会有这样一个疑惑,这东 ...

  4. dx环境搭建

    我使用的是vs2012+DXSDK_Jun10 DXSDK_Jun10下载地址http://download.microsoft.com/download/A/E/7/AE743F1F-632B-48 ...

  5. HDU 4612 Warm up(双连通分量缩点+求树的直径)

    思路:强连通分量缩点,建立一颗新的树,然后求树的最长直径,然后加上一条边能够去掉的桥数,就是直径的长度. 树的直径长度的求法:两次bfs可以求,第一次随便找一个点u,然后进行bfs搜到的最后一个点v, ...

  6. 04 整合IDEA+Maven+SSM框架的高并发的商品秒杀项目之高并发优化

    Github:https://github.com/nnngu 项目源代码:https://github.com/nnngu/nguSeckill 关于并发 并发性上不去是因为当多个线程同时访问一行数 ...

  7. [CERC2014] Virus synthesis

    设f[i]为形成极长回文串i的最小操作数.答案为min f[i]+n-len[i]. 在不形成偶回文的情况下形成奇回文的最小操作数为该串长度.可以不考虑(但ans赋为len). 正确性基于: 1)奇. ...

  8. ubuntu下objective-c的编译和运行

    ubuntu 下编译objective-c 1.安装编译环境 sudo aptitude install build-essential gobjc gobjc++ gnustep gnustep-d ...

  9. Java 面向对象之接口、多态

    01接口的概念 A:接口的概念 接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的”类”. 接口只描述所应该具备的方法,并没有具体实现,具体的实现由接口的实现类(相当于接口的子类)来完成 ...

  10. 微信小程序开发中的二三事之网易云信IMSDK DEMO

    本文由作者邹永胜授权网易云社区发布. 简介 为了更好的展示我们即时通讯SDK强悍的能力,网易云信IM SDK微信小程序DEMO的开发就提上了日程.用产品的话说就是: 云信 IM 小程序 SDK 的能力 ...