Service oriented architecture (SOA) is an approach to build IT systems that connects applications across a network via a common communications protocol, allowing organizations to reuse old software, often with the help of Web services to create new business processes and functions. It is a set of design principles and approaches to software development and a methodology for organizing and using independent services by making them interact with each other.
The SOA implementation relies on a mesh of software services. Services comprise unassociated, loosely coupled units of functionality that have no calls to each other embedded in them. Each service is cohesive that implements one action. Rather than services embedding calls to each other in their source code, they use defined protocols that describe how services pass and parse messages. XML (Extensible Markup Language) is the standard messaging language used by services to communicate. It is a set of rules for encoding messages in machine-readable form.
SOA has some architectural alternatives like:
Client Server – This architecture describes the relationship between two computer programs in which one program, the client, makes a service request from another program, the server, which fulfills the request, for example the World Wide Web. Centralized processing that takes places at the server is a major issue which can be a performance bottleneck whereas in SOA the processing is highly distributed. SOA allows many options for deploying services on multiple servers with supporting middleware. In Client Server architecture each client houses the application code and every code update requires redistribution to all the clients.
P2P (Peer to Peer) - In a peer-to-peer (P2P) architecture every participant is independent and equal. Central components or services which are used by all other participants should not exist.