액티브 템플릿 라이브러리
(
Active Template Library
, ATL)는
마이크로소프트
가 開發한 템플릿 基盤
C++
클래스들의 集合으로,
컴포넌트 오브젝트 모델
(COM) 오브젝트의 프로그래밍을 單純化할 目的으로 만들어졌다.
비주얼 C++
의 COM 支援을 통해 開發者들은 다양한 COM 오브젝트,
OLE 自動化
서버,
액티브X
컨트롤러를 開發할 수 있다.
[1]
[2]
ATL은 오브젝트 魔法師가 包含되어 있어서 最小限의 손 코딩으로 빠르게 오브젝트의 主要 構造를 構成할 수 있다. COM 클라이언트 側에서 ATL은 COM 參照 카運팅을 다루는
스마트 포인터
를 提供한다. 라이브러리는
큐리어슬리 리커링 템플릿 패턴
(curiously recurring template pattern, CRTP)을 相當하게 使用한다.
歷史
[
編輯
]
COM 오브젝트들은
마이크로소프트 파운데이션 클래스 라이브러리
(MFC)를 使用하여 만들 수도 있지만
DLL
支援이 必要한 더 큰 바이너里를 만들어낸다.
[3]
한便 ATL은 MFC의 그래픽 使用者 인터페이스 部分이 必要하지 않은 狀況에서 더 가벼운 對案이 될 수 있다.
[4]
버전 3(비주얼 스튜디오 6.0)의 뒤를 直接 잇는 ATL 버전 7(비주얼 스튜디오 2003)에서 CString과 같은 수많은 MFC 클래스들은 ATL에서 利用이 可能하게 되었는데, 두 라이브러리에 依해 共有되는 ATLMFC 共通 레이어로 移動되었다는 表現이 더 正確하다. ATL 버전 7은 또한
CLI 屬性
과 類似한 것을 提供하기 爲해 C++의 屬性들을 導入하였으나 이것들은 特히 成功的이지 못했고 ATL 버전 8(비주얼 스튜디오 2005)에서 輕視되었다. 多樣한 魔法師들은 더 以上 基本的으로 이들을 生成하지 않는다. 버전 7은 또한 새로운 文字列 變換 클래스들을 導入하였다.
2009年 7月 28日, 마이크로소프트는 ATL을 使用하여 만든
액티브X
컨트롤이 遠隔 코드 實行 保安 脆弱點에 脆弱해질 수 있는 버그를 修正하기 위한 패치를 公開하였다.
[5]
비주얼 스튜디오 2013 以後로, 비주얼 C++ 2013의 ATL 코드는 靜的이며, DLL을 除去한다.
[6]
支援 클래스
[
編輯
]
ATL은 수많은 RAI(Resource Acquisition Is Initialization) 클래스들을 包含하고 있어서 COM 타입의 管理를 單純化시킨다. 가장 一般的으로 쓰이는 클래스는 다음과 같다:
CComPtr<T>
[7]
汎用 스마트 포인터,
CComBSTR
[8]
BSTR 래퍼(wrapper),
CComVariant
[9]
VARIANT 래퍼,
CComSafeArray<T>
[10]
SAFEARRAY 래퍼.
컴파일러 COM 支援
[
編輯
]
公式的으로 ATL의 一部는 아니지만, 마이크로소프트 비주얼 C++은 또한 COM 타입 管理의 單純化를 위해 追加的인 C++ RAII 클래스들은 包含하고 있다. 이 컴파일러 COM 支援 클래스들은 ATL과 함께, 또는 ATL을 代身하여 使用할 수 있으며 다음을 包含한다:
_com_ptr_t
[11]
COM 인터페이스 이름을 "Ptr" 接尾辭로 表現하는 스마트 포인터,
_bstr_t
[12]
BSTR 래퍼,
_variant_t
[13]
VARIANT 래퍼,
_com_error
[14]
HRESULT 래퍼.
비주얼 스튜디오 2012를 基準으로, 컴파일러 COM 支援 클래스들은 SAFEARRAY 래퍼를 包含하지 않고 있다.
같이 보기
[
編輯
]
各州
[
編輯
]
外部 링크
[
編輯
]