SOA, or the service-oriented architecture, is a software design style for which services are made available to other components though a network communication protocol. The basic principle of a service-oriented architecture is that is isn’t dependent on suppliers, products and technologies. The service is a discrete functionality unit that can be accessed remotely and can be run and updated independently, such as online credit card statement.
The service has four properties, according to the SOA definition:
Different services can be used together to ensure the functionality of a large software application. This SOA principle is shared with modular programming. Service-oriented architecture integrates distributed, separately maintained and deployed software components. This is made possible by the use of technologies and standards to facilitate communication between components and cooperation over the network, in particular by using the IP network.
In SOA, services are protocols that describe how they send and parse messages using descriptive metadata. These metadata describe functional and quality characteristics of the service. Service-oriented architecture tries to enable users to combine large volumes of functionalities to create applications that are built purely on existing services, which are subsequently combined as necessary.
The service represents a simple interface for requester which abstracts the complexity and acts like a black box. Other users can also access these independent services without knowing how their internal implementation works.
SOA works on the principle of free service linking. Services thus divide functions into separate units that developers can access over the network, allowing users to combine and reuse them freely in the production version of applications. These services and their corresponding consumers interact by sending data in a clearly defined shared format, or by coordinating activity between two or more services.
In October 2009, a manifesto defining six key concept, has been published:
SOA can be considered as a continuation of older concepts such as distributed programming or modular programming.