Service Oriented Architecture
SOA is an evolution of distributed computing designed to allow the interaction of software components, called “services”, across a network.
Applications are created from a composition of these services and the services can be shared among multiple applications.
Need for Service-Oriented Architecture
- Systems today are bigger
- Systems need to be interconnected
- OO works for small-medium sized systems
- CO (Component Orientation) works for medium-large systems
- SOA is an evolution from OO and CO and fulfills the need for very large systems
What is Service Oriented Architecture
SOA is an approach that helps design, implement, and deploy large systems that are created from components that implement discrete business functions.
These components are called “Services”, which are distributed across geography, across enterprises and can be reconfigured into new business processes as needed.
What is a Service
A Service is a program that can be interacted with through and well-defined message exchanges.
Messages can be sent from one service to another without consideration of how the service handling those messages is implemented, thus providing interoperability and adaptability.
Services must be designed for both availability and stability.
Services are loosely coupled to help provide the most important benefit of SOA: Agility
4 Tenets of Service-Oriented Architecture
1. Service is Autonomous
Services are entities that are independently deployed, versioned, and managed.
2. A Service has explicit boundaries
Services interact through explicit message-passing over well-defined boundaries, published via WSDL.
3. A Service exposes schema & contract and not class or type
Services communicate using XML, which is agnostic to both programming languages and platforms. The schema defines the structure and content of the messages, while the service’s contract defines the behavior of the service itself.
4. A Service allows or denies use based on policy
A Service decides what message it should process.
A Human Resources Management application could be created from the following services:
- An Employee Administration Service to manage hiring, changes in status, and termination.
- A Salary and Review Administration Service to manage salaries and employee performance reviews according to corporate standards.
- An IT Security Service to manage the addition and removal of access rights for employees according to their role and employee status.
- A Payroll Service provided securely over the Internet by an outside provider.
An HR Department Portal Service provides a web browser-based user interface for members of the HR department presenting the functions of the above services.
A travel application used on a mobile can use SOA to obtain all the below information from different service providers
- Hotel Rates
- Currency Exchange Rates
- Weather information
- A list of places to visit