Condividi tramite


Intercettazione di chiamate tra contesti

Quando un oggetto viene attivato in un determinato contesto, le chiamate successive a o da esso, all'interno del contesto, vengono gestite in modo diverso rispetto alle chiamate attraverso il limite del contesto. Le chiamate attraverso il limite del contesto vengono gestite con proxy leggeri. Questi proxy gestiscono qualsiasi aggregazione necessaria per regolare l'ambiente di runtime da uno che supporta il chiamante a uno che supporta il chiamato. Questo processo è noto come intercettazione.

L'intercettazione di chiamate tra contesti è necessaria perché gli oggetti in contesti diversi hanno requisiti di runtime diversi, questo è esattamente il motivo dei contesti. COM+ intercetta tutti i riferimenti a oggetti passati come parametri del metodo e li converte automaticamente in proxy in modo che siano utilizzabili nel nuovo contesto.

Se si condividono riferimenti a oggetti attraverso i limiti del contesto con altri mezzi, ad esempio nelle variabili globali, è consigliabile usare sempre CoMarshalInterface e CoUnmarshalInterface. Queste funzioni possono convertire un riferimento a un oggetto in un proxy utilizzabile in un contesto diverso. Non condividere mai un riferimento a un oggetto non elaborato attraverso i limiti del contesto.

Il comportamento delle chiamate nel contesto può avere conseguenze indesiderate nel caso di oggetti che espongono interfacce che non possono essere sottoposti a marshalling. In questa circostanza, è probabile che si voglia insistere sul fatto che l'oggetto che non può essere sottoposto a marshalling venga attivato solo nel contesto del chiamante e mai nel proprio contesto. A tale scopo, selezionare l'opzione Deve essere attivata nel contesto del chiamante nella scheda Attivazione della pagina Proprietà componente. (Vedere Applicazione dell'attivazione nel contesto del chiamante per istruzioni dettagliate.

Attivazione del contesto