A service-oriented architecture is a collection of services that communicate with each other. The communication involves simple data passing or could involve two or more services coordinating some activity. Some means of connecting services to each other is needed.
What is a Service?
The basic principles of service-oriented architecture are independent of vendors, products, and technologies. Different services are used simultaneously to provide the functionality of a large software application, a principle SOA shares components among modular systems.
The service-oriented architecture integrates distributed, separately-maintained, and -deployed software components. A service is a discrete unit of functionality that can be accessed remotely and acted upon and updated independently. A service has four properties according to one of many definitions of SOA:
- It logically represents a business activity with a specified outcome.
- It is self-contained.
- It is a black box for its consumers.
- It may consist of other underlying services.
Elements of service-oriented architecture
A service is a discrete unit of functionality that can be accessed remotely and acted upon and updated independently. A service is a self-contained functionality that performs a specific task that consists of 3 components.
- The interface defines how a service provider will perform requests from a service consumer
- The contract defines how the service provider and the service consumer should interact
- The implementation is the actual service code itself
Because the interface of service is separate from its implementation, a service provider can execute a request without the service consumer knowing how it does so; the service consumer only worries about consuming services provided.
Benefits of service-oriented architecture
SOA provides access to reusable components (i.e. Web services) over a Network (i.e. TCP/IP network), which makes this an important topic to cloud computing going forward. According to W3C, SOA is proven to be beneficial. These are:
- Language Neutral Integration: Regardless of the developing language used, the system offers and invoke services through a common mechanism. Programming language neutralization is one of the key benefits of SOA’s integration approach.
- Component Reuse: Once an organization built an application component, and offered it as a service, the rest of the organization can utilize that service.
- Organizational Agility: SOA defines building blocks of capabilities provided by software and it offers some service(s) that meet some organizational requirements; which can be recombined and integrated rapidly.
- Leveraging Existing System: This is one of the major use of SOA which is to classify elements or functions of existing applications and make them available to the organizations or enterprise.