总体来讲,GPS部标平台的软件开发是一个对网络通信和应用程序之间通信的技术应用密集型的开发工作,也是有一定设计技术含量的工作。

1.设计通信接口

在设计的时候,根据职责划分,拆分成不同的应用子系统,对各个子系统进行功能隔离,并通过设计接口规定子系统直接的调用规约。

首先我们根据部标平台的要求,设计和开发出各个主要的服务器子系统,这是平台中最核心的子系统,在实际的应用中,由于车辆规模的大小和行业需求,还会扩展出各种业务子系统。核心子系统如下:

1)808GPS服务器,采用交通部的部标808协议,负责与终端的数据接收、指令下发; 参见:基于部标JT/T 808协议及数据格式的GPS服务器

2)809转发服务器,采用交通部的部标809协议,作为企业下级平台,负责转发GPS数据到政府平台的服务器;参见:基于JT/T809-2011的(已过检)GPS平台数据交换及转发服务器

3)809政府服务器,采用交通部的部标809协议,作为政府上级平台,负责与下级平台进行全双工通信。

4)GPS监控客户端,采用自定义的数据通信协议与服务器进行数据通信,为用户提供监控UI,各种监控功能都直接反映在此客户端上。交通部的部标检测和认证的所有工作,虽然涉及了平台的各个部分,但是检测的发起都是从客户端发起的,其他的子系统,我们统称为后台。需要购买部标平台源码的可以联系(2379423771@qq.com)

2.接下来,我们需要确定子系统直接的通信框架。

很多老牌的GPS程序员,对于Socekt特别熟悉,只要是通信,就设计协议,然后使用Socket框架,里面侵入了大量的业务逻辑。时间长了,代码非常难以维护。

现在开发技术的发展似乎与他们绝缘。连WebService都少用。更不用说瑞士军刀WCF框架了。这种面向字节的设计和开发,常常要重复编写大量的二进制字节转换,而现在我们更喜欢的是面向接口的设计和开发,底层的东西我们已经不需要考虑,通过简单的配置就可以快速的构建出两个应用程序之间的数据通信。采用WCF,可以让我们基本摆脱掉那些令人厌恶的Socket套路。

比如我们再808中,设计一个实时数据服务,RealDataService和接口IRealDataService,  编写一个获取实时数据的方法,通过WCF框架的配置,就可以快速的为其他子系统提供实时数据的推送和转发服务了。

而且,我们也可以通过配置,将WCF转换成JSON格式,这样手机查车等手机客户端引用也可以和服务器进行数据通信,获取数据。

3.全双工通信

实际上子系统的通信基本全是全双工的通信,比如拍照的通信:809下级平台服务器收到上级平台的拍照指令后,将指令下发808服务器,808服务器再下发给终端,终端拍照应答给808服务器,808服务器再将拍照数据转发给809下级平台,809下级平台再将拍照数据转发给809上级平台。虽然我们描述流程的时候,仿佛是同步的,实际上网络通信是异步的全双工通信。可以看出部标要求的通信需求决定了子系统之间的通信的复杂性,而WCF的通信框架较好的隐藏掉底部通信的复杂性,满足顶层业务开发的需求。

4)部标流程检测和运行检测

部标平台开发的复杂性就在于,我们可以快速开发出一个大面上过得去的东西,但是却无法开发出一个严格符合要求的部标平台,从上图中可以看出一个拍照指令,需要贯穿四个子系统,并且是异步的。如何跟踪各种指令在横跨各个子系统或平台时的发送状态、执行状态和应答状态,不仅仅是一个需要在用户体验上面下功夫的功能,在交通部的部标认证的检测中,最最麻烦的就是运行检测,因为要跨两个平台,政府平台和企业平台,企业平台内部要跨越终端、808服务器、809下级平台服务器等多个子系统。检测失败,可能出现在各个环节当中,检测人员只是平静的告诉你没有通过,而我们剩下就是猜了。所以每个系统必须要有较好的指令监控的功能,以便于较好的应对实际的部标检测中出现的意外情况。以下是对809转发服务器的指令的数据包监控。

GPS部标监控平台的架构设计(八)-基于WCF的平台数据通信设计的更多相关文章

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

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

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

    基于交通部796标准开发部标监控平台,选择开发语言和技术也是团队要思考的因素,其实这由团队自己擅长的技术来决定,如果擅长C#和Asp.NET, 当然开发效率就高很多.当然了技术选型一定要选用当前主流的 ...

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

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

  4. GPS部标监控平台的架构设计(七)-压力测试

    部标监控平台的压力测试是部标检测流程的最后一个检测环节,也是最难的,很多送检的企业平台都是卡壳在这一个环节.企业平台面临的问题如下: 1.对于压力测试的具体指标要求理解含糊,只知道是模拟一万辆车终端进 ...

  5. GPS部标监控平台的功能设计(一)-功能列表

    在2011年交通部的796标准推出后,随着各地交管部门的硬性要求,大多数的GPS监控系统或者车辆管理系统或者物流管理系统,无论是旧的,还是新开发的,都必须要以796标准为基础蓝本,首先要满足796的要 ...

  6. 【测试设计】基于正交法的测试用例设计工具--PICT

    前言 我们都知道成对组合覆盖是一种非常有效的测试用例设计方法,但是实际工作过程中当成对组合量太大,我们往往很难做到有效的用例覆盖. PICT是微软公司出品的一款成对组合命令行生成工具,它很好的解决了上 ...

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

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

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

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

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

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

随机推荐

  1. 分布式缓存技术memcached学习(五)—— memcached java客户端的使用

    Memcached的客户端简介 我们已经知道,memcached是一套分布式的缓存系统,memcached的服务端只是缓存数据的地方,并不能实现分布式,而memcached的客户端才是实现分布式的地方 ...

  2. js最佳继承范型

    先回想下怎么给一个类设置属性:1.构造函数 内  通过this2.prototype中的属性两者的区别就是构造函数中的属性是每个实例私有的,而prototype中的属性是所有实例共有的(一般方法和静态 ...

  3. Compare Version Numbers

    Compare two version numbers version1 and version1. If version1 > version2 return 1, if version1 & ...

  4. 前端性能监控方案window.performance 调研(转)

    1. 业界案例 目前前端性能监控系统大致为分两类:以GA为代表的代码监控和以webpagetest为代表的工具监控. 代码监控依托于js代码并部署到需监控的页面,手动计算时间差或者使用浏览器的的API ...

  5. PHP的排序算法跟查找算法

    排序算法: (1)冒泡排序 $arr = array(15,8,20,50,37,85,10,5,11,4); //冒泡排序 function maoPao($arr){ for($i = 0; $i ...

  6. React native 的弹出层(输入)效果

    /*弹出层测试*/ import React,{Component} from 'react'; import { StyleSheet, View, Image, Text, TouchableOp ...

  7. web前端~~浏览器兼容问题(百度)

    所谓的浏览器兼容性问题,是指因为不同的浏览器对同一段代码有不同的解析,造成页面显示效果不统一的情况.在大多数情况下,我们的需求是,无论用户用什么浏览器来查看我们的网站或者登陆我们的系统,都应该是统一的 ...

  8. Win 10 文件浏览器无法打开

    今天遇到个很奇怪的问题,文件浏览器File Explorer无法正常显示,点击打开后任务栏上已经显示打开了,但是屏幕上却看不到任何窗口,开始以为机子中了恶意的木马,然后就疯狂的查毒,然而并没有解决问题 ...

  9. javascript学习之通过class获取元素

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  10. php编译内容

    ./configure --prefix=/usrc/share/php--with-apxs2=/usr/share/apache2/bin/apxs--with-config-file-path= ...