User2032526919 posted
http://en.wikipedia.org/wiki/Component_Object_Model
Component Object Model (COM) is a binary interface standard for
software componentry introduced by
Microsoft in 1993. It is used to enable
interprocess communication and dynamic
object creation in a large range of
programming languages. The term COM is often used in the software development industry as an
umbrella term that encompasses the
OLE,
OLE Automation,
ActiveX,
COM+ and
DCOM technologies.
The essence of COM is a language-neutral way of implementing objects that can be used in environments different from the one they were created in, even across machine boundaries. For well-authored components, COM allows reuse of objects with no knowledge
of their internal implementation, as it forces component implementers to provide well-defined interfaces that are separate from the implementation. The different allocation semantics of languages are accommodated by making objects responsible for their own
creation and destruction through reference-counting.
Casting between different interfaces of an object is achieved through the
QueryInterface()
function. The preferred method of inheritance within COM is the creation of sub-objects to which method calls are delegated.
Although the interface standard has been implemented on several platforms, COM is primarily used with
Microsoft Windows. For some applications, COM has been replaced at least to some extent by the
Microsoft .NET framework, and support for
Web Services through the
Windows Communication Foundation (WCF). However, COM objects can still be used with all .NET languages without problems. Networked
DCOM uses binary proprietary formats, while WCF encourages the use of
XML-based
SOAP messaging. COM is very similar to other
component software interface standards, such as
CORBA and
Java Beans, although each has its own strengths and weaknesses. It is likely that the characteristics of COM make it most suitable for the development
and deployment of desktop applications, for which it was originally designed.
...
Read more for more details. One main difference between COM component and .NET dlls is that .NET dlls (assemblies) contain a manifest describing what the assembly contains. E.g assembly is self-describing. Even though they might have same file extensions,
their difference is a lot nmore than that.