Estensione della funzionalità di traccia

In questo esempio viene illustrato come estendere la funzionalità di traccia di Windows Communication Foundation (WCF) scrivendo le tracce dell'attività definite dall'utente nel codice del client e del servizio. In questo modo l'utente può creare attività di traccia e raggruppare le tracce in unità logiche di lavoro. È anche possibile correlare le attività tramite trasferimenti (all'interno dello stesso endpoint) e propagazione (attraverso diversi endpoint). In questo esempio la traccia è abilitata sia per il client che per il servizio. Per ulteriori informazioni su come abilitare la razzia nei file di configurazione del client e del servizio, vedere Traccia e registrazione dei messaggi.

Nota

La procedura di installazione e le istruzioni di compilazione per questo esempio si trovano alla fine dell'argomento.

Questo esempio è basato sull'Esempio della guida introduttiva.

Traccia e propagazione delle attività

La traccia delle attività definita dall'utente consente all'utente di creare attività di traccia personalizzate per raggruppare le tracce in unità logiche di lavoro, correlare le attività tramite trasferimenti e propagazione, e ridurre i costi della traccia WCF (ad esempio, lo spazio su disco di un file di registro).

Aggiunta di origini personalizzate

Le tracce definite dall'utente possono essere aggiunte sia al codice del client che al codice del servizio. L'aggiunta di origini di traccia ai file di configurazione del client o del servizio consente di registrare e visualizzare queste tracce personalizzate in Service Trace Viewer Tool. Nell'esempio di codice seguente viene illustrato come aggiungere un'origine di traccia definita dall'utente denominata ServiceCalculatorTraceSource al file di configurazione.

<system.diagnostics>
    <sources>
        <source name="System.ServiceModel" switchValue="Warning" propagateActivity="true">
            <listeners>
                <add type="System.Diagnostics.DefaultTraceListener" name="Default">
                    <filter type="" />
                </add>
                <add name="xml">
                    <filter type="" />
                </add>
            </listeners>
        </source>
        <source name="ServerCalculatorTraceSource" switchValue="Information,ActivityTracing">
            <listeners>
                <add type="System.Diagnostics.DefaultTraceListener" name="Default">
                    <filter type="" />
                </add>
                <add name="xml">
                    <filter type="" />
                </add>
            </listeners>
        </source>
    </sources>
    <sharedListeners>
       <add initializeData="C:\logs\ServerTraces.svclog" type="System.Diagnostics.XmlWriterTraceListener"
        name="xml" traceOutputOptions="Callstack">
            <filter type="" />
        </add>
    </sharedListeners>
    <trace autoflush="true" />
</system.diagnostics>....
....

Correlazione di attività

Per correlare direttamente le attività attraverso gli endpoint, l'attributo propagateActivity deve essere impostato su true nell'origine di traccia System.ServiceModel. Per propagare inoltre le tracce senza passare attraverso le attività WCF, è necessario disattivare la traccia dell'attività ServiceModel. Tutto ciò è illustrato nell'esempio di codice seguente.

Nota

La disattivazione dell'attività di traccia ServiceModel non equivale a disattivare il livello di traccia, indicato dalla proprietà switchValue.

<system.diagnostics>
    <sources>
      <source name="System.ServiceModel" switchValue="Warning" propagateActivity="true">

    ...

       </source>
    </sources>
</system.diagnostics>

Riduzione del costo in termini di prestazioni

La disattivazione di ActivityTracing nell'origine di traccia System.ServiceModel genera un file di traccia che contiene solo le tracce di attività definite dall'utente, senza includere le tracce di attività ServiceModel. Di conseguenza, le dimensioni del file di registro risulteranno molto più piccole. Tuttavia, si perde la possibilità per correlare le tracce di elaborazione di WCF.

Per impostare, compilare ed eseguire l'esempio

  1. Assicurarsi di aver eseguito la Procedura di installazione singola per gli esempi di Windows Communication Foundation.

  2. Per compilare l'edizione in C# o Visual Basic .NET della soluzione, seguire le istruzioni in Generazione degli esempi Windows Communication Foundation.

  3. Per eseguire l'esempio su un solo computer o tra computer diversi, seguire le istruzioni in Esecuzione degli esempi di Windows Communication Foundation.

Send comments about this topic to Microsoft.
© 2007 Microsoft Corporation. All rights reserved.