...an open standards-based messaging means designed to provide interoperability between larger-grained applications and other components via simple standard adapters and interfaces...ESB

An ESB generally provides an abstraction layer on top of an implementation of an enterprise messaging system, which allows integration architects to exploit the value of messaging without writing code ... Enterprise Service Bus

When a single transaction in your point-of-sale system results in interactions with your inventory system (is the product in stock?), your credit card processing service (is the card valid?), your ledger, your CRM system (do we have updated customer information?), and your shipper (multiple drop ship?), the last thing you want your message queue to have to worry about is where all those things are...Why you need an ESB

Enterprise Service Bus

Definition: An Enterprise Service Bus is software which is designed to facilitate the interoperation of other heterogeneous software operating in a networked environment throughout an enterprise. Analogies may be helpful. An Enterprise Service Bus could almost be considered a kind of operating system which is active at the enterprise level, providing the basic framework through which other applications can talk to one another.


Enterprise Service Bus

The goal of letting corporate enterprise applications talk to one another through middleware is one that in the past has proved elusive, although several major attempts to achieve it have been made. Some were limited to applications written in the same programming language. For example, Java’s Remote Method Invocation would fall into this category. Others extended to more than one, but still a limited range of languages. CORBA, the Common Object Request Brokerage Architecture, is among the most prominent of these. All of these, ultimately, seemed too limited in their range of applications to put down deep and permanent roots in the IT marketplace.

Many previous incarnations of communications middleware were limited to either messages, services or software objects. The Enterprise Service Bus is the first serious attempt to go beyond that and integrate all three.

The concept of the Enterprise Service Bus is closely associated with that of a Services Oriented Architecture. With a Services Oriented Architecture, the functionality of any participating applications within the enterprise is wrapped and made available as a service which can be called on by other applications. The Enterprise Service Bus is the medium through which the calls are made.

Usually, an application’s functionality can be invoked through passing an XML (Extensible Markup Language) message in an agreed format. The results of the operation will also be returned via an XML message. Open, rather than proprietary, standards, such as SOAP and WDSL form the basis for the vast majority of Enterprise Service Bus software out there. Using these, the Enterprise Service Bus is able to abstract the functionality or data of each member of the enterprise’s software ecosystem and make it available to all of the other members.

Advocates for the Enterprise Service Bus\Services Oriented Architecture approach argue that it promotes loose coupling between an enterprise’s applications, making the IT infrastructure more flexible and more readily adaptable to change. Over the course of time, they say, this flexibility promotes significant cost savings, because new IT developments cost significantly less than they would do otherwise. In many ways then, the adoption of an Enterprise Service Bus and a Services Oriented architecture could be said to provide the same kind of benefits at the enterprise level that object-oriented programming offered at the application level for developers.

Naturally an Enterprise Service Bus must be equipped to deal with many applications of different types. It is common for the Enterprise Service Bus software, and its associated applications, to be able to run on more than one operating system. Versions of Windows, and variants of Unix are, of course, the options most commonly available. Because of its platform-independent nature, the Java programming language is a popular choice for developers of Enterprise Service Bus applications. A typical Enterprise Service Bus will also ship with drivers for a great variety of databases.

The advantage of an Enterprise Service Bus is that using it allows a company’s existing, proven software applications to become part of an evolving software landscape while remaining substantially unchanged. The alternative to the Enterprise Service Bus / SOA model, where a viable alternative exists, involves one application directly referencing another at the code level. This promotes strict and fragile interdependencies between them, meaning that any future updates to the applications will be costly in development efforts and prone to subtle problems. An Enterprise Service Bus allows the work of each application to be abstracted from the nitty-gritty of the infrastructure, confident that routing and transactional integrity issues will be dealt with elsewhere.

In addition to providing a communications framework through which one node of the corporate IT structure can talk to another, an Enterprise Service Bus will also often provide transactional security. For example, if a software application running on one computer used the Enterprise Service Bus to send a message to an application running on another computer and then crashed before the message could be processed, the Enterprise Service Bus would ensure that the message was retained and delivered as expected. When the first computer came online again, it would receive the appropriate response. Many Enterprise Service Bus implementations also incorporate encryption facilities so that the message traffic cannot easily be snooped on.

Some enterprise service bus software offer message augmentation capabilities. Message augmentation is when the bus does not simply transmit a message from one node to another but enhances the information content of the message along the way. This could take place, for example, by reading information from the software registry in which the calling application has been listed, or by reading data from a database. Once extraneous data has been read it is then added to the message content before delivery to the recipient.

Sometimes Enterprise Service Bus software is marketed on its own. Often, however, it comes bundled with other enterprise application products. The leading Enterprise Service Bus vendors in the marketplace include Microsoft, IBM, BEA, Oracle and Software AG. In addition to the commercial providers, there are some open source Enterprise Service Bus implementations too. Iona’s Celtix is the best known of these. Although Iona is a commercial company, it chose to make its Enterprise Service Bus software available for free. A basic version of Iona’s Celtix has been integrated into the open source Apache project. Iona also makes a higher-end, but still free, version of the software available for download. The company hopes to make money by providing support and integration services available for a fee.