I've been an admirer of Juval Lowy's teaching and guidance in .NET development for a number of years. He's also written one of my favorite books: Programming .NET Components.
However on a recent DotNet Rocks podcast (Jan 2010) in discussing WCF/COM and .NET, he made some comments that greatly surprised me:
Juval L?wy: ..... in .NET, lo
and behold, every class here is a COM
object. We know that. In fact, it's much more than COM because we've
got the git compiling, we've got garbage collection,
we've got the Security Stack....
Carl Franklin: Well, you should clarify that
though. I mean, every
object is not a COM object. Every
object has the capabilities that a COM
object does, but the .NET Framework
isn't a COM library.
Juval L?wy: No, no. First of all .NET is actually built on
top of COM. It's all COM underneath.
Then, after Carl Franklin asks for clarification on this comment:
Carl Franklin: Yeah, I get that. My
question was is .NET built on COM?
Juval L?wy: Of course, it all COM
underneath.
Carl Franklin: No. I know it's
intertwined and it's required, but
when you new up a .NET object you're
not creating a COM object.
Juval L?wy: You're creating a .NET object, but all
I'm saying is that .NET is built
underneath. It's all C++ and COM.
Carl Franklin: It is C++ but you're not
registering a COM object through the
COM interface. It isn't all that stuff
unless you specifically do that.
Juval L?wy: But some of the stuff is using
COM underneath, but that's beside the
point. Forget about how it's made.
How do you read these comments?
While I understand (and have confirmed) that some of the System assemblies are written in unmanaged C++, is it also valid to say that they are "all COM underneath"?
I was under the assumption it is perfectly possible to write .NET CLI compliant C++ assemblies that have absolutely nothing to do with COM / ATL / ActiveX?
Here is the PDF transcript for the podcast in question. See Page 7.
See Question&Answers more detail:
os