# Active Template Library

Die Active Template Library (ATL) ist eine Sammlung von Visual-C++-Programmbibliotheken zur Erstellung und Nutzung von COM-Komponenten, einschließlich ActiveX-Steuerelementen. Der Namensbestandteil Template (dt.: Vorlage) rührt von der ausgiebigen Nutzung von C++-Klassenvorlagen her. Im Vergleich zu unter Verwendung der MFC generierten Programmen sind die mit ATL erzeugten Komponenten kleiner und damit schneller über das Internet zu laden. Wie bei der Nutzung von Klassenbibliotheken üblich, erfolgt die Verwendung der ATL über das Einbinden der Header-Dateien und Linken mit den eigentlichen Bibliothek-Binärdateien. Visual C++ bietet jedoch spezielle ATL-Projektvorlagen, bei denen die Einbindung bereits vorgegeben ist. Es handelt sich um ein kommerzielles Produkt von Microsoft, welches mit dem VC++-Compiler vertrieben wird.

## Funktionsumfang

Die COM-Unterstützung in VC++ gestattet es Entwicklern, eine Vielzahl von COM-Objekten, OLE-Servern und ActiveX-Controls auf einfache Art und Weise zu erstellen. Die Quellcodes der ATL sind der Standard Template Library (STL) ähnlich strukturiert; ein „Wizard“ übernimmt zusätzlich das Erstellen von Klassen und Interfaces und erleichtert dem Entwickler damit die Arbeit.
Controls, die in Webseiten eingebettet werden können, könnten genauso mit den Microsoft Foundation Classes erstellt werden, allerdings sollte auf die Größe der herunterzuladenden Daten geachtet werden, wo die ATL den MFC gegenüber Vorteile aufweist. Die Abhängigkeiten der MFC summieren sich je nach Verwendung auf mehrere Megabyte, wohingegen alle ATL-Abhängigkeiten in eine Bibliotheksdatei (DLL) einkompiliert werden, die nur wenige hundert Kilobyte groß ist.

## Anwendung

Ein konkreter Anwendungsbereich für ATL ist Microsofts Active Server Pages, wo VBScript als Programmiersprache zum Einsatz kommt, deren Funktionsumfang durch ActiveX-Controls und COM-Objekte beliebig erweiterbar ist. Weiterhin ist ATL die Grundlage der Windows Template Library (WTL). Hierbei handelt es sich um ein von Microsoft quelloffen freigegebenes Framework zur Erstellung von Benutzeroberflächen (Dialoge, Views) für Windowsprogramme (Windows Desktop Applications/WDA). Von der ATL gibt es auch eine Variante namens ATL Server, um serverseitige Software zu entwickeln.

## Versionsgeschichte

Die Entwicklung von ATL begann Ende 1995, als man bei Microsoft neue Klassenbibliotheken für die Visual C++ 4.2 Enterprise Edition entwickeln wollte. Während der Entwicklungszeit wurden diese Bibliotheken zunächst als Microsoft Enterprise Classes (MEC) bezeichnet. Die erste Version, ATL 1.0, wurde im Frühsommer 1996 zum Herunterladen im Internet angeboten. Im Spätsommer folgte ATL 1.1, das neben Fehlerbehebungen auch Neuerungen wie Connection Points, NT Services, RGS Registry Support und Sicherheitsfunktionen enthielt. Mit dem darauffolgenden ATL 2.0 konnte man ActiveX-Steuerelemente erzeugen. Es wurde im Dezember 1996 zusammen mit VC 5.0 ausgeliefert. Es folgte bald Version 2.1, die lediglich Fehlerbehebungen für Alpha-, MIPS- und PowerPC-Prozessoren enthielt. ATL 2.1 wurde zusammen mit der Alpha-Version von Visual C++ 5.0 ausgeliefert; außerdem konnte es über das Internet für VC 4.2 heruntergeladen werden. Im Juni 1998 wurde VC 6.0 gemeinsam mit ATL 3.0 ausgeliefert. Mit der Visual-Studio-Version 2003 wurde ATL in der Version 7 ausgeliefert. Aktueller Versionsstand ist ATL 9.0. Im November 2014 veröffentlichte Microsoft das kostenlose Visual Studio Community 2013, das die aktuelle ATL beinhaltet.