Wrapper chamável em tempo de execução (rcw)

Definição - o que significa Runtime Callable Wrapper (RCW)?

Um RCW (callable wrapper) em tempo de execução é um objeto de wrapper gerado pelo common language runtime (CLR) para encapsular um objeto de modelo de objeto de componente (COM) para expô-lo como um assembly .NET.

Um RCW atua como interface primária para um cliente .NET que precisa interagir com um componente COM, empacotando as chamadas entre eles. Ele forma um invólucro de metadados que expõe os componentes COM ao CLR. Ele ajuda os contêineres ActiveX existentes a hospedar controles .NET e ajuda os aplicativos .NET Windows Forms a hospedar contêineres ActiveX. RCW também é útil em sistemas de negócios que foram construídos usando componentes COM, permitindo a integração de seu código legado antigo com componentes .NET recém-desenvolvidos sem afetar a produtividade.

Definirtec explica Runtime Callable Wrapper (RCW)

Um componente COM é um objeto binário reutilizável que fornece seus serviços publicando as interfaces por meio das quais ocorre a comunicação com seus clientes. A definição das interfaces ou contratos binários do componente COM é especificada na biblioteca de tipos das interfaces. Ao contrário do COM, a comunicação entre objetos .NET é baseada em objetos, e não em interface. O RCW atua como uma ponte entre os componentes COM e os objetos .NET para rotear as operações e mediar entre os dois por empacotamento.

Um RCW gerencia o tempo de vida de seu objeto COM encapsulado. Ao passar a referência entre dois domínios de aplicativo ou apartamentos, o proxy do objeto será usado. A criação do RCW é baseada nos metadados derivados da biblioteca de tipos. Sua destruição ocorre durante a coleta de lixo. O empacotamento por RCW inclui a conversão de argumentos de método e valores de retorno de forma que sejam representados de uma maneira que possam ser lidos tanto pelo cliente quanto pelo servidor. Um exemplo de empacotamento pode ser a conversão que ocorre para um argumento de string que precisa ser passado como tipo BSTR para um componente COM, enquanto deve ser do tipo string em um cliente .NET.

O RCW pode ser criado usando o Visual Studio, que usa um recurso de geração automática de código, tornando o processo simples e transparente para o usuário. Como alternativa, o conjunto RCW contém metadados para os tipos definidos na biblioteca de tipos de um componente que podem ser criados usando a ferramenta tlbimp.exe da linha de comando.

Esta definição foi escrita no contexto do .NET