Rilevamento COM+

Il servizio di rilevamento COM+ consente di creare programmi amministrativi e diagnostici personalizzati che tengono traccia dello stato e delle prestazioni dell'esecuzione di applicazioni COM+. Il rilevamento COM+ fornisce informazioni statistiche sull'uso di applicazioni COM+ e informazioni sullo stato, ad esempio se un'istanza dell'applicazione server COM+ è sospesa o è stata riciclata. Gli strumenti possono usare le informazioni di rilevamento nel monitoraggio diagnostico o a scopo di visualizzazione. Ad esempio, lo strumento di amministrazione di Servizi componenti usa il rilevamento COM+ per visualizzare lo stato delle istanze dell'applicazione COM+ nelle cartelle Applicazioni COM+ e Processi in esecuzione.

Il rilevamento COM+ calcola e aggiorna periodicamente un set di metriche di uso comune, rendendo queste informazioni disponibili per i programmi che ne hanno bisogno. È simile alla strumentazione COM+ in quanto entrambi i servizi raccolgono automaticamente i dati dalle istanze dell'applicazione COM+ e rendono questi dati disponibili per gli utenti. Tuttavia, esistono alcune differenze importanti tra questi servizi, sia nella funzionalità fornita che nell'utilizzo tipico. Nella tabella seguente vengono riepilogate queste differenze.

Strumentazione COM+ Rilevamento COM+
Dati con granularità fine. Il servizio di strumentazione COM+ notifica ai sottoscrittori registrati di singoli eventi discreti (ad esempio, metodo chiamato, oggetto eliminato) che si verificano in un'istanza dell'applicazione COM+.
Dati aggregati. Il rilevamento COM+ calcola e aggiorna periodicamente le metriche usate comunemente per lo stato e le prestazioni delle istanze dell'applicazione COM+.
I sottoscrittori di eventi calcolano in genere le metriche autonomamente, usando algoritmi e criteri ad hoc.
Le metriche vengono calcolate automaticamente dal servizio di rilevamento COM+. Tutti i consumer ottengono gli stessi dati, senza supporto per le metriche personalizzate.
Dopo la registrazione di una sottoscrizione, il consumer non riceve alcuna informazione su un'istanza dell'applicazione COM+ fino a quando non si verifica un evento.
I dati di rilevamento per tutte le istanze dell'applicazione COM+ possono essere recuperati in qualsiasi momento.
Supporta solo un meccanismo di sottoscrizione basato su eventi COM+ per i consumer.
Supporta sia un meccanismo di sottoscrizione basato su eventi COM+ che il polling su un'interfaccia server locale COM.
Esempi
Notifiche quando viene chiamato o restituito un metodo.
Tempo medio di risposta delle chiamate, numero di chiamate al metodo riuscite o non riuscite in un periodo di tempo recente, numero di oggetti attualmente in una chiamata al metodo.
Notifiche quando un oggetto viene aggiunto o ottenuto dal pool di oggetti.
Numero di oggetti nel pool, numero totale di oggetti.
Notifiche all'avvio, alla sospensione o al riciclo di un'applicazione server COM+.
Stato del processo dell'applicazione server COM+ (ad esempio, se è sospeso o riciclato).
Notifiche degli eventi di avvio, preparazione, interruzione e commit delle transazioni.
Nessun equivalente.
Notifiche dei tentativi di autenticazione a livello di chiamata al metodo riusciti e non riusciti.
Nessun equivalente.

Anche se il rilevamento COM+ è più limitato in termini di ambito dati e flessibilità per il calcolo delle metriche, le metriche fornite devono essere sufficienti per un'ampia gamma di programmi amministrativi e diagnostici. L'uso del rilevamento COM+, quando possibile, può semplificare la progettazione di questi programmi. Inoltre, l'uso del rilevamento COM+ nei sistemi di produzione può avere un impatto notevolmente inferiore sulle prestazioni, rendendolo più appropriato per gli strumenti di monitoraggio in tempo reale.

Come il rilevamento COM+ raccoglie i dati

Quando viene avviato un processo di applicazione server COM+, COM+ registra il processo con il server di rilevamento, un componente dell'applicazione di sistema. I componenti nelle applicazioni e nei servizi della libreria COM+ senza contesti di componenti (SWC) supportano anche il rilevamento. Quando un componente di libreria o un contesto SWC viene creato in un processo, COM+ registra il processo con il server di rilevamento se non è già stato registrato.

COM+ aggiorna le statistiche per un processo rilevato quando si verificano determinati eventi nel processo, ad esempio la creazione di un oggetto o il completamento di una chiamata al metodo. I dati aggiornati vengono inviati periodicamente al server di rilevamento, a quel punto diventano disponibili per i consumer. Il server di rilevamento è anche responsabile del calcolo di alcune delle metriche usate dalle funzionalità di riciclaggio e blocco delle applicazioni COM+. Questi dati sono disponibili anche per i consumer.

I dati di rilevamento sono organizzati in base al processo che ha generato i dati. I dati a livello di singole applicazioni o componenti COM+ nel processo sono disponibili anche per i consumer che necessitano di queste informazioni.

Eventi e polling

Il rilevamento COM+ supporta due meccanismi per consentire a un consumer di ottenere dati di rilevamento dal server di rilevamento, un meccanismo di sottoscrizione basato su eventi COM+ e un'interfaccia server locale COM.

I programmi che devono ricevere una notifica periodicamente con i dati di rilevamento aggiornati possono registrare una sottoscrizione per l'interfaccia di evento IComTrackingInfoEvents . Approssimativamente ogni tre secondi, il server di rilevamento chiama il metodo IComTrackingInfoEvents::OnNewTrackingInfo di ogni sottoscrittore, inviando i dati di rilevamento più recenti sotto forma di oggetto raccolta. Questo oggetto implementa l'interfaccia IComTrackingInfoCollection e i sottoscrittori possono spostarsi in questa raccolta per trovare i dati a cui sono interessati.

Per vari motivi, potrebbe avere più senso per un programma eseguire il polling del server di rilevamento per i dati. Ad esempio, uno strumento di monitoraggio potrebbe richiedere aggiornamenti molto meno frequenti rispetto a un programma che visualizza lo stato in un'interfaccia utente. Inoltre, un programma può usare solo una piccola parte dei dati di rilevamento disponibili per il sistema (ad esempio, uno strumento potrebbe monitorare solo le prestazioni delle istanze di una singola applicazione COM+). Il modello di sottoscrizione invia a ogni sottoscrittore i dati di rilevamento per tutte le applicazioni COM+ in ogni notifica ed è responsabilità del sottoscrittore trovare i dati desiderati. Infine, gli eventi COM+ sono un meccanismo di notifica degli eventi più efficace. I servizi di recapito dei messaggi affidabili non vengono forniti e non è possibile consentire a un sottoscrittore di rilevare che il server di rilevamento non è riuscito a inviarla una notifica.

Un programma che necessita di un maggiore controllo sul recupero dei dati di rilevamento può usare l'interfaccia IGetAppTrackerData del server di rilevamento.