This document compares and contrasts message buses and service buses.
A message bus allows modules to communicate by sending requests without knowing the destination, and supports replacing or adding providers without impacting other modules. However, modules using a message bus require a common data format.
A service bus also allows loosely coupled communication between modules. Additionally, it supports modules communicating even if they use different data formats, through the use of data transformers. This means modules can be switched or changed without requiring other modules to change. However, a service bus is more complex than a message bus and may be overkill for small applications.