Wikipedia defines SOA as "Service-oriented architecture (SOA) is a software design and software architecture design pattern based on discrete pieces of software providing application functionality as services to other applications. This is known as Service-orientation. It is independent of any vendor, product or technology.".
Service-oriented architecture (SOA) is based on services and consists of three basic components:
Service provider – Provides the service
Service broker – A way for service requestor to find the right service easily.
Service requestor – The consumer of the service.
Note that each component can act as other components, for instance, a service provider requesting some information from another provider while still serving the original request.
A client is not coupled to a server, but to a service.
Services can be incorporated dynamically during runtime.
Functional components and their interfaces are separated and hence new components can be plugged in more easily.
Bindings are specified using configuration files and can thus easily be adapted to new needs.
It is desirable to have a less number of coarse grained services than a large number of fine grained services.
Granularity can be considered as the scope of functionality provided by a service.
Loose coupling is another important desired feature for services.
SOAP-based web services play a central role in the service oriented architecture (SOA) approach to software design and development.
SOA emphasizes the concept of service encapsulation and Web services help in fulfilling a service contract.
SOAP, WSDL and UDDI
SOAP, WSDL and UDDI are the three important components in SOAP-based web services which make it suitable for efficient SOA implementation.
SOAP based webservices uses a special form of XML called SOAP to exchange messages (requests and responses). SOAP originally stood for Simple Object Access Protocol, but now also called as Service Oriented Architecture (SOA) protocol.
The Web Services Description Language (WSDL) is an XML-based language that is used for describing the functionality offered by a Web service. It is like a contract of how a web service SOAP message should look like, where it should connect to, which protocol to use (e.g. HTTP, JMS, SMTP etc.).
WSDL helps other applications to understand the SOAP request and response structure, its location, message exchange pattern used etc. and can then send automated request and parse the response without human intervention.
Universal Description, Discovery and Integration (UDDI) is a directory service where businesses can register their web services and consumers can search for web services automatically. However you might not use this in most cases. In my project experience working for a bank, we had an interface team who will prepare the WSDL and share with the provider and consumer team; so we never used UDDI in that project at all. But there was an internal registry where we could download different versions of the WSDL for a particular service.
Though web services are one of the best ways to implement SOA, web services are not the only technology that can be used to implement SOA. However, Web services are one of the best ways to implement SOA because:
A good SOA implementation requires easy and platform independent interoperability between different systems and programming languages. Web services communicate using standard, vendor-independent protocols such as SOAP, HTTP and XML.
A good SOA implementation requires a clear description language that can act as a contract. Web services use Web Services Description Language (WSDL) for this purpose.
A good SOA implementation require a search and retrieval functionality of services. Web services uses Universal Description Discovery and Integration (UDDI) for this purpose.
A good SOA implementation should also take care of security of the services. WS-Security (Web Services Security) is an extension to SOAP to apply security to web services.