views:

353

answers:

3

Here is a pretty theoretical and abstract question: How Service-oriented architecture (SOA) differs from Component-based approach? Is the concept of SOA an extension to Component-based approach?

What are your thoughts? Maybe you know any good papers that cover this subject?

+1  A: 

The two concepts are pretty orthogonal, neither complementing nor contradicting each other. If you threatened to stick a rusty fork in my eye and forced me to generalise, I'd say that component-based development was a technique for modelling and assembling a specific piece of software, where as SOA is a technique for organising separate systems so they can talk to each other.

Like I said, a crass generalisation, but it's all I'm going to give you without a more specific question :)

skaffman
A: 

One might say that SOA is a high-level form of component-based development, where components have been turned into reusable pieces of functionality called services.

Lars A. Brekken
A: 

In this article the authors view component-based development as supporting SOA - in the end your SOA needs services to be implemented and you design components as the deliverables which provide the implementation. Some of the skill being to get the granularity and cohesiveness of the components right.

I believe that this perspective is a reasonable characterisation of how SOA is actually done today. For me the key is you first focus on services, what you need to do in a business sense, then later come to the component designs. [Here's an article about identifying services. Disclaimer: I'm an IBM person, these articles are written by colleagues.]

However, if you wind the clock back I think you will find that Component-Based Development was an approach which predates SOA, and had many of the same goals as SOA. I view as unduly cynical the opinion that SOA is just marketing hype, sticking new labels on old concepts. However there is considerable overlap between CBD and SOA. I just view SOA as being the best collective wisdom we have to date on how to do integration, no doubt as we learn more new techniques will emerge until the overall kitbag merits a new name again.

My personal view is that SOA got momentum because a set of technologies emerged that allowed disparate technical teams within an organisation (eg. an IBM base and Microsoft base) to build components that could use each others services. In other words a level of maturity in how to do components emerged, such that a new label (SOA) was attractive.

djna