« Attribute Value Template | How to implement Equals in C# »

Programming (Atom)

SOA definition

Posted by David Carroll

excerpted from Roger Sessions at ObjectWatch via Jason Tucker

An Service-Oriented Architecture (SOA) is an architecture that defines how autonomous systems interoperate with particular focus on:

  • Asynchronous communications
  • Heterogeneous transport channels
  • Proof of identify
  • Error management
  • Workflow coordination

If two systems are autonomous, then they have no mutual dependencies. This implies that neither system interrupts its own work to wait for some other system to complete its task. This implies asynchronous communications. The first SOA principle is therefore asynchronous communications.

If two autonomous systems interoperate, then there must be a communications channel between the two that is independent of the technology used by either system. The second SOA principle is therefore heterogeneous communications channels.

If two systems are truly autonomous of each other, then there is a natural healthy mutual suspicion that must be maintained. In order to get beyond this, there must be a way for each system to convince the other that it is really who it claims to be. The third SOA principle is therefore proof of identify.

It would be great if everything worked every time. Unfortunately, things don’t always work. An architecture of interoperability must take into account what happens when things don’t work as well as when things do work. The fourth SOA principle is therefore error management across the systems matrix.

When multiple autonomous systems are communicating with each other asynchronously, keeping track of where we are in the overall workflow effort is much more complicated than when systems are working together synchronously. The fifth SOA principle is therefore workflow coordination.

Comments