2010-06-02 10 views
5

Por la forma "tradicional" me refiero a registrar la DLL en el registro.Diferencia entre "COM" tradicional y COM + (en servicios de componentes)

Parece que hay otro método para configurarlo yendo a mmc-> Servicios de componentes-> Aplicaciones COM + y agregando el archivo .tlb.

Tengo una biblioteca COM que admite ambos métodos. Cuando se instala, se registra en el registro como un componente COM y funciona bien. Sin embargo, cuando agregué el archivo .tlb utilizando el método de Servicios de componentes, el comportamiento parece ser diferente y comienza a dar errores.

¿Sospecho que tiene algo que ver con el cálculo de referencias y la transferencia de objetos entre procesos? (Lo siento, soy realmente un novato en el área COM)

¿Alguien me puede indicar un buen recurso para aclarar mi entendimiento?

+0

¿Cuáles son algunos de los errores? – N0Alias

+0

Tengo un método 'X.Method()' que acepta otro tipo 'X', que significa algo así como' Método nulo (X otro) '. La ejecución de este método me da "No se puede convertir el sistema .__ ComObject en X" – kizzx2

Respuesta

9

COM + (Servicios de componentes) proporciona una gran cantidad de infraestructura lista para usar; por ejemplo, COM + proporciona transacciones, seguridad, agrupación de objetos y algunos otros servicios.

Cuando registra un componente COM en COM + se ejecutará "Fuera de proceso"; en este modo, se garantiza que tendrá un proxy entre su servidor COM y sus clientes.

El mejor lugar que puedo pensar para aprender más acerca de COM + es el sitio oficial de MS: http://msdn.microsoft.com/en-us/library/ms685978(VS.85).aspx

Espero que esto ayude.

+2

Si el componente COM estará fuera de proceso depende de cómo lo registre. Será fuera de proceso si selecciona "aplicación de servidor", pero estará en proceso si selecciona "aplicación de biblioteca". – sharptooth

+0

Entonces, si lo creo en el proceso, ¿no es lo mismo que registrarlo en el registro y llamar a 'CoCreateInstance'? – kizzx2

+1

Utiliza CoCreateInstance() de todos modos. Es solo que COM + intercepta la llamada y crea en el servidor fuera de proc. No tengo aplicaciones de biblioteca COM +, incluso tengo una pregunta http://stackoverflow.com/questions/1762823/whats-the-purpose-of-com-library-applications – sharptooth

3

De acuerdo con la publicación anterior.

Una cosa para agregar: en realidad, registrar la biblioteca de tipos (archivo .tlb) también es normal para COM, no solo para COM +. La biblioteca de tipos se genera automáticamente mediante el compilador IDL. Contiene una descripción de sus interfaces y objetos.

Para que pueda "importar" su componente COM en algún proyecto, y la definición de las interfaces y los objetos son visibles.

4

COM es el modelo de objeto componente que se utiliza en la máquina local pero COM + es la característica Com plus activex. significa que se puede usar de forma remota.

COM + es una evolución de Microsoft Component Object Model (COM) y Microsoft Transaction Server (MTS). DCOM: Distributed-COM. El protocolo que habilita la creación de una instancia de un objeto COM en otra computadora que utiliza el código

MTS: Microsoft Transaction Server. Cómo MS coordina una transacción en múltiples servidores.

COM + maneja muchas de las tareas de administración de recursos que previamente tenía que programar usted mismo, como asignación de hilos y seguridad. COM + también hace que sus aplicaciones sean más escalables al proporcionar agrupamiento de subprocesos, agrupación de objetos y activación de objetos just-to-time

COM + se puede utilizar para desarrollar aplicaciones distribuidas para Windows.

Si usted es programador de aplicaciones, estará escribiendo componentes e integrándolos como aplicaciones. COM + está diseñado principalmente para los desarrolladores de Microsoft Visual C++ y Microsoft Visual Basic.

Cuestiones relacionadas