系统集成的2种方式

我以前是不是写过一篇类似的东西,说系统集成的

今天做一个别的事情的时候,突然想到系统集成的问题。我觉得系统集成归结来说只有2种方式。分别画图说明,图略粗糙:

1、从天上走



这张图里,系统A和系统B,都开放了一些接口。实现方式可以有很多,web service、rpc、rmi,都有可能,总之是发布了接口,然后对方就可以调用到

这个图有一个变体如下:



也是一个系统A发布了一个接口,另外一个系统B会来调。但是因为只有B调用A的关系,没有A调用B的关系,所以也可以把A称为server,把B称为client。同时把client画在接口上方,server画在接口下方

在第一张图里,全部是画在接口层下方的,因为他们都有发布接口,互相调用,互为server/client。我现在觉得server/client是一个超级相对的概念。只要被别人调用了,都可以叫server;调用了别人,都可以叫client。比如http里的proxy,对于client agent来说,它就是server;但是对于server来说,它又是client

第一张图,把系统A和系统B的接口层延展连在一起,还有一个含义,把调用层抽象出来

试想,如果这2个系统发布接口的方式不一致,那么互相调用的方式也就不一样;但是,如果他们是遵从一致的协议发布/调用接口,那么就可以认为,系统上面有一个抽象的接口层。这种情况下,一般可以把互相调用的那部分代码,抽取为CBB(Common Building Block)

2、从地下走



这个图描述的是另一种方式,即两个系统没有直接打交道,而是通过数据库来交互。这种集成模式,也可以叫做“壮哉我大数据库”

比如说,以前在海关做的一个系统。有一个web app,与用户交互,让用户把信息写到数据库里。另外有几个app,定时轮询数据库,如果发现记录的某字段是特定的值,就往另外一个系统发报文

这种情况下,几个app一般都需要访问数据库的某些同样的表(有的要写数据,有的要读数据),那么可以把数据访问的代码,抽取成CBB。

这里的数据库只是最常见的集成中介,其实不局限于数据库,比如说用文件、JMS都是可以的。总之就是几个系统,通过一个中介来交互,而不是直接打交道。这个好像是前几年一个很流行的词,叫“SOA”

猜你喜欢

转载自kyfxbl.iteye.com/blog/1773500