最初,系统系统间都是孤立的。业务是贯穿的,系统间也必然需要交互数据。
实现数据交互的方式有好多种,可以通过ftp交互Excel文件,可以通过互相读写的中间库,可以通过Web Services。
系统间可能是点对点交互,可能是一对多广播,可能是多对一汇总,可能是多对多协同。
在复杂IT场景中,多信息系统各司其职,协作完成工作。交互数据的事情怎样做呢?
数据交互有两个核心问题要解决:一是协议,二是数据格式。这两个都需要通信双方协商。
如果是企业内部的各信息系统,可以搭建统一的数据交互平台解决,强制推行一致的通信协议和数据格式审定流程。
如果在开放环境中,或松散组织中呢?有没有高效、合理的办法?
开放接口是一种良好的机制,可以应对这个场景。
商定如下:每个组织定义自己的“开放接口”,供其它系统调用。发布方定义协议和数据格式。而且,开放接口是面对所有其他系统的,不再针对个别系统做定制性的接口开发。
开放接口的优势:
统一规划系统的对外数据交互和功能调用。针对不同的调用者分别配置,即完成了系统互连的需要,而不是屡屡进行针对性接口开发。
首先,通信协议要足够灵活,最好实现模块化和可插拔。通信协议可以体现在多个层次,包括HTTP、序列化、加密、压缩等。以应对调用方技术平台、安全等级、网络限制等特殊情况。
需要同时支持发布多个接口,而且每个接口可采用不同的协议。
其次,数据格式要足够灵活,最好实现可配置。
最后,平台需提供安全、监控、流量控制等基础功能。
功能架构如下图所示。
底层的通信协议,暂时不予关注,为了便于实现,先采用HTTP协议。
安全、权限、流量、序列化等工作由多个可插拔、可配置的组件实现。
服务器端架构如下图所示。
借鉴Servlet Filter思路,多种通信需求由Handler实现。Handler可配置,易扩展,具备极大的灵活性。
开放接口核心功能是数据采集和数据发布。
数据采集的核心功能是格式映射和数据校验。
格式映射包括数据存储结构和数据项名称的映射。数据校验包括字段长度、是否必填项、数字格式、日期格式等校验。
格式映射需要定义配置文件。数据校验也可以在配置文件中定义。
平台需要定义配置文件格式,并依托配置文件在不编写Java代码的情况下实现数据采集和数据发布的功能。
开放接口平台需要实现以下功能。
包括:多Handler可配置架构、数据映射文件及转换验证机制。
异常处理机制、消息格式参考实现等。
包括授权、流量控制、日志等。
包括:对调用方的管理(基本信息、各种key、访问限制等)等。
原文地址:http://blog.csdn.net/stationxp/article/details/45793039