ATL (part of VC++) is Active Template Library and is used to build lite-weight components for use by various clients. Typically these components contain the business logic / data access tiers for an application. ATL is the library of choice for building components with VC++ because it is streamlined not to include user-interface baggage that tends to bloat up a component. Most back-end components don't need a UI and are written to be fault-tolerant, passing back all error situations back to the calling client. I never want a component to crash on me; always return control back to the client.
I usually write my components to be language-neutral, such that both web, VC++, and
VB clients can use it's methods. This calls for dual interfaces.