Condividi tramite


Esempio relativo alle tecnologie del pool di oggetti

Aggiornamento: novembre 2007

In questo esempio viene illustrato come utilizzare l'attivazione JIT (Just-In-Time) e il pool di oggetti in un ambiente .NET Framework. Un'applicazione server contiene il singolo oggetto del pool, che rappresenta un unico file di log. Diverse applicazioni client creano un'istanza della classe dell'oggetto del pool ed eseguono una chiamata a tale classe per dimostrare che, se la funzionalità di attivazione JIT è attivata e la dimensione massima del pool corrisponde a un oggetto, tutte le chiamate dei client vengono instradate mediante un'unica istanza dell'oggetto. In questo modo viene creato un unico file di log in cui sono riportate informazioni sull'attività COM+ e sulle diverse chiamate dei client.

Per informazioni sull'utilizzo degli esempi, vedere i seguenti argomenti:

Per generare l'esempio utilizzando il prompt dei comandi

  1. Aprire la finestra del prompt dei comandi, quindi spostarsi in una delle sottodirectory specifiche del linguaggio della directory Technologies\ComponentServices\ObjectPooling.

  2. Dalla riga di comando digitare msbuild ObjectPoolingCS.sln o msbuild ObjectPoolingVB.sln, a seconda del linguaggio di programmazione che si desidera utilizzare.

Per generare l'esempio utilizzando Visual Studio

  1. Aprire Esplora risorse, quindi spostarsi in una delle sottodirectory specifiche del linguaggio della directory ObjectPooling.

  2. Fare doppio clic sull'icona relativa a ObjectPoolingCS.sln o ObjectPoolingVB.sln, a seconda del linguaggio di programmazione che si desidera utilizzare, per aprire il file in Visual Studio.

  3. Scegliere Build Solution dal menu Build. Gli assembly OPDemoSvr.dll e OPDemo.exe vengono generati nella directory predefinita \bin o \bin\Debug.

Per registrare e installare l'assembly nella Global Assembly Cache

  1. Spostarsi nella directory contenente l'assembly generato.

  2. Digitare regsvcs OPDemoSvr.dll dalla riga di comando per registrare l'assembly.

  3. Digitare gacutil –i OPDemoSvr.dll dalla riga di comando per installare l'assembly nella Global Assembly Cache.

Per eseguire l’esempio

  1. Aprire una finestra del prompt dei comandi o Esplora risorse, quindi spostarsi nella directory contenente il nuovo eseguibile.

  2. Scegliere lo strumento di amministrazione Component Services dal sottomenu Administrative Tools del menu All Programs.

  3. Individuare l'applicazione COM+ OPDemoSvr espandendo la struttura Component Services\Computer\Risorse del computer\Applicazioni COM+ nel riquadro sinistro della finestra di esplorazione COM+.

  4. Individuare il componente Microsoft.Samples.Technologies.ComponentServices.ObjectPooling.PooledLogFile espandendo la struttura OPDemoSvr\Componenti. Fare clic con il pulsante destro del mouse sul componente PooledLogFile, quindi scegliere Properties dal menu di scelta rapida. Fare clic sulla scheda Activation e notare che il pool di oggetti è attivato.

    Nota:

    Il componente è configurato in modo che la dimensione minima del pool sia uguale a zero e quella massima sia uguale a uno. Questo significa che in qualsiasi momento potrà essere presente al massimo un oggetto del pool, indipendentemente dal numero di oggetti per i quali è stata creata un'istanza dal codice client. Questi attributi sono impostati in modo esplicito nel codice di esempio mediante ObjectPoolingAttribute. Il timeout di 60 secondi relativo alla creazione è un valore predefinito che viene applicato perché nel codice di esempio non è richiesto in modo esplicito un valore diverso.

  5. Nel campo di modifica relativo alla stringa per la costruzione dell'oggetto è riportato il nome del file di log su disco che verrà creato dall'oggetto del pool dell'esempio. Il valore predefinito è OPSvrLogCS.txt o OPSvrLogVB.txt. È possibile modificare il nome o aggiungere informazioni relative al percorso, ad esempio C:\OPSvrLogCS.txt. Se al nome del file non vengono aggiunte informazioni relative al percorso, il file verrà creato nella directory System32 corrente.

  6. Scegliere OK per chiudere la finestra di dialogo delle proprietà del componente OPDemoServer.

  7. Avviare tre copie di OPDemo.exe da Esplora risorse o da una finestra del prompt dei comandi. Nella finestra del prompt dei comandi, ad esempio, spostarsi nella directory C:\Documents and Settings\nome utente\Documenti\Samples\Technologies\ComponentServices\ObjectPooling\VB\ObjectPooling\bin, quindi digitare opdemo.exe tre volte.

  8. In ciascuna applicazione client fare clic sul pulsante Start Writing. Nella finestra del client verrà visualizzato un asterisco intermittente che indica le voci da scrivere nel file di log specificato nella stringa per la costruzione dell'oggetto del componente OPDemoServer.

  9. Una volta avviate le operazioni di scrittura in tutte le applicazioni client, attendere alcuni secondi, quindi fare clic sul pulsante Stop Writing in ciascuna applicazione.

  10. Individuare il file di log e aprirlo con Notepad.exe o un altro editor di testo. Verrà visualizzata una sequenza di istruzioni che indicano le chiamate COM+ a IObjectControl. Nella metà dei casi, verranno visualizzati messaggi scritti da ciascuna applicazione client, identificati dal relativo ID di processo, dai quali risulta che COM+ ha coordinato le chiamate mediante tre riferimenti a un oggetto, rispetto a un unico oggetto di cui è stata creata un'istanza. Per ulteriori informazioni sull'interfaccia IObjectControl, vedere i commenti del codice di esempio e Platform SDK.

    Nota:

    Per rinominare ed eliminare il file di log, è necessario uscire da tutte le istanze dell'applicazione client e chiudere l'applicazione OPDemoSvr nello strumento di amministrazione Component Services. Per effettuare questa operazione, fare clic con il pulsante destro del mouse sull'applicazione COM+ nel riquadro sinistro della finestra di esplorazione, quindi scegliere Shut Down dal menu di scelta rapida.

Requisiti

Piattaforma: Windows 2000, Windows XP, Windows Server 2003

Versione di .NET Framework: 2.0, 1.1, 1.0

Osservazioni

In questo esempio viene utilizzata una stringa per la costruzione di un oggetto per specificare il nome del file di log ed eventualmente il relativo percorso completo. L'attivazione JIT è un servizio COM+ che consente ai client di creare e mantenere un riferimento a un oggetto per un periodo di tempo indeterminato, senza richiedere l'esistenza di un'istanza effettiva dell'oggetto. COM+ attiva un oggetto nel momento in cui un consumer esegue una chiamata mediante il riferimento all'oggetto stesso. L'attivazione può consistere nella creazione di una nuova istanza dell'oggetto oppure, se utilizzata con un pool di oggetti COM+, nel passaggio di un riferimento a un oggetto del pool al chiamante. COM+ disattiva un oggetto in base al bit di completamento nel contesto dell'oggetto. Per i componenti serviti da .NET, è possibile applicare AutoCompleteAttribute ai metodi di classe per indicare che l'oggetto può essere disattivato all'uscita dal metodo.

Nella versione C#, come indicato nello strumento di amministrazione Component Services, il componente è denominato OPDemoServerCS.PooledLogFile, mentre nella versione Visual Basic è denominato OPDemoServerVB.PooledLogFile. Per ulteriori informazioni sulle fasi di creazione e registrazione di file binari di esempio, vedere i commenti nei file di codice sorgente.

Nota:

Prima di eseguire l'esempio, è necessario utilizzare lo Strumento Global Assembly Cache (Gacutil.exe) per installare l'assembly OPDemoSvr.dll nella Global Assembly Cache. Lo strumento Gacutil.exe si trova nella directory SDK\<numero versione>\Bin.

Il pool di oggetti COM+ è un servizio che gestisce un pool di oggetti attivi, in modo che possano essere utilizzati da un client che richiede un componente configurato per il pool. Il pool può essere configurato a livello amministrativo oppure mediante ObjectPoolingAttribute. Gli attributi del pool includono la dimensione minima e massima del pool, nonché un valore di timeout relativo alla richiesta di creazione dell'oggetto.

I componenti abilitati per l'attivazione JIT e il pool di oggetti sono in grado di controllare il modo in cui vengono riutilizzati mediante l'implementazione dell'interfaccia IObjectControl. I metodi IObjectControl vengono chiamati solo da COM+ per indicare gli eventi chiave nel processo di attivazione o disattivazione degli oggetti o per determinare se l'oggetto può essere restituito al pool. In questo esempio l'oggetto IObjectControl viene implementato solo per illustrare l'interfaccia utilizzata da COM+. Per ulteriori informazioni sull'attivazione JIT e sul pool di oggetti, vedere la documentazione relativa a Platform SDK.

Vedere anche

Riferimenti

CanBePooled

Strumento Global Assembly Cache (Gacutil.exe)

ObjectPoolingAttribute

JustInTimeActivationAttribute

ServicedComponent

System.EnterpriseServices

Altre risorse

Just-in-Time Activation

Object Construction

Writing Serviced Components