Aktivita
Toto téma popisuje trasování aktivit v modelu trasování WCF (Windows Communication Foundation). Aktivity jsou jednotky zpracování, které uživateli pomáhají zúžit rozsah selhání. Chyby, ke kterým dochází ve stejné aktivitě, přímo souvisejí. Například operace selže, protože dešifrování zpráv selhalo. Trasování selhání operace i dešifrování zpráv se zobrazí ve stejné aktivitě a zobrazuje přímou korelaci mezi chybou dešifrování a chybou požadavku.
Konfigurace trasování aktivit
WCF poskytuje předdefinované aktivity pro zpracování aplikací (viz seznam aktivit). Aktivity můžete také definovat programově, aby seskupily trasování uživatelů. Další informace naleznete v tématu Generování trasování uživatelského kódu.
Pokud chcete generovat trasování aktivit za běhu, použijte ActivityTracing
nastavení pro System.ServiceModel
zdroj trasování nebo jiné zdroje trasování WCF nebo vlastní trasování, jak ukazuje následující konfigurační kód.
<source name="System.ServiceModel" switchValue="Verbose,ActivityTracing">
Další informace o používaném elementu konfigurace a atributech najdete v tématu Konfigurace trasování .
Zobrazení aktivit
Aktivity a jejich nástroje můžete zobrazit v nástroji Service Trace Viewer (SvcTraceViewer.exe). Pokud je povolená funkce ActivityTracing, tento nástroj vezme trasování a seřadí je na základě aktivity. Můžete také zobrazit přenosy trasování. Přenos trasování označuje, jak spolu různé aktivity vzájemně souvisejí. Vidíte, že konkrétní aktivita způsobila spuštění jiné aktivity. Například žádost o zprávu zahájila bezpečnostní metodu handshake pro získání tokenu zabezpečené konverzace.
Korelace aktivit v Prohlížeči trasování služeb
Nástroj Service Trace Viewer poskytuje dvě zobrazení aktivit:
Zobrazení seznamu , ve kterém se ID aktivity používá k přímé korelaci trasování napříč procesy. Trasování z různých procesů, například klienta a služby, ale se stejným ID aktivity jsou seskupené ve stejné aktivitě. Proto se chyba, ke které dochází ve službě, která pak způsobí chybu v klientovi, zobrazí v nástroji ve stejném zobrazení aktivity.
Zobrazení grafu , kde se aktivity seskupují podle procesů V tomto zobrazení má klient a služba se stejným ID aktivity trasování v různých aktivitách. Pokud chcete korelovat aktivity se stejným ID aktivity v různých procesech, nástroj zobrazuje toky zpráv napříč souvisejícími aktivitami.
Další informace a zobrazení grafického zobrazení nástroje Service Trace Viewer naleznete v tématu Nástroj Sledování trasování služby (SvcTraceViewer.exe) a Použití prohlížeče trasování služby pro zobrazení korelovaných trasování a řešení potíží.
Definování rozsahu aktivity
Aktivita je definována v době návrhu a označuje logickou jednotku práce. Generované trasování se stejným identifikátorem aktivity přímo souvisí, jsou součástí stejné aktivity. Vzhledem k tomu, že aktivita může překračovat hranice koncových bodů (požadavek), jsou definovány dva obory aktivity.
Global
rozsah na aplikaci. V tomto oboru se aktivita identifikuje 128bitovým globálně jedinečným identifikátorem aktivity gAId. Identifikátor gAid se šíří napříč koncovými body.Local
rozsah na koncový bod. V tomto oboru je aktivita identifikována jeho gAId spolu s názvem zdroje trasování, který generuje trasování aktivit a ID procesu. Tento triplet představuje ID místní aktivity lAId. LAId slouží k definování (místních) hranic aktivity.
Schéma trasování
Trasování je možné generovat pomocí libovolného schématu a napříč platformami Microsoftu. "e2e" (pro "End to End") je běžně používané schéma. Toto schéma zahrnuje 128bitový identifikátor (gAId), název zdroje trasování a ID procesu. Ve spravovaném kódu XmlWriterTraceListener generuje trasování ve schématu E2E.
Vývojáři můžou nastavit AID, která se vygeneruje trasováním, nastavením ActivityId vlastnosti s identifikátorem GUID v místním úložišti vlákna (TLS). Následující příklad ukazuje to.
// set the current Activity ID to a new GUID.
CorrelationManager.ActivityId = Guid.NewGuid();
Nastavení gAId v protokolu TLS bude zřejmé, když se trasování vygeneruje pomocí zdroje trasování, jak je znázorněno v následujícím příkladu.
TraceSource traceSource = new TraceSource("myTraceSource");
traceSource.TraceEvent(TraceEventType.Warning, eventId, "Information");
Vygenerované trasování bude obsahovat id gAId aktuálně v protokolu TLS, název zdroje trasování předaný jako parametr konstruktoru zdroje trasování a ID aktuálního procesu.
Životnost aktivity
V nejtužších termínech spustí důkaz o aktivitě při prvním použití ID aktivity v generovaném trasování a ukončí čas posledního použití v generovaném trasování. Předdefinovaná sada typů trasování je poskytována System.Diagnostics, včetně spuštění a zastavení, explicitně označit hranice životnosti aktivity.
Začátek: Označuje začátek aktivity. Trasování Start poskytuje záznam o zahájení nového milníku zpracování. Obsahuje nové ID aktivity pro daný zdroj trasování v daném procesu, s výjimkou případů, kdy se ID aktivity rozšíří mezi koncové body, v takovém případě vidíme jeden start na koncový bod. Mezi příklady spuštění nové aktivity patří vytvoření nového vlákna pro zpracování nebo zadání nové veřejné metody.
Stop: Označuje konec aktivity. Trasování Stop poskytuje záznam o ukončení stávajícího milníku zpracování. Obsahuje existující ID aktivity pro daný zdroj trasování v daném procesu, s výjimkou případů, kdy se ID aktivity rozšíří mezi koncové body, v takovém případě vidíme jednu stopu na koncový bod. Mezi příklady zastavení aktivity patří ukončení vlákna zpracování nebo ukončení metody, jejíž začátek byl označen trasováním Start.
Pozastavení: Označuje pozastavení zpracování aktivity. Trasování "Pozastavit" obsahuje existující ID aktivity, jehož zpracování se očekává, že se později obnoví. Žádné trasování se nevygeneruje s tímto ID mezi událostmi Pozastavit a Obnovit z aktuálního zdroje trasování. Mezi příklady patří pozastavení aktivity při volání do funkce externí knihovny nebo při čekání na prostředek, jako je port pro dokončení vstupně-výstupních operací.
Životopis: Označuje obnovení zpracování aktivity. Trasování "Resume" obsahuje existující ID aktivity, jehož poslední vygenerované trasování z aktuálního zdroje trasování bylo trasování "Suspend". Mezi příklady patří vrácení z volání funkce externí knihovny nebo při signálu k obnovení zpracování prostředkem, jako je port dokončení vstupně-výstupních operací.
Přenos: Vzhledem k tomu, že některé aktivity jsou způsobeny jinými aktivitami nebo souvisí s jinými, můžou být aktivity související s jinými aktivitami prostřednictvím trasování "Přenos". Přenos zaznamenává směrovaný vztah jedné aktivity k jiné aktivitě.
Trasování spuštění a zastavení není pro korelaci důležité. Můžou ale pomoct při zvyšování výkonu, profilace a ověřování rozsahu aktivit.
Pomocí těchto typů mohou nástroje optimalizovat navigaci v protokolech trasování a najít okamžitě související události stejné aktivity nebo události v souvisejících aktivitách, pokud nástroj sleduje trasování přenosu. Nástroje například přestanou parsovat protokoly pro danou aktivitu, když uvidí trasování Start/Stop.
Tyto typy trasování lze také použít k profilaci. Prostředky spotřebované mezi značkami start a stop představují inkluzivní čas aktivity včetně obsažených logických aktivit. Odečtení časových intervalů mezi trasováním pozastavení a obnovení poskytuje skutečnou dobu aktivity.
Trasování stop je také užitečné pro ověření rozsahu implementovaných aktivit. Pokud se některé trasování zpracování objeví po stopování stop místo uvnitř dané aktivity, může to naznačovat chybu kódu.
Pokyny pro používání trasování aktivit
Následuje vodítko použití trasování ActivityTracing (Start, Stop, Suspend, Resume a Transfer).
Trasování je směrovaný cyklický graf, nikoli strom. Řízení můžete vrátit do aktivity, která vytvořila aktivitu.
Aktivita označuje hranici zpracování, která může být smysluplná pro správce systému nebo pro zajištění podpory.
Každá metoda WCF, jak na klientovi, tak na serveru, je vázána zahájením nové aktivity, pak (po dokončení práce) ukončete novou aktivitu a vraťte se do okolí aktivity.
Dlouhotrvající (probíhající) aktivity, jako je naslouchání připojení nebo čekání na zprávy, jsou reprezentovány odpovídajícími značkami start/stop.
Aktivity aktivované příjmem nebo zpracováním zprávy jsou reprezentovány hranicemi trasování.
Aktivity představují aktivity, ne nutně objekty. Aktivita by měla být interpretována jako "k tomu došlo, když . . . (došlo k smysluplné stopové emise)."