Share via


COM Callable Wrapper

Quando un client COM chiama un oggetto .NET, Common Language Runtime crea l'oggetto gestito e un COM Callable Wrapper (CCW) per l'oggetto. Incapaci di fare direttamente riferimento a un oggetto .NET, i client COM utilizzano il CCW come un proxy per l'oggetto gestito.

Il runtime crea esattamente un CCW per ciascun oggetto gestito, indipendentemente dal numero di client COM che ne richiedono i servizi. Come illustrato nella figura che segue, più client COM possono mantenere un riferimento allo stesso CCW che espone l'interfaccia INew. Il CCW mantiene a sua volta un solo riferimento all'oggetto gestito che implementa l'interfaccia ed è sottoposto alla procedura di Garbage Collection. Sia i client COM che i client .NET possono utilizzare lo stesso oggetto gestito contemporaneamente.

Accesso a oggetti .NET tramite COM Callable Wrapper

COM Callable Wrapper

I COM Callable Wrapper sono invisibili alle altre classi in esecuzione in .NET Framework. Il loro scopo principale è effettuare il marshalling dei dati trasferiti tra il codice gestito e quello non gestito. I CCW gestiscono anche l'identità e la durata degli oggetti gestiti di cui effettuano il wrapping.

Identità dell'oggetto

Il runtime alloca per l'oggetto .NET memoria attinta dall'heap sottoposto a Garbage Collection. In tal modo si consente al runtime di spostare l'oggetto in memoria a seconda delle esigenze. Al contrario, il runtime alloca per il CCW memoria attinta da un heap non soggetto a Garbage Collection, consentendo così ai client COM di fare riferimento al wrapper direttamente.

Durata dell'oggetto

Diversamente dal client .NET di cui effettua il wrapping, il CCW è destinatario di riferimenti conteggiati in modo tradizionale (COM). Quando il conteggio dei riferimenti al CCW raggiunge lo zero, il wrapper rilascia il proprio riferimento all'oggetto gestito. Gli oggetti gestiti senza più riferimenti vengono rilasciati durante la successiva procedura di Garbage Collection.

Vedere anche

Riferimenti

COM Callable Wrapper

Concetti

Wrapper COM

Simulazione di interfacce COM

Runtime Callable Wrapper

Esposizione di componenti .NET Framework a COM