Contenedor invocable en tiempo de ejecución (rcw)

Definición: ¿Qué significa Runtime Callable Wrapper (RCW)?

Un contenedor invocable en tiempo de ejecución (RCW) es un objeto contenedor generado por Common Language Runtime (CLR) para encapsular un objeto de modelo de objeto componente (COM) para exponerlo como un ensamblado .NET.

Un RCW actúa como interfaz principal para un cliente .NET que necesita interactuar con un componente COM ordenando las llamadas entre ellos. Forma un contenedor de metadatos que expone los componentes COM al CLR. Ayuda a los contenedores ActiveX existentes a alojar controles .NET y ayuda a las aplicaciones .NET Windows Forms a alojar contenedores ActiveX. RCW también es útil en sistemas comerciales que se han creado con componentes COM, lo que permite la integración de su antiguo código heredado con componentes .NET recientemente desarrollados sin afectar la productividad.

Techinfo explica Runtime Callable Wrapper (RCW)

Un componente COM es un objeto binario reutilizable que brinda sus servicios publicando las interfaces a través de las cuales se produce la comunicación con sus clientes. La definición de las interfaces o contratos binarios del componente COM se especifica en la biblioteca de tipos de interfaces. A diferencia de COM, la comunicación entre objetos .NET se basa en objetos en lugar de en interfaces. RCW actúa como un puente entre los componentes COM y los objetos .NET para enrutar las operaciones y mediar entre los dos mediante la clasificación.

Un RCW administra la vida útil de su objeto COM encapsulado. Al pasar la referencia entre dos dominios de aplicación o apartamentos, se utilizará el proxy del objeto. La creación de RCW se basa en los metadatos derivados de la biblioteca de tipos. Su destrucción ocurre durante la recolección de basura. Marshaling por RCW incluye la conversión de argumentos de método y valores de retorno de manera que se representen de manera que puedan ser leídos tanto por el cliente como por el servidor. Un ejemplo de cálculo de referencias puede ser la conversión que tiene lugar para un argumento de cadena que debe pasarse como tipo BSTR para un componente COM, mientras que tiene que ser de tipo cadena en un cliente .NET.

RCW se puede crear utilizando Visual Studio, que utiliza una función de generación automática de código, lo que hace que el proceso sea simple y transparente para el usuario. Alternativamente, el ensamblaje RCW contiene metadatos para los tipos definidos en la biblioteca de tipos de un componente que se puede crear usando la herramienta tlbimp.exe desde la línea de comando.

Esta definición se escribió en el contexto de .NET