Compartilhar via


COM Callable Wrapper

Quando um cliente COM chama um.NET object, o common language runtime cria o objeto gerenciado e um COM callable wrapper (CCW) para o objeto. Não é possível referenciar um.NET object diretamente, COM clientes utilizar a CCW como um proxy para o objeto gerenciado.

O runtime cria exatamente um CCW para um objeto gerenciado, independentemente do número de clientes COM, solicitando seus serviços. Como mostra a ilustração a seguir, vários clientes do COM podem manter uma referência a CCW que expõe a interface INew. CCW, por sua vez, contém uma única referência para o objeto gerenciado que implementa a interface e é o lixo coletado. Tanto o COM e.NET clientes podem fazer solicitações no mesmo objeto gerenciado simultaneamente.

Acessando.NET objetos por meio do invólucro

CCW (COM callable wrapper)

Callable wrappers de COM são invisíveis para outras classes em execução dentro do.NET Framework. Sua finalidade principal é empacotar as chamadas entre código gerenciado e; No entanto, CCWs também gerenciam a identidade de objeto e o tempo de vida do objeto dos objetos gerenciados que eles dispor.

Identidade do objeto

O runtime aloca memória para o.NET object da pilha lixo coletado, que permite que o tempo de execução mover o objeto na memória conforme necessário. Em contraste, o runtime aloca memória para o CCW de uma pilha de noncollected, tornando possível para os clientes COM o wrapper de referência diretamente.

Vida útil do objeto

Ao contrário do.Cliente NET encapsula, o CCW é referência contado de maneira tradicional de COM. Quando a contagem de referência para o CCW chega a zero, o wrapper lança sua referência no objeto gerenciado. Um objeto gerenciado e sem referências restantes é coletado durante o próximo ciclo de coleta de lixo.

Consulte também

Referência

COM Callable Wrapper

Conceitos

Wrappers COM

Simulando Interfaces de COM

Runtime Callable Wrapper

Expondo.NET Framework para COM