Service-Oriented Architecture is a paradigm for organizing and utilizing distributed capabilities that may be under the control of different ownership domains. It is a style of software design where services are provided to the other components by application components, through a communication protocol over a network.
The basic principles of service-oriented architecture are independent of vendors, products, and technologies. Different services can be used in conjunction 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. It is enabled by technologies and standards that facilitate components’ communication and cooperation over a network, especially over an IP network.
A service is a discrete unit of functionality that can be accessed remotely and acted upon and updated independently, such as retrieving a credit card statement online. A service has four properties according to one of many definitions of SOA:
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:
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.
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.
With SOA, this software is organized as a set of software services. The services are supported by an infrastructure that, together with the services, improves information flow within the enterprise and between the enterprise and external enterprises.