Nate's Programming Blog

I spent half a week working with a small team of very intelligent technical colleagues trying to define what an Enterprise Service Bus (ESB) is. We debated and discussed for 2 days before we came to somewhat of a consensus. Why is it so difficult to define a term that is used so commonly within the industry? Well, I’ll tell you why. The vendors have muddied the water so much when it comes to terms like ESB that it is no wonder people get confused or have 50 different definitions of what an ESB is.

Since it is pretty much opinionated these days, I’ll give you what my opinion of an ESB is. My definition is based on the core capabilities all ESBs provide in the industry in order to not constrain ESB to a small set of vendors that actually meet my description.

An ESB’s core capabilities are Routing and Protocol Translation. That is it. It is not Business Intelligence, it is not BPM, Discovery, or Messaging. There are other components that make up those capabilities, but an ESB does provide an adapter and connector framework for being able to plug those capabilities into the ESB.

An ESB’s routing capability essential consists of the ability to broker web services and be able to route to different physical resources through the bus. This provides a lot of benefits. It allows you to separate some of the other capabilities that can be plugged into an ESB from the actual physical resources, allowing you to do aggregations and mediation prior to delivery. This increases decoupling and allows for greater reuse by allowing the creation of more granularly defined services and enriching the capabilities of those services prior to actual consumption.

An ESB’s protocol translation capability consists of a set of adapters and connectors that allow the ability to plugin different capabilities like caching, etc, but also provides translations allowing resources that are of different formats and protocols to to be translated into a normalized format that can then be converted into a web service or other standard format. This allows users of the web services to standardize on a common format and allow providers to plugin various resources and expose them without a lot of custom development and translation.

In conclusion, ESBs provide a framework and backbone to your SOA infrastructure. It enables power users to be able to quickly modify existing component services (different services and resources that have been chained or aggregated to allow for automated integration), and to be able to plug in different services and functionality without a lot of custom code.

Name (required)

Email (required)


XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Feel free to leave a comment