The Apache Synapse proposal describes the project as "a set of components that work together with Axis2 and other Apache and open source projects to create a flexible transformation, management and routing system." Given this focus on mediation of web services exchanges, it is nevertheless common to hear Apache Synapse described as an ESB.
This naturally leads to two important questions:
- Is Apache Synapse an ESB?
- How is Apache Synapse different from Apache ServiceMix?
Firstly in the words of Dave Chappell one of the founders of Synapse and the author of the book Enterprise Service Bus
This project (Synapse) is related to ESB, but it is not in itself an ESB. What Synapse bring brings to the table is a mediation framework that allows users to get in the middle between service requesters and providers and perform various tasks including transformation and routing and that helps to promote loose coupling between services
So Dave certainly feels that The distinction David makes goes to the heart of both questions. First, Synapse is not a full ESB in the most common sense of the term. Secondly, because the design of Apache Synapse is different from that of Apache ServiceMix, the two solutions have different capabilities and limitations.
A number solutions that broker or mediate Web services exchanges are described as ESBs, and Synapse can reasonably be included in that category. However, what most defines an ESB , more a mediation framework based purely on Apache Axis 2.is not its architecture, but its function, which in general terms is to provide a manageable system of message-based connectivity spanning multiple transports and heterogeneous endpoints.
In providing management through WS-* to Apache Axis, Apache Synapse provides a very important and useful capability to that specific Web service broker. However, in its current implementation Apache Synapse would be overextended as an "architectural" solution. Building an SOA on Apache Synapse would presume
- that all exchanges in the SOA would be Web Service exchanges based on SOAP,
- that the management of the exchanges would be invoked exclusively by means of WS-*
- that the underlying SOAP technology at each brokered endpoint would be Apache Axis.
ServiceMix is a full ESB that ServiceMix on the other hand is a full ESB built on the JBI specification which can work with many different SOAP Stacks such as Axis, WSIF, XFire, ActiveSOAP and JAX-WS. ServiceMix also has full support for Routing, Transformation and Orchestration. Like Apache Synapse, Apache ServiceMix provides mediation for web services exchanges and is designed to support transformation, management and routing through WS-* standards. However, this capability is provided independently of the SOAP stack, and most importantly, is provided through the same services architecture used for all message formats and transports, including, but certainly not limited to, Web services.
Lastly, it is Its also worth noting that the ServiceMix Team are working with the Synapse community to add JBI support to Synapse, so I expect ServiceMix and Synapse to both could work together and integrate nicely with each other using JBI.