软件系统间数据对接经验分享
软件系统间的数据对接,就是系统数据由其中一个系统持续不断地同步给另外一个系统。我们将数据的流出方认定为“源系统”,数据的流入方称为“目的系统”。根据使用技术不同,常见的数据对接形式分为四种,如下图:
数据库方式 | ||
简介:
① 数据库的开放方式,一般常采用中间库形式,对接双方约定一个中间数据库,源系统将数据写入到中间库,目的系统从中间库中将数据读走。这种方式对于源系统和目的系统,入侵是比较小的。
② 有一些项目中,可能为了减少工作量,在源系统中把源系统数据库直接开放出来,由目的系统的开发人员直接读取。
③ 也有一些项目中,目的系统将自己的数据库开放出来,由源系统的开发人员直接向目的系统的数据库中写入数据。 当然,具体情况需要根据实际项目来决定。
常见数据库类型:
• 关系性数据库 :Oracle 、SQLServer 、Microsoft MySQL • Redis数据库 • 国产数据库:达梦、人大金仓
优点:
★ 对接双方具有良好的沟通基础
对接双方的软件人员,一般对数据库都有一定了解,具有良好的沟通基础,双方只要约定好数据库格式和读写规则,就可以开始对接了。
★ 可传递的内容比较丰富
实时数据、历史数据、文件、照片,都可以通过数据库进行传递。
缺点:
■ 数据时效性差
数据库基于读写方式,对接的双方需要不断轮询数据库,来达到更新数据的目的,为了减少服务器的压力,轮询的间隔就会稍微拉长一些,数据时效性可能就会差一些。
应用场景:
一般在水文、水利的项目中应用较多,和一些工业系统(比如水司的生产调度系统)对接时,也会用到。
对接数据库时要注意安全性问题:
原因:如果源系统和目的系统,基于公网对接,那么数据进行传递时,必然会把数据库的端口暴露到公网上,这时就会带来一些安全隐患。
措施:一般情况下,我们会把数据库的默认端口改掉,改成一个比较靠后的随机端口,并且为对应的中间库分配一个专用账号,避免使用系统默认的管理员账号。对于数据库的库表,比如在水文、水利项目中,我们一般使用国标的水文系统数据库,或者国标的水资源数据库,这样大家对于这两个库比较熟悉,对接起来会比较容易。
HTTP+JSON方式 | ||
简介:
这种方式有很多种其他叫法,比如:Web service、Web api,或者比较通俗一点叫“网站接口”。这些其实都是一类形式,都是基于HTTP协议,采用JSON或xml方式,将所要对接的数据进行打包封装,然后通过HTTP协议传到对方系统中。
HTTP+JSON方式一般由两部分组成:
一是鉴权部分,相当于身份认证,只有通过系统认证之后的用户,才能向系统中推送数据,或者是从系统中取走数据。
二是对接内容,根据实际项目需要,比如设备信息、实时数据、历史数据,现场拍摄的照片、视频,都可以通过这种形式来进行对接。
优点:
对于软件人员来说,使用起来相对比较容易,因为各种开发平台和开发语言,对网络协议都有较好的支持。
另外,HTTP方式能够传递的数据比较丰富,比如基础数据、信息类的东西、实时数据,历史数据,照片文件,都可以通过它传递,即使一些较大的文件包,也可以通过它进行传递。
应用场景:
HTTP+JSON方式,在水文、水利类的项目中,应用比较普遍。
一般情况,都是由目的系统来定制HTTP具体的接口定义,然后由源系统进行数据推送。
也有少量的为了减少工作量,由源系统将自己的数据接口开放出来,然后目的系统通过HTTP的Get方式从源系统中进行拉取,但这种方式具有一定的安全隐患,如果网安部门对系统接口内容进行扫描,那么对于Get方法,可能会提出质疑,会有安全风险,这个需要注意一下。
OPC方式 | ||
简介:
OPC是自动化行业的一种数据交换的标准,它独立于平台,一般在工控类、楼控类项目中应用较广泛,比如我们常见的工厂自动化、供排水类项目。对它们的一些子系统进行整合时,因现场大多数是采用PLC和组态软件做的项目实施,多数情况下会提供OPC接口让上层系统做整合。
OPC方式的具体对接形式:首先,需要有一个OPC服务器;然后,由OPC的客户端向服务器发起连接,因为OPC是一种标准协议,当连接上后,数据自动会同步回来。
优点:
OPC方式数据的实效性比较好,也就是说这边如果发生了变化,那么数据会很快速的同步到对应的客户端或服务器上。
能够对接的内容:早期时,实时数据、历史数据和一些控制指令都可以对接过来,随着OPC协议的发展,现在历史数据、文件也可以通过OPC形式进行交换。
缺点:
连接方式比较受局限,在局域网或者本机上,都是可以正常使用,但在公网上,一般不会采用OPC方式进行对接。
设备协议方式 | ||
设备协议方式,一般在项目中遇到的较少,只有在一些特殊情况下,需要将软件系统的数据模拟成设备终端,然后把数据进行打包上报到目的系统,通过设备协议进行对接,类似于设备与软件平台进行对接的方式,只要约定好中心IP地址、端口以及所使用的网络协议(比如说是用TCP还是用UDP),使用的设备协议约定出来,基本上就可以实现对接了。
设备协议,一般情况下采用标准协议,比如水文规约、水资源规约,自定义协议的情况比较少见。
其实,用前面的几种方式对接起来更加容易。