As developers of both the client and the server, we know that the interface pointers used by the client in the lesson's example are part of an instance of C++ class CMyComObject.
However, the client does not actually see this. Instead, it sees two COM interface pointers,
one to IMyComInterface and
one to IYourComInterface, and not a pointer to a specific C++ class.
COM Server and Client
The COM implementer is the server, which is mostly created with C++ and uses the ATL.
COM consumer client
Can use all kinds of languages such as C#, C++, and VB.
Internet controls such as the ActiveX control for client and COM on the server
What Is ATL Server?
With Windows NT/2000 and Internet Information Services (IIS), Microsoft introduced a platform capable
of handling the mission-critical tasks described previously.
Combine IIS with (ISAPI) Internet Server Application Programming Interface development and developers are capable of getting the flexibility, control, performance, reliability, and scalability they desire. Unfortunately, ISAPI development is difficult, and there is a lot of infrastructure that the developers themselves must provide before they can even think of working on their application logic.
With Visual C++ .NET, the Visual C++ libraries team has created a library that greatly aids ISAPI
development. That library is ATL Server.
The ATL Server library has been designed to be a lightweight, thin wrapper over ISAPI. As such, the library
allows developers to maintain complete control over their Web applications (by plugging directly into the
underlying layers wherever they deem it necessary) while also greatly reducing development time by giving
developers much of the code that they would normally have to write, test, and document themselves.
The ATL Server classes are well-contained, separate parts that come together to form a complete
“framework” that helps developers create ISAPI applications much more productively. The classes are built
on top of one another, with high-level functionality built on top of low-level functionality, so nothing is
hidden and the pieces can be easily replaced and changed without affecting other portions of the application.