The way I see it is this:
COM was used to execute code that was built with another language. A COM component writen in C++ could be used by VB or FoxPro, for example.
With .NET and Common Language Runtime, everything compiles to the same Intermediate Language, so that any CLR compliant language can use classes built in any other CLR language without COM. The MSIL loader doesn't care what language was the source, its all IL code.
>>Web services are the replacement to COM.
>
>This is not exactly true. Web Services give functionality that COM never gave, and a COM server can be deployed as a web service. It might be more accurate to state that Web Services will replace DCOM as a means to invoke code on remote machines, but that wouldn't really be true either, as DCOM still has its place, and Web Services have theirs.