Enterprise Integration Zone is brought to you in partnership with:

Madhuka is Software Engineer and currently works on the Jaggery, UES, WSO2 Gadget Server team. He holds a B.Sc (Hons) degree in Information Technology from the Faculty of Information Madhuka is a DZone MVB and is not an employee of DZone and has posted 53 posts at DZone. You can read more from them at their website. View Full User Profile

What is SOA (service-oriented architecture)?

  • submit to reddit
SOA (service-oriented architecture) is a style of software architecture that can be used in designing and developing software as form of interoperable services. There are 3 things that are coming in to my mind as I head into describing SOA.

A collection of services
- Services can be for  web-based applications or even softare (Eclipse)
- Web Services Description Language (WSDL) describes the services themselves

Loosely coupled
- It is loose coupling of services with operating systems and other technologies that underlie applications.
-  If a service presents a simple interface that abstracts away its underlying complexity, users can access independent services without knowledge of the service's platform implementation

Enable communication between services

- SOAP protocol describes the communications protocols.
- XML is often used for interfacing with SOA services. JSON is also becoming increasingly common.
- These services and their corresponding consumers communicate with each other by passing data in a well-defined, shared format, or by coordinating an activity between two or more services.

When we look on IT history SOA came up as solution for existing problem. Here is the time line on this perspective.

Procedural Oriented
The idea was all about writing codes.

Object Oriented
When developers started thinking about reuse

Component Oriented
When reusing objects between different applications written in different technologies was a hassle.

Service Oriented
When the reuse idea is extended to the extent that I need to reuse a complete application and I need to provide standard facilities for others to easily integrate and make use of my service.

If you Going to SOA. It can be divided in to four groups. As below.


  • Application frontends (FE): Delivering the value of SOA to the end users.
  • Service: Component that encapsulates a high level business concept.

    • Contract: provides a specification of the purpose, functionality, constraints, and usage of services.
    • Interface: functionality of the service exposed by the service to the clients.
    • Implementation: the service implementation provides the required business logic and appropriate data.
      Business logic: business process represented by the service.
      Data: data represented in the service/ used by the service.

  • Service repository: it registers the services and their attributes to facilitate the discovery of services; operation, access rights, owner, qualities,
  • Service Bus (ESB): A flexible infrastructure for integrating applications and services by routing messages, transforming protocols between requestor and service, handling business events and delivering them, providing QoS, mediation and security, and managing the interaction among services.
Published at DZone with permission of Madhuka Udantha, author and DZone MVB. (source)

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)