SOA is the abbreviation of Service Oriented Architecture. SOA is used for developing software applications that use services available in a network such as web.It promotes loose coupling between the components so that they can be reused.Applications in soa are built based on services available.A service is an implementation of a well-defined business functionality and such services can be consumed by clients in different applications or business processes.At one moment, an application could act as a client by calling an external service, while moments later, it may act as a service-provider when called by another application to perform a task.
SOA allows for the reuse of existing assets where new services can be generated from the existinf IT-infrastructure systems.In other words, it enables business to leverage existing investments by allowing them to reuse the existing applications and promises interoperability between hetrogeneous applications and technologies.SOA provides a level of flexiblity in the sense that:
1.services are software componets with well-defined interfaces that are implementation-independent.An important aspect of SOA is the separation of the services interface(the what) from it's implementation(the how).Such services are consumed by the clients that are not concerned with how these services will execute their requests.
2.Services are self contained(perform predetermined task) and loosely coupled(for independence).
3.Services can be dynamically discovered.
4.Composite services can be built from aggregates of other services.
SOA uses the find-bind-execute paradigm.In this paradigm the service provider register their service in a public registery.This registery is used by the consumers to find certain criteria.If the registery has such a service it provides, it provides the consumer with the contract and end point address for that service.
SOA based applications are distributed-multitier applications that have presentation , business logic and persistence layers.Services are the building blocks of SOA applications.While any functionality can be made into a service, the challenge is to define service interface that is at the right level of abstraction.Services should provide coarse-grained functionality.