COM sounds good in theory, however you have to strip away most of the language improvements of the last 20 years (i.e., exceptions, inlining, cool little user-defined types, return values for data, references) for the interface. The interface''s inability to use these features tends to discourage their use in the implementation.
I would like to see a simple COM-like spec implemented in C++ and used only by C++ code. You could use all the features of the language and see how component-oriented programming would work without the klunky COM code. You would need a small Windows DLL and registry key which would handle installation and instantiation. A small static lib and header file could contain the base classes and load/unload the main DLL, which would handle the instantiation requests and so forth.
Imagine components that can:
1. Freely use exceptions instead of HRESULTs.
2. Freely use multiple threads.
3. Operate faster, because the caller doesn''t have to check return values.
4. Start more quickly, because of a less complex system.
5. Transparently use automatic interfaces that maintain their own reference counts.
Perhaps I''ll write up something like this now?