日期:2014-05-17  浏览次数:20654 次

两个系统之间以什么方式交互数据?
问题背景:客户单位现有两个系统:一个是我们A公司开发的BS架构的体检系统。另一个是B公司开发的体检仪器设备数据管理系统(架构不知,可能是CS架构,也可能是BS架构);
需要解决的问题:
1:他们读取我们的数据;在我们体检系统中登记体检人信息的时候,想将部分数据提交到对方的数据库中(不一定要直接提交到对方系统的数据中,只要对方能读取到我们提交的部分数据就行);
2:我们读取他们的数据;因为他们是体检仪器设备数据管理软件,体检人通过仪器检测的数据都在他们的系统中,我们想要将这部分信息读取到我们系统中;


目前自己设想的解决方案:
1:对方提供他们的数据库访问方式、相关表字段,我们在提交时,直接将数据插入到对方的数据库中。我们也可以直接读取对方存储体检数据的表获取数据。(是否存在数据安全性问题?好像直接暴露系统的数据库给别人不好)

2:通过webservice实现。这个方式没用过,网上找过相关资料,但不清楚具体在项目上怎么实现。如果要通过这种方式,我们该提供什么给B公司?B公司提供什么给我们?


希望做过相关的大神给予指导,小弟在此先谢过!
------解决方案--------------------
先了解点问题:
◎ 是否担心数据丢失,比如丢失率 1%?
◎ 系统时效性要求是否很高,比如是:实时、秒级、分钟级还是小时级?
◎ 系统间网络环境是否OK,比如是:互联网、同机房、同城专线?
◎ 系统间有无安全通讯信道等问题需要保障?

给点初步建议:
◎ 不暴露数据库,否则:人家统计你等待、人家锁表你死机、人家改数你纠错;
◎ 约松耦合越好,能批处理就不要实时处理,能用数据交换就不用接口调用,能用异步接口就不用同步接口;
◎ 是不是WebService随意,不过现在有不少轻量级方案,主要还是看安全性和性能要求了。
------解决方案--------------------
1楼大神回复都十分严谨。

针对你的方案:
1、弄个中间数据库C,B他们负责把数据同步到C,你们访问C的数据库。
2、你们将B需要的数据同步到C,B自己去访问C。
------解决方案--------------------
实时性不那么高的,可以用中间数据库,实时性高的可以用消息机制,JMS、MQ这类.
尽量不要因为接口影响你自己的程序.
------解决方案--------------------
1、同步有很多种方式,如果你现在急,可以使用文件同步程序。主要看你数据有多大。数据百万左右还行,你生成同步文件。给他们暴露一个linux端口自己来取文件,他们写同步daemon进行同步。
2、webserivce企业级开发比较繁琐,需要一定的经验和时长,如果只是使用简单方法,业务拓展后很难维护。
3、网络交互有很多种方式,hessian也行,rmi也行,甚至直接使用socket,但是这些都有些类似webservice的,要双方企业配合的,沟通成本都比较高,如果有比较大的业务扩展,前期设计要想好。