Поделиться через


Аналитическая трассировка WCF

Этот образец демонстрирует способы добавления собственных событий трассировки к потоку аналитически отслеживаемых событий, которые Windows Communication Foundation (WCF) записывает в трассировке событий Windows в .NET Framework, версия 4. Аналитически отслеживаемые события предназначены для упрощения добавления видимости в службы без ущерба для производительности. Этот образец показывает, как с помощью интерфейсов System.Diagnostics.Eventing API писать события, которые интегрируются со службами WCF.

Дополнительные сведения об интерфейсах System.Diagnostics.Eventing API см. в разделе System.Diagnostics.Eventing.

Дополнительные сведения о трассировке событий в Windows см. в разделе Усовершенствованная отладка и настройка производительности с помощью приложения трассировки событий Windows.

Ee667248.Important(ru-ru,VS.100).gif Примечание
Образцы уже могут быть установлены на компьютере. Перед продолжением проверьте следующий каталог (по умолчанию).

<диск_установки>:\WF_WCF_Samples

Если этот каталог не существует, перейдите на страницу Образцы Windows Communication Foundation (WCF) и Windows Workflow Foundation (WF) для .NET Framework 4, чтобы загрузить все образцы Windows Communication Foundation (WCF) и WF. Этот образец расположен в следующем каталоге.

<диск_установки>:\WF_WCF_Samples\WCF\Basic\Management\AnalyticTraceExtensibility

Удаление EventProvider

В этом образце используется класс System.Diagnostics.Eventing.EventProvider, который реализует System.IDisposable. При реализации трассировки для службы WCF, вероятнее всего, во время существования службы будут использоваться ресурсы EventProvider. По этой причине, а также для удобочитаемости, этот образец никогда не удаляет упакованный EventProvider. Если по какой-либо причине определенная служба имеет другие требования по отслеживанию и этот ресурс требуется удалить, то данный образец следует изменить в соответствии с рекомендациями для удаления неуправляемых ресурсов. Дополнительные сведения об удалении неуправляемых ресурсов см. в разделе Реализация метода Dispose.

Сравнение резидентного размещения с размещением на веб-сервере

Для служб, размещенных на веб-сервере, аналитически отслеживаемые трассировки WCF предоставляют поле «HostReference», которое используется для идентификации службы, выдающей трассировки. В этой модели могут участвовать расширяемые пользовательские трассировки, а в данном образце демонстрируются рекомендации, как это сделать. В качестве формата ссылки на веб-узел, когда в итоговой строке имеется символ вертикальной черты «|», можно использовать любой из следующих форматов.

  • Если приложение находится не в корне.

    <SiteName><ApplicationVirtualPath>|<ServiceVirtualPath>|<ServiceName>

  • Если приложение находится в корне.

    <SiteName>|<ServiceVirtualPath>|<ServiceName>

Для резидентных служб аналитически отслеживаемые трассировки WCF не заполняют поле «HostReference». В этом образце класс WCFUserEventProvider ведет себя согласованно при использовании резидентной службой.

Данные пользовательских событий

Манифест поставщика событий для трассировки событий Windows WCF определяет три события, которые предназначены для выдачи авторами служб WCF из кода службы. В следующей таблице приведена разбивка этих трех событий.

Событие Описание Идентификатор события

UserDefinedInformationEventOccurred

Это событие выдается, когда в службе происходит что-то примечательное, что не является проблемой. Например, можно выдать событие после успешного вызова базы данных.

301

UserDefinedWarningOccurred

Это событие выдается, когда возникает проблема, которая в будущем может привести к сбою. Например, можно выдавать событие предупреждения, когда вызов базы данных завершается неудачей, но удалось выполнить восстановление, переключившись на резервное хранилище данных.

302

UserDefinedErrorOccurred

Это событие выдается, когда служба не ведет себя, как положено. Например, можно выдавать событие, если вызов базы данных завершается неудачей и данные не удалось получить из другого источника.

303

Использование этого образца

  1. Откройте файл решения WCFAnalyticTracingExtensibility.sln с помощью Visual Studio 2010.

  2. Чтобы построить решение, нажмите клавишу F6.

  3. Чтобы запустить решение, нажмите клавиши CTRL+F5.

    В веб-обозревателе щелкните файл Calculator.svc. В веб-обозревателе должен появиться URI WSDL-документа для службы. Скопируйте этот URI.

  4. Запустите тестовый клиент WCF (WcfTestClient.exe).

    Тестовый клиент WCF (WcfTestClient.exe) расположен по адресу <Visual Studio 2010каталог_установки >\Common7\IDE\ WcfTestClient.exe (по умолчанию каталог установки Visual Studio 2010 имеет вид C:\Program Files\Microsoft Visual Studio 10.0).

  5. В тестовом клиенте WCF добавьте службу, выбрав в меню Файл команду Добавить службу.

    Добавьте адрес конечной точки в поле ввода.

  6. Нажмите кнопку ОК, чтобы закрыть диалоговое окно.

    Служба ICalculator будет добавлена в область слева в пункт Мои проекты служб.

  7. Откройте приложение просмотра событий.

    Перед запуском службы запустите средство просмотра событий и убедитесь, что журнал событий прослушивает события отслеживания, создаваемые в службе WCF.

  8. В меню Пуск выберите пункт Администрирование, а затем пункт Просмотр событий. Включите Аналитический и Отладочный журналы.

  9. В древовидном представлении средства просмотра событий перейдите последовательно к узлам Средство просмотра событий, Журналы приложений и служб, Microsoft, Windows и Сервер приложений — приложения. Щелкните правой кнопкой мыши пункт Сервер приложений — приложения, выберите пункт Вид и пункт Отобразить аналитический и отладочный журналы.

    Установите флажок Отобразить аналитический и отладочный журналы. Включите Аналитический журнал.

    В древовидном представлении средства просмотра событий перейдите на вкладку Средство просмотра событий, Журналы приложений и служб, Microsoft, Windows и Сервер приложений — приложения, а затем Аналитика. Щелкните правой кнопкой мыши пункт Аналитический и выберите команду Включить журнал.

  10. Проверьте службу с помощью тестового клиента WCF.

    1. В тестовом клиенте WCF дважды щелкните Add() в узле службы ICalculator.

      Метод Add() с двумя параметрами появится в области справа.

    2. Введите 2 для первого параметра и 3 для второго.

    3. Нажмите кнопку Вызвать, чтобы вызвать метод.

  11. Перейдите в окно Просмотр событий, которое уже открыто. Перейдите к окну Средство просмотра событий, Журналы приложений и служб, Microsoft, Windows, Сервер приложений — приложения.

  12. Щелкните правой кнопкой мыши узел Аналитика и выберите команду Обновить.

    События появятся в области справа.

  13. Найдите событие с идентификатором 303 и щелкните его дважды, чтобы открыть его и ознакомиться с его содержимым.

    Это событие было выдано методом Add() службы ICalculator, и его полезная нагрузка равна «2+3=5».

Очистка (необязательно)

  1. Откройте окно Просмотр событий.

  2. Перейдите последовательно к узлам Средство просмотра событий, Журналы приложений и служб, Microsoft, Windows и Сервер приложений — приложения. Щелкните правой кнопкой мыши пункт Аналитический и выберите команду Отключить журнал.

  3. Перейдите к окну Средство просмотра событий, Журналы приложений и служб, Microsoft, Windows и Сервер приложений — приложения, а затем Аналитический. Щелкните правой кнопкой мыши пункт Аналитический и выберите команду Очистить журнал.

  4. Нажмите кнопку Очистить, чтобы удалить события.

Известная проблема

В Средстве просмотра событий есть известная проблема, связанная с ошибкой декодирования событий трассировки событий Windows. Может появиться сообщение об ошибке: «Не удалось найти описание события с идентификатором <id> в исходном Microsoft-Windows-Application Server-Applications. Возможно, компонент, вызывающий это событие, не установлен на локальном компьютере, либо установка повреждена. Можно установить или исправить компонент локального компьютера». При возникновении этой ошибки в меню Действия выберите команду Обновить. Теперь декодирование события должно выполняться правильно.

Ee667248.Important(ru-ru,VS.100).gif Примечание
Образцы уже могут быть установлены на компьютере. Перед продолжением проверьте следующий каталог (по умолчанию).

<диск_установки>:\WF_WCF_Samples

Если этот каталог не существует, перейдите на страницу Образцы Windows Communication Foundation (WCF) и Windows Workflow Foundation (WF) для .NET Framework 4, чтобы загрузить все образцы Windows Communication Foundation (WCF) и WF. Этот образец расположен в следующем каталоге.

<диск_установки>:\WF_WCF_Samples\WCF\Basic\Management\ETWTrace