Connectivity Challenges
One of the main reasons for using the Service Bus is to
solve some of the challenges we have when communicating between applications.
Whilst there are many scenarios where the Service Bus can be applied, there are
three scenarios that are fairly common.
Services
Exposing the functionality of a line-of-business system over
the internet has traditionally been fairly complex to achieve. The service will
typically require a static IP address and domain name, the provisioning of a
service host in a demilitarized zone (SMZ), and the configuration of firewalls.
There are also many political issues with exposing services, as well as
implications for the security of the systems involved.

Exposing services in this way can be costly and time
consuming, and in some cases this may prove to be a show stopper.
Devices
The rise in popularity of devices such as smart-phones and
tablets, combined with an increase in the availability of 3G and 4G mobile
phone networks and WiFi has led to a change in the way people interact with IT
systems. The rise of mobile applications (Apps), and the growing adoption of
technologies like HTML5 allows more powerful functionality to be delivered to
these devices.
The assumption that applications will be used by an employee
on a PC connected to a company’s internal network is often no longer valid.
Employees expect to be able to access the systems they need to work with from
their own device wherever they can get an internet connection.

Mobile devices can change network location many times during
a business day, and the speed and reliability of mobile connections can vary
from network to network. Providing reliable communication between these devices
and sending notifications to a mobile device can prove challenging.
Cloud
The rise in popularity of cloud computing means that the IT
systems used by an organization may well be distributed over a wide
geographical area. The reliance on static IP addresses, Windows Active
Directory authentication and TCP sockets for communication is often not
possible.

Providing a means of handling communication between these
distributed applications whilst maintaining security and reliability is often a
challenge.