액티브 템플릿 라이브러리
액티브 템플릿 라이브러리(Active Template Library, ATL)는 마이크로소프트가 개발한 템플릿 기반 C++ 클래스들의 집합으로, 컴포넌트 오브젝트 모델(COM) 오브젝트의 프로그래밍을 단순화할 목적으로 만들어졌다. 비주얼 C++의 COM 지원을 통해 개발자들은 다양한 COM 오브젝트, OLE 자동화 서버, 액티브X 컨트롤러를 개발할 수 있다.[1][2] ATL은 오브젝트 마법사가 포함되어 있어서 최소한의 손 코딩으로 빠르게 오브젝트의 주요 구조를 구성할 수 있다. COM 클라이언트 측에서 ATL은 COM 참조 카운팅을 다루는 스마트 포인터를 제공한다. 라이브러리는 큐리어슬리 리커링 템플릿 패턴(curiously recurring template pattern, CRTP)을 상당하게 사용한다.
개발자 | 마이크로소프트 |
---|---|
프로그래밍 언어 | C++ |
운영 체제 | 마이크로소프트 윈도우 |
종류 | 라이브러리 or 프레임워크 |
라이선스 | 사유 |
상태 | 개발 중 |
역사
편집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 타입의 관리를 단순화시킨다. 가장 일반적으로 쓰이는 클래스는 다음과 같다:
컴파일러 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 래퍼를 포함하지 않고 있다.
같이 보기
편집각주
편집- ↑ Grimes, Richard (1998). 〈ATL and COM〉. 《ATL COM》 1판. Wrox Press. 6쪽. ISBN 1-86100-249-1.
- ↑ Grimes, Richard (1999). 〈Building and calling a COM object using ATL〉. 《Beginning ATL 3 COM Programming》 1판. Wrox Press. 63쪽. ISBN 978-1-86100-120-7.
- ↑ Williams, Mickey (2000). 〈Active Documents〉. 《Visual C++ 6 Unleashed》 1판. Sams. 733쪽. ISBN 978-0-672-31241-0.
- ↑ Microsoft MSDN: Recommendations for Choosing Between ATL and MFC
- ↑ “ATL Security Update”. 《MSDN》. Microsoft. 2009년 7월 28일. 2011년 9월 19일에 확인함.
- ↑ ATL and MFC changes and fixes in Visual Studio 2013 http://blogs.msdn.com/b/vcblog/archive/2013/08/20/atl-and-mfc-changes-and-fixes-in-visual-studio-2013.aspx
- ↑ Microsoft MSDN: CComPtr Class
- ↑ Microsoft MSDN: CComBSTR Class
- ↑ Microsoft MSDN: CComVariant Class
- ↑ Microsoft MSDN: CComSafeArray Class
- ↑ Microsoft MSDN: _com_ptr_t Class
- ↑ Microsoft MSDN: _bstr_t Class
- ↑ Microsoft MSDN: _variant_t Class
- ↑ Microsoft MSDN: _com_error Class