Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
В распределенной системе со связанными между собой службами необходимо определять причинные взаимоотношения между службами. Понимать, какие из различных компонентов входили в путь потока запроса, необходимо для решения таких важнейших задач, как наблюдения за работоспособностью, устранение неполадок и анализ первопричин. Для обеспечения корреляции трассировок между различными службами в .NET Framework 4 была добавлена поддержка посредством следующих функций.
Аналитическая трассировка: высокопроизводительная возможность трассировки с низкой детализацией, использующая средство отслеживания событий для Windows (ETW).
Комплексная модель активности для служб WCF/WF: эта функция поддерживает корреляцию трассировок, создаваемых пространствами имен System.ServiceModel и System.Workflow.ComponentModel.
Трассировка событий Windows для WF: эта функция использует записи трассировки, создаваемые службами WF, для обеспечения обозримости текущего состояния и прогресса рабочего процесса.
Ошибки, зарегистрированные в сеансе отслеживания или трассировки, позволяют находить дефекты кода или неверно сформированные сообщения. Свойство ActivityId узла Correlation в заголовке сообщения события может использоваться для нахождения сбойного действия. Сведения о включении трассировки потока сообщений по идентификатору действия см. в разделе "Настройка трассировки потока сообщений". В этом разделе описывается включение трассировки потока сообщений в проекте, который был создан в учебнике «Приступая к работе».
Включение трассировки потока сообщений в учебнике «Начало работы»
Откройте Просмотр событий, нажав кнопку "Пуск", "Запустить" и введите
eventvwr.exe.Если вы не включили трассировку аналитики, разверните Журналы приложений и служб, Microsoft, Windows, Application Server-Applications. Выберите Вид, Показать журналы аналитики и отладки. Щелкните правой кнопкой мыши "Аналитика" и выберите "Включить журнал". Оставьте средство просмотра событий открытым, чтобы можно было просматривать трассировки.
Откройте пример, созданный в руководстве Начало работы в Visual Studio 2012. Обратите внимание, что необходимо запустить Visual Studio 2012 от имени администратора, чтобы служба была создана. Если у вас установлены примеры WCF, откройте раздел "Начало работы", содержащий завершенный проект, созданный в руководстве.
Щелкните правой кнопкой мыши проект службы и выберите "Добавить", "Создать элемент". Выберите файл конфигурации приложения и нажмите кнопку "ОК".
Добавьте следующий код в файл App.Config, созданный в предыдущем шаге.
<system.serviceModel> <diagnostics> <endToEndTracing propagateActivity="true" messageFlowTracing="true"/> </diagnostics> </system.serviceModel>Выполните серверное приложение без отладки, нажав CTRL+F5. Выполните клиентский проект, щелкнув правой кнопкой мыши проект клиента и выбрав "Отладка", "Запустить новый экземпляр".
Для трассировки событий от клиента на сервер добавьте в файл конфигурации приложения в проекте Client следующее.
<diagnostics> <endToEndTracing propagateActivity="true" messageFlowTracing="true"/> </diagnostics>В Program.cs в клиенте добавьте следующую
usingдирективу.using System.Diagnostics;В методе
Mainв файле program.cs в клиентском проекте задайте GUID для трассировки, который будет передаваться в журнале событий.Guid guid = Guid.NewGuid(); Trace.CorrelationManager.ActivityId = guid;Обновите и проверьте журнал Аналитики. Найдите событие с идентификатором 220. Выберите событие и перейдите на вкладку "Сведения" в области предварительного просмотра. Это событие будет содержать идентификатор корреляции для вызывающей операции.
<Correlation ActivityID="{A066CCF1-8AB3-459B-B62F-F79F957A5036}" />Примечание.
Все события с одним и тем же идентификатором GUID в поле ActivityID (идентификатора действия) относятся к одному запросу. Это позволяет сопоставлять сообщения от конкретного клиента определенной службе. Если один клиент вызывает другую службу, то этого клиента можно определить по ActivityID.
В некоторых случаях ActivityID может изменяться с исходного идентификатора GUID на новый ActivityID. В этом случае эмитируется событие передачи. У этого события будет идентификатор 499, а в заголовке события будут содержаться следующие данные.
<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>Примечание.
Событие передачи фиксирует изменение активного ActivityID с GUID, указанного в качестве ActivityID, на GUID, указанный в качестве RelatedActivityID. После инициации события передачи все последующие события будут содержать новый GUID в качестве ActivityID.