系统间数据交互接口设计讨论
现在有这样的一个需求,我们做的系统有一个监控模块,这个模块定期会采集别的系统数据,然后我们系统对采集回来的数据进行分析,作出一些报告什么的。
例如:监控模块每天00:00采集营销管理系统的各部门的日营业额,各部门的人员出勤情况等。采集物流系统中每个物流站点的日订单量,出货量等。(说明:各系统是独立的,是由不同的公司开发的,但属于同一用户)
问题:我们的系统如何和相关的外系统进行数据交互,也就是数据交互接口怎么设计?
目前我们有两种方案,大家帮忙看看各自优缺点,到底哪种更适合一些。
方案1:采用EJB同步调用,基于XML报文交互。
该方案事先各方定义好接口规范,使用时直接调用外系统提供的接口,传入的参数是字符串,字符串实际上就是一个 XML,里面包含此次数据交互的一些请求参数,比如数据的类型(什么数据),部门,数据的时间等,外系统根据请求参数查询自己的数据库,准备好数据后,组成一个XML字符串,再给我返回,我把返回的XML字符串解析后进行处理。
方案2:采用中间库
该方案是在我们系统和外系统之间建立一个中间数据库,外系统定期将我们需要的数据从自己数据库中抽取出来放到中间库里,我们系统再定期去中间库取数据。
我现在的理解是:
使用方案1扩展容易,使用简单,就调用一个接口方法,XML报文编辑,解析有现成的代码。
使用方案2中间库的数据存储复杂(采集的数据全是异构),从外系统到中间库,再从我们系统到中间库可能要使用存储过程,导致大量的存储过程,维护就变复杂了,并且开发难度也有所上升(存储过程感觉还得由有经验的高手来写),这样工作会变难。
之前没用过存储过程,不知道上面说的对不对,请大家帮忙看看这两个方案的优缺点,哪个更合理?哪个工作量更小一点。或者有更好的方案,欢迎大家多多讨论,谢谢大家了
多谢~ 29 楼 fastwei 2011-02-24 楼主已经有方案了,结贴。哈哈。 30 楼 20029388 2011-02-24 webservice ,传递一个xml 这样以后维护方便,即使现有开发人员离职,后期接手也方便。
如果用中间层,这个接手麻烦。而且开发的工作量要大些 31 楼 deific 2011-02-24 20029388 写道webservice ,传递一个xml 这样以后维护方便,即使现有开发人员离职,后期接手也方便。
如果用中间层,这个接手麻烦。而且开发的工作量要大些
中间层的话,开发工作量大可能在哪些方面呢? 32 楼 aq1sw2 2011-02-24 甭想了,用第二种方式,做了这么多年监控,第二种方式是长久方式 33 楼 deific 2011-02-24 aq1sw2 写道甭想了,用第二种方式,做了这么多年监控,第二种方式是长久方式
请教一下第2种方式做监控有什么优势呢? 34 楼 summerfeel 2011-02-25 第二种好。
数据分析和统计使用存储过程跑,然后将结果存到一个表中,你们系统直接读这个表就可以了。 35 楼 sunny521314 2011-02-25 还是webservice好,我们公司就用这个 36 楼 wk458469748 2011-02-25 个人觉得是webservice好用些。 37 楼 pojo 2011-02-25 第三方案:用MDB,既简单又低耦合。 38 楼 幽梦新影 2011-02-25 这两种方案都不错,要视不同情况而定吧,我们公司就大量使第二种情况,第一种情况也有使用,比较少点,但EJB就没有用了 39 楼 ppgunjack 2011-02-25 corba,如果真的以后想集成重量级的商业网管 40 楼 jianglei_syn 2011-02-25 用http+xml好一些吧,通用性强一些,EJB毕竟还是封装了 41 楼 cectsky 2011-02-25 http+xml=soap~webservice
so you can use webservice
also middle tables are good,i think 42 楼 lianglaiyang 2011-02-25 WBESERVICE就很好解决你的问题 43 楼 lianglaiyang 2011-02-25 定时器+webservice 44 楼 day 2011-02-26 目前系统间数据交互一般都方案一多些 简单能满足大体需求,大型系统间应用集成可以考虑ESB 45 楼 deific 2011-02-28
非常感谢各位的建议和各位建议的方案,从中得到了很多启发和一些思路。
目前系统还是采用了方案1,相对来说做起了更简单,因为有些积累,而且也能满足要求,风险相对来说小一点。再次感谢各位的热心回复,谢谢~