El Active Template Library (ATL) es un conjunto de plantillas basadas en C ++ clases desarrolladas por Microsoft , la intención de simplificar la programación del modelo de objetos componentes (COM). El soporte COM en Microsoft Visual C ++ permite a los desarrolladores crear una variedad de objetos COM, servidores de automatización OLE y controles ActiveX . [1] [2] ATL incluye un asistente de objetos que configura la estructura primaria de los objetos rápidamente con un mínimo de codificación manual. En el lado del cliente COM, ATL proporciona punteros inteligentes que se ocupan del recuento de referencias COM. La biblioteca hace un uso intensivo depatrón de plantilla curiosamente recurrente .
Desarrollador (es) | Microsoft |
---|---|
Escrito en | C ++ |
Sistema operativo | Microsoft Windows |
Tipo | Biblioteca o marco |
Licencia | Propiedad |
Historia
Los objetos COM también se pueden crear con Microsoft Foundation Classes (MFC), pero esto conduce a binarios más grandes que requieren DLL de soporte . [3] ATL, por otro lado, es una alternativa más ligera en situaciones donde las partes de la interfaz gráfica de usuario de MFC no son necesarias. [4]
En ATL versión 7 (Visual Studio 2003), que sucedió directamente a la versión 3 (Visual Studio 6.0), varias clases MFC como CString se pusieron a disposición en ATL, o más precisamente se movieron a una capa común ATLMFC que es compartida por ambas bibliotecas. La versión 7 de ATL también introdujo atributos en C ++ en un intento de proporcionar algo similar a los atributos de la CLI ; sin embargo, estos no han tenido un éxito especial y se han restado importancia en la versión 8 de ATL (Visual Studio 2005); los distintos asistentes ya no los generan de forma predeterminada. La versión 7 también introdujo nuevas clases de conversión de cadenas.
El 28 de julio de 2009, Microsoft lanzó un parche para ATL para corregir un error que podría permitir que los controles ActiveX creados con ATL fueran vulnerables a una falla de seguridad de ejecución remota de código. [5]
Desde Visual Studio 2013, el código ATL en Visual C ++ 2013 es estático, eliminando la DLL. [6]
Clases de apoyo
ATL incluye muchas clases de RAII para simplificar la gestión de tipos COM. Las clases más utilizadas incluyen:
Soporte COM del compilador
Aunque formalmente no forma parte de ATL, Microsoft Visual C ++ también incluye clases C ++ RAII adicionales para simplificar la administración de tipos COM. Estas clases de soporte COM del compilador se pueden usar como reemplazo o en combinación con ATL, e incluyen:
_com_ptr_t
[11] puntero inteligente que decora el nombre de la interfaz COM con un sufijo "Ptr",_bstr_t
[12] Envoltorio BSTR,_variant_t
[13] Envoltorio VARIANT, y_com_error
[14] Envoltorio HRESULT.
Tenga en cuenta que a partir de Visual Studio 2012, las clases de soporte COM del compilador no incluyen un contenedor SAFEARRAY.
Ver también
Referencias
- ^ Grimes, Richard (1998). "ATL y COM". ATL COM (1ª ed.). Prensa Wrox. pag. 6 . ISBN 1-86100-249-1.
- ^ Grimes, Richard (1999). "Construyendo y llamando a un objeto COM usando ATL". Inicio de la programación ATL 3 COM (1ª ed.). Prensa Wrox. pag. 63 . ISBN 978-1-86100-120-7.
- ^ Williams, Mickey (2000). "Documentos activos". Visual C ++ 6 Unleashed (1ª ed.). Sams. pag. 733. ISBN 978-0-672-31241-0.
- ^ Microsoft MSDN: recomendaciones para elegir entre ATL y MFC
- ^ "Actualización de seguridad ATL" . MSDN . Microsoft. 2009-07-28 . Consultado el 19 de septiembre de 2011 .
- ^ Cambios y correcciones de ATL y MFC en 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: Clase CComPtr
- ^ Microsoft MSDN: Clase CComBSTR
- ^ Microsoft MSDN: Clase CComVariant
- ^ Microsoft MSDN: Clase CComSafeArray
- ^ Microsoft MSDN: clase _com_ptr_t
- ^ Microsoft MSDN: clase _bstr_t
- ^ Microsoft MSDN: clase _variant_t
- ^ Microsoft MSDN: clase _com_error
enlaces externos
- Documentación de referencia oficial de MSDN