现在,回过头来看看今天的Web services。在Web services出现之前,对于很多企业应用来说,使用面向消息的中间件系统或者MOM实现异构系统之间的通信已经足够了。Web services的出现同样是处于这个目的。用MOM的基于消息的架构和Web services很类似,被服务的数据也能在应用之间进行无缝操作。
这种场景可以被应用到典型的J2EE环境中,并通过JMS或JAX-RPC等技术进行服务。这种做法对简单部署是可行的,但正如前面提到的,当进行很复杂的设计时,现有的容器则显得很难用。于是JBI试图解决这个问题。
JBI提供了一种正规消息路由器(Normalized Message Router,NMR),说白了,就是一个地点。在这个地点,所有基于消息的数据片段——SOAP片段、MOM消息、HTTP数据或其它信息——被聚合、集中、应用到业务逻辑、传输,如果有必要则被转换成其它格式并随后被分派到最终目的地。
先前的描述说明了为什么JBI被称为ESB。它很适合企业级应用,因为它通过一种总线型架构的基于消息的手段到达了适应大范围的消费者和提供者的目的。现在,让我们看看除了NMR还有什么构成了JBI。
和JBI环境直接交互的是两个部分,JBI machine和JBI binding。JBI machine定义了部署构件以及在环境中管理它们的方式。本质上,它是提供商设计的黑盒,用于在JBI中支持他们自己的模型。另一方面,JBI binding则被环境通过专门的业务协议与外部世界进行通信。