Service Oriented Architecture (SOA) is a style of programming, an architectural approach in software development, where an application is organized in functional units of code with a given behavior called services. SOA is more than just a collection of well defined services. It’s a methodology encompassing policies, procedures, and best practices that allow the services to be provided and consumed effectively. SOA is a way to build distributed systems where autonomous logic is called using loosely coupled messages via a well - defined interface.
A service is an autonomous (business) system that accepts one or more requests and returns one or more responses via a set of published and well defined interfaces. Each of these individual services can be modified independently of other services to help respond to the ever-evolving market conditions of a business.
Unlike traditional, tightly coupled architectures, SOA implements a set of loosely coupled services that collectively achieve the desired results; in addition, since the underlying implementation details are hidden (service operations are invisible) from the consumer, changes to the implementation won’t affect the service, as long as the contract does not change. This allows systems based on SOA to respond more quickly and cost effectively for the business.
SOA provides an approach based on open standards and generic messages that aren’t specific to any platform or programming language. As a result, a high degree of loose coupling and interoperability across platforms and technologies can be achieved.
Implementation of SOA architecture is needed to solve problems that object orientation alone cannot solve for very large systems with integration between multiple parts.
Service Providers are components that execute some business logic based on predetermined inputs and outputs, and expose this functionality through an SOA implementation.
A Consumer, on the other hand, is a set of components interested in using one or more of the services offered by the providers.A Repository contains a description of the services, where the providers register their services and consumers find what services are provided.