Wednesday, December 23, 2009

What is SOA?

-by Sudhamayi
SOA (Service Oriented Architecture) is an architectural style for building software applications that use services available in a network such as the web. It promotes loose coupling between software components so that they can be reused. Applications in SOA are built based on services. A service is an implementation of a well-defined business functionality, and such services can then be consumed by clients in different applications or business processes.


SOA allows for the reuse of existing assets where new services can be created from an existing IT infrastructure of systems. In other words, it enables businesses to leverage existing investments by allowing them to reuse existing applications, and promises interoperability between heterogeneous applications and technologies.

SOA provides a level of flexibility that wasn't possible before.

1. Services are software components with well-defined interfaces that are implementation-independent. An important aspect of SOA is the separation of the service interface (the what) from its implementation (the how). Such services are consumed by clients that are not concerned with how these services will execute their requests.


2. Services are self-contained (perform predetermined tasks) and loosely coupled (for independence)

3. Services can be dynamically discovered.

4. Composite services can be built from aggregates of other services.

The figure depicts a typical Service consumer/producer flow.

Registry: This is something like a common place where are the services will be registered.

Service Consumer: Service consumer could be anything starting from a stand alone application to a Web application, which basically uses the service that is exposed.

Service Provider: Service provider is the one who provides the service that’s been published in the registry to be accessible by all consumers.

Typical work flow: Service provider writes some service and publishes it to the registry. As described, registry is something like a common place where all the services will be registered. Then the consumer searches for a service and if he finds it in the registry and then binds it and uses it by invoking it.

Service could be as simple as a java method or a servlet or an EJB that’s been deployed

No comments:

Post a Comment