Contenedores COM

COM se diferencia del modelo de objetos de .NET Framework en varios aspectos importantes:

  • Los clientes de objetos COM deben administrar esos objetos mientras existan; Common Language Runtime administra la duración de objetos en su entorno.

  • Los clientes de objetos COM detectan si un servicio está disponible solicitando una interfaz que proporciona ese servicio y obteniendo o no un puntero de interfaz. Los clientes de objetos .NET pueden obtener una descripción de la funcionalidad de un objeto mediante la reflexión.

  • Los objetos .NET residen en memoria administrada por el entorno de ejecución .NET Framework. El entorno de ejecución puede mover los objetos de la memoria por razones de rendimiento y actualizar todas las referencias a los objetos que mueve. Los clientes no administrados, una vez que han obtenido un puntero a un objeto, dependen del objeto para permanecer en la misma ubicación. Estos clientes no tienen ningún mecanismo para tratar con objetos que no tengan una ubicación fija.

Para superar estas diferencias, el motor en tiempo de ejecución proporciona clases contenedoras para que tanto los clientes administrados como los no administrados crean que están llamando a objetos de su respectivo entorno. Cuando un cliente administrado llama a un método en un objeto COM, el motor en tiempo de ejecución crea un contenedor invocable en tiempo de ejecución (RCW). Entre otras cosas, los RCW analizan las diferencias entre los mecanismos de referencia administrados y no administrados. El motor en tiempo de ejecución crea también un contenedor COM invocable (CCW) para invertir el proceso, de modo que un cliente COM pueda llamar sin problemas a un método en un objeto .NET. Como se muestra en la siguiente ilustración, la perspectiva del código de llamada determina la clase contenedora que crea el motor en tiempo de ejecución.

Información general sobre los contenedores COM

Información general sobre los contenedores COM

En la mayoría de los casos, los RCW o CCW estándar que genera el motor en tiempo de ejecución proporcionan un cálculo de referencias adecuado para las llamadas que traspasan los límites entre COM y .NET Framework. Mediante la utilización de atributos personalizados se puede ajustar, si se desea, la forma en que el motor en tiempo de ejecución representa los códigos administrado y no administrado.

Vea también

Tareas

Cómo: Personalizar contenedores RCW

Conceptos

Contenedor al que se puede llamar en tiempo de ejecución

Contenedor COM al que se puede llamar

Personalizar contenedores estándar

Otros recursos

Interoperabilidad COM avanzada