Nota
O acceso a esta páxina require autorización. Pode tentar iniciar sesión ou modificar os directorios.
O acceso a esta páxina require autorización. Pode tentar modificar os directorios.
COM difiere del modelo de objetos en tiempo de ejecución de .NET de varias maneras importantes:
Los clientes de objetos COM deben administrar la duración de esos objetos; Common Language Runtime administra la duración de los objetos en su entorno.
Los clientes de objetos COM detectan si un servicio está disponible solicitando una interfaz que proporcione ese servicio y devuelva un puntero de interfaz, o no. 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 la memoria administrada por el entorno de ejecución en tiempo de ejecución de .NET. El entorno de ejecución puede mover objetos en la memoria por motivos de rendimiento y actualizar todas las referencias a los objetos que mueve. Los clientes no administrados, una vez obtenido un puntero a un objeto, se basan en el objeto para permanecer en la misma ubicación. Estos clientes no tienen ningún mecanismo para tratar con un objeto cuya ubicación no es fija.
Para superar estas diferencias, el entorno de ejecución proporciona clases contenedoras para que los clientes administrados y no administrados piensen que están llamando a objetos dentro de su entorno respectivo. Cada vez que un cliente administrado llama a un método en un objeto COM, el tiempo de ejecución crea un contenedor RCW. Los RCW abstraen las diferencias entre los mecanismos de referencia administrados y no administrados, entre otras cosas. El tiempo de ejecución también crea un encapsulador invocable COM (CCW) para invertir el procedimiento, lo que permite que un cliente COM ejecute sin problemas un método en un objeto .NET. Como se muestra en la ilustración siguiente, la perspectiva del código de llamada determina qué clase contenedora crea el runtime.
En la mayoría de los casos, el contenedor estándar RCW o CCW generado por el tiempo de ejecución proporciona la serialización adecuada para las llamadas que traspasan los límites entre COM y el runtime de .NET. Con atributos personalizados, puede ajustar opcionalmente la forma en que el tiempo de ejecución representa código administrado y no administrado.
Consulte también
- Generación de origen de ComWrappers
- Interoperabilidad COM avanzada en .NET Framework
- Contenedor al que se puede llamar en tiempo de ejecución
- Contenedor CCW (COM callable wrapper)
- Personalización de contenedores estándar en .NET Framework
- Cómo personalizar wrappers invocables en tiempo de ejecución en .NET Framework