Service Oriented Architecture
In software engineering, a service-oriented architecture (SOA) is a set of principles and methodologies for designing and developing software in the form of interoperable services. These services are well-defined business functionalities that are built as software components (discrete pieces of code and/or data structures) that can be reused for different purposes.
SOA generally provides a way for consumers of services, such as web-based applications, to be aware of available SOA-based services.
SOA defines how to integrate widely disparate applications for a Web-based environment and uses multiple implementation platforms. Rather than defining an API, SOA defines the interface in terms of protocols and functionality. An endpoint is the entry point for such a SOA implementation.
Service-orientation requires loose coupling of services with operating systems and other technologies that underlie applications. SOA separates functions into distinct units, or services, which developers make accessible over a network in order to allow users to combine and reuse them in the production of applications. These services and their corresponding consumers communicate with each other by passing data in a well-defined, shared format, or by coordinating an activity between two or more services.
A service provider creates an abstract service definition that it publishes in a service registry. With Web Services, the description is a Web Services Description Language (WSDL) file, and the registry follows the Universal Description, Discovery, and Integration (UDDI) standard.
A service requestor can find the service description, possibly using a set of selection criteria to query the registry. If a suitable description is found, the requestor can bind to the service. The SOAP (Simple Object Access Protocol) protocol defines an XML message format for Web Services and their clients (requestors).
See also: Web Services Simplified.