注意,此版本是2014年研发的基于Spring2.5和Struts2的版本,此版本的源码仍然销售,但已不再提供源码升级的服务,因为目前我们开发的主流新版本是2015-2016年近一年推出的基于spring4+springMVC4+mybatis3+Hibernate4+junit4框架构建高性能企业级的部标GPS监控平台,相对于原来的2014年研发的旧版的struts版本,从性能和功能上有了较大的提升,融合了大量客户的需求意见,相对于Struts版本,主要的特点,请点击文章详细阅读和比对:
在开发一个基于Java的、BS架构的GPS平台的时候,我们总是要花费很多心思去选择框架,在此基础上进行封装提供易用的功能,来作为我们快速开发的平台。
有的公司有积累,可能在此上面花费的时间比较少,有的没积累,可能为了选择什么样的框架,为了优缺点争论不休,耽误个把月时间都有可能。
我希望在此给出一个GPS平台的标准模版,供大家参考,统一思想,快速进入状态。
平台自然是基于传统的MVC模式的思想来开发,自不待言,而MVC框架,我选择专注于控制层的Struts2,框架,专注于容器管理,面向接口和服务开发的Spring框架,专注于持久层的Hibernate、iBatis框架。专注于通信层开发的Mina框架。
采用框架,我首先想到的一点,就是约束和统一,在团队开发中,最忌讳的就是不统一,团队中我们总有些开发技术稍微落后,思想跟不上的成员,靠沟通是没有用的,而是要小孩子的学步车一样,强行把他框在一个范围内做开发,让他跟上总体的开发水平和节奏。不懂得MVC什么意思,也勉强能做出MVC的东西。所以现在的所谓的架构师,很多都是对这些东东玩的转,玩的多了就慢慢有了架构的思想,就想玩游戏,玩多了,就对游戏体验关卡设计有了感觉,再深入了解后,就开始有了格局,开始注重设计了.
1) Hibernate框架
  这个只要是做Java开发的,基本都在用,除了基本的ORM映射功能之外,我选用它,主要是很方便的自动创建表,在更新实体类的属性后,自动更新库表字段,以及可以方便移植到不同的数据库中,使用Hibernate框架,维护多个关系数据库。只需要维护不同的数据库配置的xml文件,而不是维护多个代码版本。
  如果使用PowerDesigner工具结合起来,从建模到代码自动生成到逆向更新模型,简直是后台开发人员的最爱。
2) Ibatis框架
  这个是将开发人员从写SQL,根据查询条件,动态生成SQL的地狱中,拯救出来。
  很多平台代码量貌似很大,其实都是唬人的,因为重复的写代码,代码行数能不大吗。比如GPS平台中,几十个、上百个报表,每个报表都有四五个动态组合查询条件,你如果自己在代码中拼SQL,代码量很壮观,但是很低级,工作很低级,很容易出错,错了也很难跟踪。也不容易移植。如果要SQL分散在不同的代码文件中,从mysql一直到Oracle,可能是又是一个脏活。
  我对Ibatis进行了改造,自动加上分页代码,开发人员就不用管分页,由Ibatis得到SQL后,自动根据不同的数据,加上不同的分页机制。
  如mysql分页,就是在select 语句后面加上limit , SQLserver的分页,则是根据rowNum分页,等等。
 
3)struts的规划和应用
  struts是面向前端请求的处理框架,我们首先要归纳前端的功能请求,并分类,以此作为规划struts的依据。
  首先GPS的请求,主要有:登录,实时数据,报警,报表,基础信息增删改,报表分页查询,地图持久化操作请求,终端指令下发,
  在设计Action的时候,尽量以单元形成进行规划,对XML文件按功能模块划分。对URL命名形成标准规范。
 
购买GPS平台源码,联系我2379423771@qq.com
 
4)quartz定时器框架
  很多GPS平台,大量使用了存储过程了,我见过有家公司维护100多个存储过程,太壮观了,我都不知道如果写存储过程的人走了,接手的人是不是要哭了。连分页也要用存储过程,估计负责的人很擅长存储过程。但他只顾自己爽了,即使不考虑移植,也得考虑维护、调试、SVN库提交、单元测试等等。
  其实代码中,可以做到零存储过程,对于报表统计类的,可以完全采用定时统计的方式进行。如上线率,可以半小时统计一次,也可以一个小时统计一次,完全不用写存储过程,通过漫长的计算,对大量的数据进行聚合运算,得出一个结果来。
  定时统计是一种规划手段,通过对未来数据增长量的估计,来设计现阶段的数据生成行为,通过规划来避免对数据库大开大合的查询。当车辆数和数据量达到一定层级的时候,就显示出定时统计的威力了。比如报警次数统计,如果允许用户统计任意时间段的报警次数,虽然很灵活,也满足用户需求,但是一个大型GPS平台,每月要产生出巨量的垃圾报警。一个报警统计的SQL查询或存储过程查询就把数据库的CPU推向高潮。
5) Spring框架
  作为JAVA开发的人,就不用说了,是一个容器,一个粘合剂,将各个层的功能,通过配置和依赖注入,达到粘合的作用。
  作为GPS平台,我们推崇的是面向服务开发,所以不可避免的要使用RMI,而Spring很容易将一个Service类,转换成一个远程RMI调用接口,开通接口服务。
  有了Spring框架,我们就可以专心致志的规划我们的服务了,而不用关心是远程调用还是本地调用的底层机制了。
  同时Spring的面向接口开发,天然不自觉的是我们的程序具备了初级的可扩展性。
  如地图API服务,我们可能用Java通过http请求后台调用百度地图的API来逆向地理解析,也可以用高德或谷歌的,那我们就规划一个LocationService, 定义这个服务提供加偏、地址转换等功能。至于服务是如何实现的,调用者不用关心。  
  当然了在Spring中,也非常享受工厂模式的灵活运用,通过在配置文件中配置。我们可以根据调用参数不同,生产出不同的接口类,如一个终端数据包上来,可能是部标808协议,也可能是DB44,也可能厂商自定义协议,我们可以根据spring的配置,调用不同的解析插件来进行解析。让整个代码结构都显得简洁有气质。

GPS部标平台的架构设计(三) 基于struts+spring+hibernate+ibatis+quartz+mina框架开发GPS平台的更多相关文章

  1. GPS部标平台的架构设计(十)-基于Asp.NET MVC构建GPS部标平台

    在当前很多的GPS平台当中,有很多是基于asp.NET+siverlight开发的遗留项目,代码混乱而又难以维护,各种耦合和关联,要命的是界面也没见到比Javascript做的控件有多好看,随着需求的 ...

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

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

  3. GPS部标监控平台的架构设计(八)-基于WCF的平台数据通信设计

    总体来讲,GPS部标平台的软件开发是一个对网络通信和应用程序之间通信的技术应用密集型的开发工作,也是有一定设计技术含量的工作. 1.设计通信接口 在设计的时候,根据职责划分,拆分成不同的应用子系统,对 ...

  4. GPS部标平台的架构设计(四)-百度地图设计

    部标GPS软件平台之百度地图设计 地图是客户端中不可缺少的一个模块,很多人在设计和画图时候,喜欢加上地图引擎这样高大上的字眼,显得自己的平台有内涵,说白了就是用第三方的SDK来开发,早期的GPS监 控 ...

  5. GPS部标平台的架构设计(一)

    设计和开发一个GPS系统似乎并不太难,很多人马上就想到了地图,放大,缩小之类的功能,最多就是在加点报表之类的东西,就成了. 这种观点造成了业界内,很多GPS系统粗制滥造,不堪大用. 事实上,设计和开发 ...

  6. 搭建基于SSI(struts2,spring,ibatis)的javaEE开发环境

    搭建基于SSI(struts2,spring,ibatis)的javaEE开发环境 最近有很多人不知道如何搭建基于SSI(struts2,spring,ibatis)的J2EE开发环境,这里给大家一个 ...

  7. GPS部标平台的架构设计(二) 可扩展性设计

    在设计的前夕,设计人员喜欢把领导对未来业务的期望带入到设计目标当中,比如当前业务也不过是接入几千辆车,未来业务增长也不过几万台,但领导很多激情,强势要求二期平台的接入能力要达到20万台,这个要求带入到 ...

  8. GPS部标平台的架构设计(九)-GPS监控客户端设计

    交通部的部标过检,所有的测试都是从客户端发起的,也是在客户端体现的,在客户端承载了部标标准所要求的所有的功能,是整个部标平台当中工作量最大的部分,也是最繁琐的部分. 客户端设计面临两个问题: 1.基于 ...

  9. GPS部标平台的架构设计(五)-地图服务算法库

    GPS平台,需要和各种地图打交道,需要解决以下的问题: 1.坐标偏移,这个不用多说,需要将原始坐标加偏,然后在百度地图或谷歌上显示出来,需要注意的是百度地图的加偏是偏上再偏,谷歌.高德地图等是火星坐标 ...

随机推荐

  1. VB下对HTML元素的操作

    <!DOCTYPE html> <html> <head> <title>test</title> </head> <bo ...

  2. SpringMVC核心分发器DispatcherServlet分析[附带源码分析]

    目录 前言 DispatcherServlet初始化过程 DispatcherServlet处理请求过程 总结 参考资料 前言 SpringMVC是目前主流的Web MVC框架之一. 如果有同学对它不 ...

  3. STM32之GPIO操作

    啊哈.没办法.外国人的芯片就喜欢用英文来命名,所以中文的:通用输入/输出  就用GPIO来代替..谁叫哥们都不是外国人呢.好啦.胡扯了一下,借用唐伯虎点秋香的话:小小书童,可笑可笑... 知道了GPI ...

  4. 【python】安装python第三方库lxml时,遇到问题:[ERROR: 'xslt-config' 不是内部或外部命令,也不是可运行的程序]

    一.概述 lxml介绍http://lxml.de/ 二.问题 ERROR: 'xslt-config' 不是内部或外部命令,也不是可运行的程序 三.解决方法 Scrapy在Windows上的安装笔记 ...

  5. Linux下配置一个VNC服务器

    在Linux下配置一个VNC服务器,并设置2个用户,要求其中一个用户登录时不需要输入密码. 然后在客户端使用ssh+vncview的方式访问. 1确认vnc安装 2配置vncserver 3测试vnc ...

  6. split函数的实现

    split作为字符串分割函数非常有用,但在C++里面没有这个函数.自己实现一个分割函数: 1.遇到多个分隔符连在一起,则不做分割 2.()内的分隔符不起作用 3.如果只有(,没有)不影响分隔符 #in ...

  7. Map<Key,Value>基于Value值排序

    Map<Key,Value> 排序默认是按照KEY值的升序来进行. 针对按照Value来进行排序有两种方法: 第一种 使用TreeMap  代码如下 public class test{ ...

  8. winsock error 相关

    10061-WSAECONNREFUSED 是指没有启动服务器或者说服务器没有处于监听状态.通常导致client在connect时候返回这个错误码的原因在于服务端与客户端设置的端口号没有同步转换导致( ...

  9. Python 开平方

    #!/user/bin/python3#files :using_sys.pyf = open("filename.txt","r+")num = f.read ...

  10. 在Ubuntu上安装网易云音乐

    对于网易,我只服云音乐,业界良心,用过的人都知道.我最喜欢的就是歌曲的评论功能,还有朋友圈子.里面有很多好段子,还有很多的好故事,基本上,不是分手,就是回忆初恋,还有吐槽的.我认为音乐带给人的不仅是耳 ...