SOA与整合集成共同工作得很好以至于人们往往忘记了SOA不仅仅是整合而已,并且我们通常将SOA本身主要作为整合架构提出来。”整合”这个词在几十年前就已经用来描述系统间互动的可能性,但当用在SOA领域时,会有一点令人不解,因为它也许就与区分整合与互动相关了.
整合与互动是两件不同的事情,但他们的不同之处取决于你对整合的定义方式.
有的认为两个系统相互沟通事实上就是”整合”(传统方式),而整合解决方案就是那些促成沟通成功的组件。而我认为这些系统实际上是在互动,而互动结果的作用和互动的范围以及内容决定了系统是在整合集成还是仅仅在互动而已。
有趣的是“整合”这个词在IT领域内外获得了不同的意义。如上文所说,“整合”在IT领域通常指的是两个实体在某种程度上的联系起来。用在其他领域中整合和互动的区别显而易见:比如在谈到移民的时候,整合意味着那些移民成为国家的一部分,具有共同的文化、价值观等等。另一方面,互动则简单的指你与某些事物建立起联系,就像出国旅行度假,这是在你与你到达的国家“使用”而不是“建立”任何长期永久的联系。根据同样的原则,在IT领域这样的区别变得更加清除:使用一个服务并不代表你与该服务的主办系统的集成整合,你只是在通过该服务与系统互动而已。
那么整合的正真含义是什么呢?大致上,它意味着两个实体具有一些共同点,它们共同拥有一些较为长久的特点;互动则意味着两个实体从某种程度上(暂时的)联系到了一起。
那么,具有什么样的特点才称其为SOA整合呢?
这取决于服务的类型。基础架构服务和信息服务的区别在于:大致上信息服务与信息操控有关;而基础架构服务则实现一些操作。你可以看到在信息服务中,整合的发生是信息的整合;但在基础架构服务中互动就有可能属于一个流程的整合。我将在以下做详细解释:
信息服务通常用于从系统或组件中检索信息,信息往往存储于消费者环境中,通过重新利用从而整合原有的以及目标系统的信息中,也就是说他们共同享有的信息造成了它们的整合集成。
在基础架构服务中,整合通常处于流程层面,也就是说服务属于(服务于)相同的流程。
第三种类型是域或范围级整合,这种情况下几种不同的服务在同一个域里使用。比如一个使用外部服务的应用程序,而不同服务在同一环境中使用的事实使得它们整合在一起。
大致澄清(并接受)了整合与互动的区别之后,尽管SOA实施中最常见的也许就是信息服务,而它们都被用于信息集成当中,我们仍可以更清楚的认识到SOA并不是整合集成。
当然,与一种服务的互动使得两个实体(消费者与厂商)从逻辑上的某种程度来说“整合”,因为他们使用同样的功能,这样他们也具有共同点(他们共同使用同样的功能),但重要的是这只是逻辑上的集成而最重要的是这样的共同点与SOA或架构毫无干系,而仅仅停留在功能上而已。服务厂商甚至可能并不会使用客户所使用的功能。
除了不同类型的整合以外,整合的程度也有所不同。
一个Web应用程序需要显示一些外部来源的信息时就会暂时与所需服务进行互动以获取信息, 进行使用或是忽略掉,这样一来应用程序就”消费”了(或与之互动)该服务以及信息,但它并不会与其系统进行集成。即使在逻辑层面上说,那样的整合也是非常松散的,前端仅仅是显示数据而已;但是由于服务供应商也成为了应用程序流水线的一部分,你也可以说它在逻辑上发生了整合。
如果同样的应用程序要在本地存储数据并对本地存储的数据进行重新利用,而不是从原始系统中撷取数据,那么这就是更高层次的信息整合(物理上)。系统间共有的数据就是使之整合的原因。重新利用的数据越多,系统间的整合程度越高;如果原本持有信息的系统能目标系统中升级(改变)信息,那么整合就更加紧密。
然而,从SOA的角度来说上述的所有整合事实上都仅仅是互动而已。
那么为什么在提到整合的时候,SOA总是会被提到呢?这有几个原因,第一SOA的本质使得互动变得平凡,这是建立整合的基础;第二是因为整合和互动在语义上并没有明显区分。
此外,由于SOA中最常用的是信息服务,这些信息服务也往往应用与信息和流程整合中,因此我们往往将SOA看作是整合。
我相信互动和整合在SOA中应该是更加明显的,因为他们事实上不仅仅是两种事情,而且还存在于两个不同的抽象层次。整合建立于SOA或其他架构上以便能正常工作。
SOA最简单的形式就是服务,而服务并不是关于整合的(互动的结果),服务能够被用于整合但它们基本上是与服务供应商的一种互动形式。
即使整合和互动之间的差异也许是很微妙或许是在语义上的,但在设计架构时记住这一点也是很重要的。
比如,企业服务总线被看作是整合组件而它们实际上是用于透明化促进互动的,是一种提供定制整合能力的具体产品(整合平台)。
网友评论