The Enterprise Service Bus (ESB) is a software architecture which connects all the services together over a bus like infrastructure. It acts as communication center in the SOA by allowing linking multiple systems, applications and data and connects multiple systems with no disruption.
The above picture depicts the communication between software applications in a service-oriented architecture via ESB. Bus is a communication system that transfers data between computers and interconnects the hard disk drives, CD ROM, graphics adapters and other chips.
As shown in the above figure, the ESB can synchronize with transactions to communicate with multiple services. Instead of notifying the web applications to coordinate with transaction, the ESB can synchronize with transaction when multiple distributed applications get involved in a transaction.
The authentication and authorization mechanisms are very important parts of security check which are incorporated under ESB. The ESB provides these security mechanisms to inter connect between the web applications.
The SOA uses proxy which interprets the service calls between two different client service protocols. For instance, consider you need to access a service which can be accessible only through the Java's RMI (Remote Method Invocation) and this service can be accessed using the web service interface (SOAP). To resolve this, you can use the service proxy which accepts the SOAP calls and render them according to Java RMI service.
ESB uses the gateway (acts as entrance to another network) through which it can connect to the different services running in the other networks. The gateway manages the data communication which is routed internally or externally from the network. If user wants to access service of an outside network, then user passes data packet to the gateway, which then connect to the requested service destination.