Contesti COM+

Per i componenti configurati in esecuzione all'interno di applicazioni COM+, i contesti sono la base su cui vengono forniti i servizi COM+. In COM+, un contesto viene definito come set di proprietà di runtime associate a uno o più oggetti COM utilizzati per fornire servizi per tali oggetti.

In COM+, ogni oggetto COM è associato esattamente a un contesto durante l'esecuzione (ovvero tra l'attivazione e la disattivazione) e ogni contesto risiede all'interno di un solo appartamento COM. Più oggetti possono essere eseguiti nello stesso contesto e più contesti possono risiedere all'interno dello stesso apartment. Inizializzato quando un oggetto viene attivato, le proprietà del contesto, ad esempio le proprietà del contesto di sicurezza, rappresentano le esigenze di runtime di un oggetto.

Nota

Per i componenti non configurati che non usano servizi COM+, il contesto è, per la maggior parte, ignorato.

 

COM+ usa le proprietà di contesto come base per fornire servizi di runtime. Queste proprietà contengono lo stato che determina il modo in cui l'ambiente di esecuzione esegue i servizi per gli oggetti all'interno del contesto. In alcuni casi, è possibile interagire direttamente con le proprietà di contesto di un oggetto per indicare uno stato rilevante per un servizio fornito per l'oggetto. Ad esempio, è necessario eseguire questa operazione quando un oggetto che partecipa a una transazione automatica voti sul risultato della transazione.

Per una descrizione dettagliata della base COM di questi concetti, vedere Processi, thread e appartamenti.

Interazione a livello di codice con le proprietà del contesto

Ogni contesto ha un oggetto ObjectContext associato che tiene traccia delle relative proprietà. È possibile accedere a ObjectContext chiamando la funzione GetObjectContext. Dopo aver eseguito l'accesso a ObjectContext, è possibile chiamare i metodi nell'interfaccia IObjectContext esposta per modificare le proprietà del contesto.

Ad esempio, la chiamata a IObjectContext::SetComplete ha l'effetto di impostare il bit di coerenza della transazione su "coerente" e l'attivazione JIT eseguita bit su "done" sul contesto associato all'oggetto. "Coerente" segnala a COM+ che si vota per eseguire il commit della transazione e "fatto" indica che l'oggetto è pronto per essere disattivato al termine del metodo.

Oltre a IObjectContext, altre interfacce specializzate che forniscono l'accesso alle proprietà del contesto sono IObjectContextInfo, IContextState e IObjectContextActivity. In un certo modo, ISecurityCallContext accede anche alle proprietà del contesto. È possibile usare IGetSecurityCallContext::GetSecurityCallContext per ottenere ISecurityCallContext.

Informazioni sull'attivazione e l'intercettazione

In genere, è necessario considerare il contesto solo nella misura in cui rappresenta una serie di proprietà, alcune delle quali è possibile impostare o ottenere, usate per fornire servizi COM+ per i componenti. In alcune circostanze, tuttavia, potrebbe essere necessario considerare i due facet correlati seguenti dei contesti in modo più dettagliato:

  • Attivazione del contesto o inizializzazione di un oggetto in un contesto appropriato.
  • Intercettazione o operazioni eseguite da COM+ sulle chiamate attraverso un limite di contesto.

Relazione ai wrapper di contesto MTS

I contesti sostituiscono in modo efficace i wrapper di contesto MTS. Lo scopo che hanno servito, fornendo servizi automatici intercettare le richieste di creazione, è ora una funzionalità integrata di COM+. Di conseguenza, non è più necessario usare la funzione Cassaforte Ref. In MTS, Cassaforte Ref è stato usato per ottenere un riferimento all'oggetto che potrebbe essere passato all'esterno del wrapper di contesto. In COM+, questo non è necessario; i riferimenti a oggetti normali (questo puntatore) funzionano.