Muestra del modelo de objetos componentes (COM)
COM es una tecnología muy poderosa para componizar el software basado en el diseño orientado a objetos. Consulte la documentación aquí para más detalles.
Uno de los principales inconvenientes de COM es la calderera inicial requerida para configurar los componentes COM. ATL es un conjunto de bibliotecas que ayudan a construir la caldera, pero viene con su propia complejidad.
Esta muestra aquí proporciona el código esquelético que haría el pesado de la configuración y el registro de COM para que los desarrolladores puedan centrarse solo en la lógica comercial en lugar de preocuparse por la infraestructura. No usa ATL . En su lugar, utiliza un código C ++ simple simple para que los desarrolladores puedan comprender y depurar el esqueleto subyacente si es necesario.
Términos utilizados
- Un servidor COM es un objeto que proporciona la lógica comercial.
- Un cliente COM es el código que accede al servidor COM a través de cualquier interfaz expuesta por el servidor COM.
- La interacción entre el cliente COM y el servidor COM ocurre a través del mariscal y requiere una DLL proxy-stub.
- Consulte la documentación aquí para más detalles.
Este proyecto
Aquí está el resumen sobre los diversos directorios de esta muestra.
- ComsampleProxy : ProxyStub Dll. Para agregar una nueva interfaz, simplemente agregue un nuevo archivo IDL al proyecto.
- COMAMPleServer : admite para activar el servidor COM en proceso en proceso y fuera de proceso (en un sistema operativo proporcionado Dll Subrogate, a saber, dllhost.exe).
- COMAMPleService : admite para activar el servidor COM en un servicio LocalSystem.
- Comsampleclient : un cliente COM de muestra que llama y prueba los servidores COM mencionados anteriormente.
Creación y registro de un nuevo componente COM
Crear un nuevo componente COM es súper fácil con este modelo.
- Agregue su interfaz :
- Agregue un nuevo archivo IDL con su interfaz al proyecto ComsampleProxy. Consulte el archivo de muestra /comsampleProxy/icomTest.idl.
- Implemente su clase COM :
- Para activación en proceso o fuera de proceso en activación sustituta : agregue su implementación de clase al proyecto COMAMPLEPERSE. Ver ejemplo COMAMPLEERVER/CCOMSERvertest.cpp. Ahora vaya a commampleerver/dll.cpp y simplemente agregue sus entradas de clase a "g_classes".
- Para la activación fuera del proceso en un servicio de LocalSystem : Agregue su implementación Agregar su clase al proyecto COMAMPLESVICE. Ver ejemplo COMAMPLESVICE/CCOMSERVICETEST.CPP. Ahora vaya a commampleService/main.cpp y simplemente agregue sus entradas de clase a "g_classes".
- Registre sus componentes COM :
- Copie ComsampleProxy.dll en su máquina de destino. A partir de un aviso elevado, ejecute: regsvr32 comsampleproxy.dll .
- Para activación en proceso o fuera de proceso en activación sustituta : copiar commampleserver.dll en su máquina de destino. A partir de un aviso elevado, ejecute: regsvr32 commampleserver.dll .
- Para la activación fuera del proceso en un servicio de LocalSystem : Copie COMAMPLESVICE.exe en su máquina de destino. Desde un símbolo del sistema elevado, ejecute: commampleService.exe /Registerserver .
¡Eso es todo!
Marcas registradas
Este proyecto puede contener marcas comerciales o logotipos para proyectos, productos o servicios. El uso autorizado de marcas o logotipos de Microsoft está sujeto y debe seguir las pautas de marca y marca de marca de Microsoft. El uso de marcas registradas de Microsoft o logotipos en versiones modificadas de este proyecto no debe causar confusión o implicar el patrocinio de Microsoft. Cualquier uso de marcas comerciales o logotipos de terceros está sujeto a las políticas de esas partes de terceros.