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
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