Tok zpráv – přehled
V distribuovaném systému obsahujícím propojené služby je nutné určit kauzální vztahy mezi službami. Je důležité pochopit různé komponenty, které byly součástí toku požadavků, aby podporovaly kritické scénáře, jako je monitorování stavu, řešení potíží a analýza původní příčiny. Abychom umožnili korelaci trasování mezi různými službami, přidali jsme podporu v rozhraní .NET Framework 4 prostřednictvím následujících funkcí:
Analytické trasování: Vysoce výkonná a nízká funkce trasování podrobností pomocí trasování událostí pro Windows (ETW).
Kompletní model aktivit pro služby WCF/WF: Tato funkce podporuje korelaci trasování vygenerovaných obory System.ServiceModel názvů a System.Workflow.ComponentModel oborů názvů.
Sledování Trasování událostí pro Windows pro WF: Tato funkce používá záznamy sledování generované službami WF k zajištění přehledu o aktuálním stavu a průběhu pracovního postupu.
Chyby zaznamenané v záznamu sledování nebo trasování se dají použít k vyhledání vad kódu nebo nesprávně vytvořených zpráv. Vlastnost ActivityId uzlu korelace v hlavičce zprávy události lze použít k určení chybující aktivity. Pokud chcete povolit trasování toku zpráv podle ID aktivity, přečtěte si téma Konfigurace trasování toku zpráv. Toto téma ukazuje, jak povolit trasování toku zpráv v projektu vytvořeném v kurzu Začínáme.
Povolení trasování toku zpráv v kurzu Začínáme
Otevřete Prohlížeč událostí kliknutím na Start, Spustit a zadáním
eventvwr.exe
.Pokud jste nepovolili analytické trasování, rozbalte protokoly aplikací a služeb, Microsoft, Windows, Application Server-Applications. Vyberte Zobrazit, Zobrazit analytické a ladicí protokoly. Klikněte pravým tlačítkem myši na Analýzu a vyberte Povolit protokol. Nechte Prohlížeč událostí otevřené, aby bylo možné zobrazit trasování.
Otevřete ukázku vytvořenou v kurzu Začínáme v sadě Visual Studio 2012. Upozorňujeme, že visual Studio 2012 musíte spustit jako správce, aby bylo možné službu vytvořit. Pokud máte nainstalované ukázky WCF, můžete otevřít úvodní okno, které obsahuje dokončený projekt vytvořený v tomto kurzu.
Klikněte pravým tlačítkem na projekt Služby a vyberte Přidat novou položku. Vyberte konfigurační soubor aplikace a klepněte na tlačítko OK.
Do souboru App.Config vytvořeného v předchozím kroku přidejte následující kód.
<system.serviceModel> <diagnostics> <endToEndTracing propagateActivity="true" messageFlowTracing="true"/> </diagnostics> </system.serviceModel>
Spusťte serverové aplikace bez ladění stisknutím kombinace kláves CTRL+F5. Spusťte projekt klienta tak, že kliknete pravým tlačítkem na projekt Klienta a vyberete Ladit, Spustit novou instanci.
Chcete-li trasovat události z klienta na server, přidejte následující položky do konfiguračního souboru aplikace v projektu Klient.
<diagnostics> <endToEndTracing propagateActivity="true" messageFlowTracing="true"/> </diagnostics>
Do Program.cs v klientovi přidejte následující
using
direktivu.using System.Diagnostics;
Main
V metodě v souboru program.cs v klientském projektu nastavte identifikátor GUID trasování, který se má rozšířit v protokolu událostí.Guid guid = Guid.NewGuid(); Trace.CorrelationManager.ActivityId = guid;
Aktualizujte a prozkoumejte analytický protokol. Vyhledejte událost s ID události 220. Vyberte událost a v podokně náhledu klikněte na kartu Podrobnosti . Tato událost bude obsahovat ID korelace pro volající aktivitu.
<Correlation ActivityID="{A066CCF1-8AB3-459B-B62F-F79F957A5036}" />
Poznámka:
Všechny události se stejným identifikátorem GUID v ID aktivity souvisejí s jedním požadavkem. Dá se použít ke korelaci zpráv z konkrétního klienta do konkrétní služby. Pokud klient volal jinou službu, mohl by být stejný klient identifikován ID aktivity.
V některých případech se ID aktivity může změnit z původního identifikátoru GUID na nové ID aktivity. V takovém případě se vygeneruje událost přenosu. TOTO ID události je 499 a událost bude obsahovat následující data v hlavičce.
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event"> <System> <Provider Name="Microsoft-Windows-Application Server-Applications" Guid="{c651f5f6-1c0d-492e-8ae1-b4efd7c9d503}" /> <EventID>499</EventID> ... <Correlation ActivityID="{A066CCF1-8AB3-459B-B62F-F79F957A5036}" RelatedActivityID="{85FC0930-9C49-42DA-804B-A7368104BD1B}" /> ... </System> </Event>
Poznámka:
Událost přenosu zaznamenává změnu aktivního ID aktivity z identifikátoru GUID zadaného jako ID aktivity na identifikátor GUID zadaný jako RelatedActivityID. Po vygenerované události přenosu budou všechny události obsahovat nový identifikátor GUID jako ID aktivity.