c++ - MFC vs ATL para ActiveX
(3)
Para el desarrollo de ActiveX, ¿qué debo usar? MFC o ATL?
En Microsoft Documents dice que podemos usar MFC para construir controles ActiveX. Pero cuando estaba buscando en Google, vi a algunas personas mencionar que ATL es bueno para el trabajo. Esto es lo que obtuve de Wikipedia que parece confirmar ese argumento.
ATL, por otro lado, es una alternativa más liviana en situaciones donde las partes de la interfaz gráfica de usuario de MFC no son necesarias.
¿Qué debería usar? Si puedo usar ambos, ¿cuáles son los pros y los contras de usarlos?
¡ATL está aquí, mi número uno!
Es mucho más flexible en el diseño de la interfaz y cómo el manejo de objetos COM es extremadamente ajustable.
ATL también permite la construcción sencilla de interfaces duales. MFC tiene una implementación de IDispatch sencilla.
Incluso en mi aplicación MFC utilizo internamente solo ATL para todas las partes COM.
Si bien es posible construir componentes ActiveX utilizando MFC, ATL fue diseñado como una alternativa más ligera y eficiente de bajo costo. Además, también puede usar WTL en la parte superior de ATL para la parte de GUI.
Yo sugeriría usar ATL (y WTL) si desea un componente ActiveX de bajo costo.
Use ATL. He estado desarrollando en MFC por más de 20 años. Para la gran mayoría de los usos, ATL es la mejor opción porque es más liviana y más simple de entender, aunque ambos tienen una curva de aprendizaje abrupta.
La única razón por la que elegiría MFC sobre ATL para su uso sería:
1) Tengo un control ActiveX / windows muy complicado que estoy escribiendo y tiene sentido escribir la parte de control de Windows en MFC y, por lo tanto, tiene sentido utilizar la interfaz COM del control en MFC. Sin embargo, para objetos suplementarios (digamos una propiedad que devuelve un Objeto), usaría ATL a menos que ellos también fueran un control de ventanas muy involucrado.
2) Tengo que usar OLE (vinculación e incrustación de objetos) para un tipo de documento y es más fácil usar el marco integrado de MFC para eso.
He estado trabajando en el mismo proyecto de MFC durante más de 20 años, un programa de Windows muy complicado. La mayoría de los aspectos del programa están expuestos por COM. Tenemos una mezcla de COM de MFC COM y ATL. Cuando comencé por primera vez, y antes de que ATL ganara tracción, normalmente implementaba los objetos COM en MFC. Ahora, a menos que algo se ajuste a las dos razones anteriores, uso ATL.
Pero, es solo una opinión.