Posts Tagged ‘Architecture’

Service Component Architecture

January 13th, 2010

Today, Fabric3 announced the general availability of their latest SCA implementation. Although I have heard the term before I have never taken the time to read further on the subject so this morning I decided to change that. This introduction to SCA by David Chappel does a good job at providing an overview of what Service Component Architecture is about.

In essence there is nothing revolutionary about SCA. In my view, it is an effort to standardise how services and their interactions are defined in a technology-agnostic manner. Anyone who has been developing enterpise applications using the Spring Framework or OSGi should be pretty familiar the concepts in SCA.

At the core of SCA are Services. Services are implementated using Components. Components can be composed (Composites) to provide more refined behaviours. All of these components and compositions of components live within a Domain. Interactions between these services are expressed as References. The actual communication between components is left to the responsibily of Bindings, thus isolating the business logic from the underlying remoting technology. The SCA runtime is responsible for dependency injections so services need not concern themselves with locating dependencies. Finally, the use of annotations and xml configurations mean that services/components can be implemented as simple objects.

Besides Fabric3, there’s another open-source SCA implemention from Apache called Tuscani.

I’m quite curious to see how practical/useful this architecture is. Hopefully I’ll find the time to experiment with one of these implementations.