First of all, I have to say that I'm going to talk about System.ComponentModel.Component.
You know, I understand, that the .NET Component Model provides ability (through Site Services) to define separate Components, so they can communicate with each other in a loosely coupled way, and that each Component is easily replaceable.
But my point is, that I can achieve this otherwise:
I mean if I design the SW in the right Object Oriented Programming manner, I can by means of Abstract classes, Interfaces etc. achieve all mentioned functionality / interoperability.
Then WHY and WHEN should I rely on the Component Model?