Although SOA and Web services are two separate but related entities, it is more important to realise the clear distinction between them. Web services, in the form of SOAP-based interapplication connections, has been highlighted, while SOA — a body of application architecture and design concepts — has largely been viewed as a side effect of Web services.
An SOA, at its heart, is a collection of services. A service is a software component
that is well-defined, both from the standpoint of software and business function, and doesn't depend on the context or state of any application that calls it.
Loosely Coupled Services : A service in an SOA comprises of the interface contract which is platform-independent. These services can be dynamically located and invoked. They are self-contained i.e., the state of a service does not depend upon the state of other services. A client from anywhere, functioning on any operating system can dynamically invoke these services (depending on their requirement). Dynamic discovery involves a lookup of services in the Universal Description Discovery Integration(UDDI) directory where service providers publish the services they provide.
Dynamic Discovery : The directory of services(UDDI) forms an intermediary for service providers and consumers. They organize services and categorize them as per their functionality. A directory service in SOA has the following advantages:
a)Decouples consumers from providers.
b)Scalability of services is highly enhanced. Services can be added incrementally.
c)Serves as a lookup for service consumers.
d)Allows consumers to dynamically locate service providers instead of hard-coding a single provider.
Web Services: Web Services play a major role in SOA because these services are built on top of platform independent protocols. These protocols include HTTP, XML, UDDI, WSDL and SOAP. Services in an SOA can be dynamically discovered and invoked. This is accomplished through these protocols. XML makes it very easy to have a platform-independent interface contract. HTTP enhances interoperability.
Messages: The interface contract of services defines the behavior of the service and the messages they receive and send from service consumers and service providers respectively. And since these interface contracts are platform and language independent, the method of defining these messages should also be compatible with all platforms, operating systems and languages. XML provides all of these features by being non-restrictive towards platforms and languages.
Picture shown below reflects the Protocol Stack of current SOA building blocks.
A SOA building block can represent one or many of these roles
The service provider creates a service and possibly publishes its interface and
access information to the service registry or broker. Each provider must
decide which services to expose, how to make trade-offs between security
and easy availability, how to price the services, or, if they are free, how to
exploit them for other value. The provider also has to decide what category
the service should be listed in for a given broker service and what sort of
trading partner agreements are required to use the service.
The service broker, also known as service registry, is responsible for making
the service interface and implementation access information available to any
potential service requestor. The implementer of the broker decides about the
scope of the broker. Public brokers are available through the Internet, while
private brokers are only accessible to a limited audience, for example, users
of a company intranet. Furthermore, the amount of the offered information
has to be decided. Some brokers specialize in many listings. Others offer high
levels of trust in the listed services. Some cover a broad landscape of services
and others focus within an industry. There are also brokers that catalog other
brokers. Depending on the business model, brokers can attempt to maximize
look-up requests, number of listings or accuracy of the listings.
The service consumer or requestor client locates entries in the broker registry
using various find operations and then binds to the service provider in order
to invoke one of its services.