Diagnostica di applicazioni transazionali
In questo argomento viene illustrato come usare la funzionalità di gestione e di diagnostica di WCF (Windows Communication Foundation) per risolvere i problemi di un'applicazione transazionale.
Contatori delle prestazioni
WCF fornisce un set standard di contatori delle prestazioni per misurare le prestazioni delle applicazioni transazionali. Per altre informazioni, vedere i contatori delle prestazioni.
I contatori delle prestazioni vengono definiti a tre diversi livelli: servizio, endpoint e operazione come descritto nelle tabelle seguenti.
Contatori delle prestazioni del servizio
Contatore delle prestazioni | Descrizione |
---|---|
Transazioni propagate | Numero di transazioni propagate alle operazioni in questo servizio. Questo contatore viene incrementato ogni volta che è presente una transazione nel messaggio inviato al servizio. |
Transazioni propagate al secondo | Numero di transazioni propagate alle operazioni in questo servizio ogni secondo. Questo contatore viene incrementato ogni volta che è presente una transazione nel messaggio inviato al servizio. |
Operazioni transazionali con commit eseguito | Numero di operazioni transazionali eseguite la cui transazione è stata completata e di cui è stato eseguito il commit del risultato nel servizio. Per le attività completate nell'ambito di tali operazioni viene eseguito il commit completo. Le risorse vengono aggiornate in base alle attività completate nell'operazione. |
Operazioni transazionali con commit eseguito al secondo | Numero di operazioni transazionali eseguite la cui transazione è stata completata e di cui è stato eseguito il commit del risultato nel servizio ogni secondo. Per le attività completate nell'ambito di tali operazioni viene eseguito il commit completo. Le risorse vengono aggiornate in base alle attività completate nell'operazione. |
Operazioni transazionali interrotte | Numero di operazioni transazionali eseguite la cui transazione è stata completata con il risultato annullato nel servizio. Per le attività completate nell'ambito di tali operazioni viene eseguito il rollback. Viene ripristinato lo stato precedente delle risorse. |
Operazioni transazionali interrotte ogni secondo | Numero di operazioni transazionali eseguite la cui transazione è stata completata con il risultato annullato nel servizio ogni secondo. Per le attività completate nell'ambito di tali operazioni viene eseguito il rollback. Viene ripristinato lo stato precedente delle risorse. |
Operazioni transazionali incerte | Numero di operazioni transazionali eseguite la cui transazione è stata completata con un risultato in dubbio nel servizio. Le attività completate con un risultato in dubbio sono in stato indeterminato. Le risorse vengono mantenute con risultato in sospeso. |
Operazioni transazionali in dubbio al secondo | Numero di operazioni transazionali eseguite la cui transazione è stata completata con un risultato in dubbio nel servizio ogni secondo. Le attività completate con un risultato in dubbio sono in stato indeterminato. Le risorse vengono mantenute con risultato in sospeso. |
Contatori delle prestazioni dell'endpoint
Contatore delle prestazioni | Descrizione |
---|---|
Transazioni propagate | Numero di transazioni propagate alle operazioni in questo endpoint. Questo contatore viene incrementato ogni volta che è presente una transazione nel messaggio inviato all'endpoint. |
Transazioni propagate al secondo | Numero di transazioni propagate alle operazioni in questo endpoint ogni secondo. Questo contatore viene incrementato ogni volta che è presente una transazione nel messaggio inviato all'endpoint. |
Contatori delle prestazioni per l'operazione
Contatore delle prestazioni | Descrizione |
---|---|
Transazioni propagate | Numero di transazioni propagate alle operazioni in questo endpoint. Questo contatore viene incrementato ogni volta che è presente una transazione nel messaggio inviato all'endpoint. |
Transazioni propagate al secondo | Numero di transazioni propagate alle operazioni in questo endpoint ogni secondo. Questo contatore viene incrementato ogni volta che è presente una transazione nel messaggio inviato all'endpoint. |
Strumentazione gestione Windows (WMI)
WCF espone dati di ispezione di un servizio in fase di esecuzione tramite un provider WMI (Windows Communication Foundation) di WCF. Per altre informazioni sull'accesso ai dati WMI, vedere Uso della strumentazione gestione Windows per la diagnostica.
Un numero di proprietà WMI in sola lettura indica le impostazioni della transazione applicate per un servizio. Nella tabelle seguenti vengono elencate tutte queste impostazioni.
In un servizio, ServiceBehaviorAttribute
dispone delle proprietà seguenti.
Nome | Tipo | Descrizione |
---|---|---|
ReleaseServiceInstanceOnTransactionComplete | Booleano | Specifica se l'oggetto servizio viene riciclato al completamento della transazione corrente. |
TransactionAutoCompleteOnSessionClose | Booleano | Specifica se alla chiusura della sessione corrente vengono completate le transazioni in sospeso. |
TransactionIsolationLevel | Stringa che contiene un valore valido dell'enumerazione IsolationLevel. | Specifica il livello di isolamento della transazione supportato dal servizio. |
TransactionTimeout | DateTime | Specifica il periodo di tempo entro il quale deve essere completata una transazione. |
ServiceTimeoutsBehavior
dispone della proprietà seguente.
Nome | Tipo | Descrizione |
---|---|---|
TransactionTimeout | DateTime | Specifica il periodo di tempo entro il quale deve essere completata una transazione. |
In un'associazione, TransactionFlowBindingElement
dispone delle proprietà seguenti.
Nome | Tipo | Descrizione |
---|---|---|
TransactionProtocol | Stringa che contiene un valore valido del tipo TransactionProtocol. | Specifica il protocollo di transazione da utilizzare per la propagazione di una transazione. |
TransactionFlow | Booleano | Specifica se è attivato il flusso delle transazioni in ingresso. |
In un'operazione, OperationBehaviorAttribute
dispone delle proprietà seguenti:
Nome | Tipo | Descrizione |
---|---|---|
TransactionAutoComplete | Booleano | Specifica se eseguire automaticamente il commit della transazione corrente se non si verifica alcuna eccezione non gestita. |
TransactionScopeRequired | Booleano | Specifica se l'operazione richiede una transazione. |
In un'operazione, TransactionFlowAttribute
dispone delle proprietà seguenti.
Nome | Tipo | Descrizione |
---|---|---|
TransactionFlowOption | Stringa che contiene un valore valido dell'enumerazione TransactionFlowOption. | Specifica in che misura è richiesto il flusso delle transazioni. |
Tracciabilità
Le tracce consentono di controllare e analizzare errori nelle applicazioni transazionali. È possibile attivare la traccia nei modi seguenti:
Traccia WCF standard
Questo tipo di traccia è equivalente alla traccia di qualsiasi applicazione WCF. Per altre informazioni, vedere Configuring Tracing.
Traccia WS-AtomicTransaction
È possibile attivare la traccia WS-AtomicTransaction tramite l'utilità di configurazione WS-AtomicTransaction (wsatConfig.exe). Tale traccia consente di comprendere lo stato delle transazioni e di conoscere i partecipanti all'interno di un sistema. Per attivare anche la traccia del modello di servizi interna, è possibile impostare la chiave del Registro di sistema
HKLM\SOFTWARE\Microsoft\WSAT\3.0\ServiceModelDiagnosticTracing
su un valore valido dell'enumerazione SourceLevels. È possibile attivare la registrazione messaggi nella stessa modalità usata per altre applicazioni WCF.Traccia
System.Transactions
Quando si utilizza il protocollo OleTransactions, i messaggi di protocollo non possono essere tracciati. Il supporto di traccia fornito dall'infrastruttura System.Transactions, che utilizza OleTransactions, consente agli utenti di visualizzare gli eventi che si sono verificati nelle transazioni. Per attivare la traccia per un'applicazione System.Transactions, includere il codice seguente nel file di configurazione
App.config
.<configuration> <system.diagnostics> <sources> <source name="System.Transactions" switchValue="Verbose, ActivityTracing"> <listeners> <add name="Text" type="System.Diagnostics.XmlWriterTraceListener" initializeData="SysTx.log" traceOutputOptions="Callstack" /> </listeners> </source> </sources> <trace autoflush="true" indentsize="4"> </trace> </system.diagnostics> </configuration>
In tal modo si attiva inoltre la traccia WCF, poiché anche WCF usa l'infrastruttura System.Transactions.