In order to understand SOA, we must first understand what a webservice means, which is sometimes referred as crux of SOA,not always though.A system does not necessarily need to use web services and all related standards to be "service-oriented." For example, some service oriented systems have been implemented using Corba,DCOM,RPC, Jini and REST.A webservice is defined by a set of processes over a network which is a manifestation of some physical entities like databases,devices,programs.It is an interface or gateway for one program/device/system to have a controlled access over a network to other program/device/system like humans need some sort of GUI to interact with one system.A webservice accepts a command as a SOAP envelope to expedite some task and sends response in a form of SOAP envelope too.SOAP(Simple Object Access Protocol) is protocol which uses XML based messages generally over HTTP.A webservice is loosely coupled and flexible , it means a consumer of a web service is not tied to that web service directly; the web service interface can change over time without compromising the client's ability to interact with the service. A tightly coupled system implies that the client and server logic are closely tied to one another, implying that if one interface changes, the other must also be updated. Adopting a loosely coupled architecture tends to make software systems more manageable and allows simpler integration between different systems.
Apart from SOAP, other key constituents of a webservice are WSDL and UDDI.
WSDL(Web Services Description Language) is an XML technology that describes the interface of a web service in a standardized way. WSDL standardizes how a web service represents the input and output parameters of an invocation externally, the functions' structure, the nature of the invocation (in only, in/out, etc.), and the service's protocol binding. WSDL allows disparate clients to automatically understand how to interact with a web service.
UDDI(Universal Description, Discovery, and Integration - An XML-based registry to publish service descriptions (WSDL) and allow their discovery.UDDI is used to discover available webservices by searching for names,identifiers,categories or specifications implemented by the web service.
SOA is an extension to EAI(Enterprise Application Integration), which is technology independent whether it is Java,.Net,CORBA or webservices.This has given rise to enormous potential of varied and vast scope of application integration in fast changing,ever evolving and getting more and more complex business requirements.Since the large organizations have lot of existing systems over different geographical locations,with different operating systems using different technologies doing different business operations, these organizations have found SOA as a big solution to their burgeoning problem of keeping their IT budgets in control vis a vis addressing their growing business requirements.The continuous IT growth within organizations have given rise to a new level of complexity and challenge to bind existing legacy,business critical solutions with new ones and that's where SOA fits in putting all different pieces together.When all the hype associated with SOA will reside and organizations will get more close to reality then its fruits will be reaped.
SOA has some ground features which drives development and maintenance of SOA based solutions:
- Loose Coupling
- Services Identification and categorization
- Services Provisioning and delivery
- Services Monitoring and tracking
- Basics of Object Oriented Technology like Abstraction,Encapsulation