Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом разделе описываются трассировки действий в модели трассировки Windows Communication Foundation (WCF). Действия — это единицы обработки, которые помогают пользователю сузить область сбоя. Ошибки, возникающие в том же действии, связаны напрямую. Например, операция завершается ошибкой из-за сбоя расшифровки сообщения. Трассировки для операции и ошибки расшифровки сообщений отображаются в одном действии, показывая прямую корреляцию между ошибкой расшифровки и ошибкой запроса.
Настройка трассировки действий
WCF предоставляет предварительно определенные действия для обработки приложений (см. список действий). Вы также можете программно определить действия для группирования трассировок пользователей. Дополнительные сведения см. в разделе Излучение трассировки User-Code.
Чтобы фиксировать следы активности во время выполнения, используйте параметр ActivityTracing для источника трассировки System.ServiceModel, либо другие источники трассировки, такие как WCF или пользовательские источники, как показано в следующем коде конфигурации.
<source name="System.ServiceModel" switchValue="Verbose,ActivityTracing">
Дополнительные сведения об используемом элементе конфигурации и атрибутах см. в разделе "Настройка трассировки ".
Просмотр действий
Вы можете просмотреть действия и их полезность в средстве просмотра трассировки служб (SvcTraceViewer.exe). Если функция ActivityTracing включена, это средство принимает трассировки и сортирует их на основе действия. Вы также можете увидеть трассировку переводов. Передача трассировки указывает, как различные действия связаны друг с другом. Вы можете увидеть, что определенное действие вызвало начало другого действия. Например, запрос сообщения инициировал рукопожатие безопасности для получения токена безопасного разговора.
Сопоставление действий в средстве просмотра трассировки службы
Средство просмотра трассировки службы предоставляет два представления действий:
Представление списка, в котором идентификатор действия используется для непосредственной корреляции трассировок между процессами. Трассировки из разных процессов, например клиента и сервиса, но с одинаковым идентификатором активности группируются в одной активности. Таким образом, ошибка, возникающая в сервисе, которая затем вызывает ошибку на стороне клиента, будет отображаться в одном и том же представлении действий в инструменте.
Представление графа , в котором действия группируются по процессам. В этом представлении клиент и служба с одинаковым идентификатором активности имеют свои трассировки в разных видах деятельности. Чтобы сопоставить действия с одинаковым идентификатором действия в разных процессах, средство отображает потоки сообщений по связанным действиям.
Дополнительные сведения и графическое представление средства просмотра трассировки службы см. в разделе "Средство просмотра трассировки службы" (SvcTraceViewer.exe) и использование средства просмотра трассировки службы для просмотра коррелированных трассировок и устранения неполадок.
Определение области действия
Действие определяется во время разработки и обозначает логическую единицу работы. Испускаемые трассировки с тем же идентификатором действия непосредственно связаны друг с другом, они являются частью той же активности. Так как действие может пересекать границы конечной точки (запрос), определяются две области действия.
Globalобласть, для каждого отдельного приложения. В этом контексте действие определяется его глобальным уникальным идентификатором на 128 бит, называемым gAId. GAid — это то, что распространяется между конечными точками.Localобласть применения для каждой конечной точки. В этом контексте действие определяется своим идентификатором gAId, а также именем источника следов активности, который излучает эти следы, и идентификатором процесса. Этот триплет представляет собой идентификатор локальной активности, lAId. LAId используется для определения (локальных) границ действия.
Схема трассировки
Следы могут выдаваться с помощью любой схемы и на платформах Microsoft. "e2e" (для end to End") — это часто используемая схема. Эта схема содержит 128-разрядный идентификатор (gAId), имя источника трассировки и идентификатор процесса. В управляемом коде XmlWriterTraceListener осуществляется трассировка в схеме E2E.
Разработчики могут установить AID, который передается вместе с трассировкой, задав свойство ActivityId с помощью Guid в локальном хранилище потока (TLS). Это продемонстрировано в следующем примере.
// set the current Activity ID to a new GUID.
CorrelationManager.ActivityId = Guid.NewGuid();
Установка gAId в TLS будет очевидна при генерации трассировок с помощью источника трассировки, как показано в следующем примере.
TraceSource traceSource = new TraceSource("myTraceSource");
traceSource.TraceEvent(TraceEventType.Warning, eventId, "Information");
Трассировка, которая будет выдана, будет содержать gAId, в данный момент находящийся в TLS, имя источника трассировки, переданное в качестве параметра конструктору источника трассировки, и идентификатор текущего процесса.
Период активности
В самых строгих терминах свидетельство действия начинается в первый раз, когда идентификатор действия используется в излучаемой трассировке, и заканчивается последний раз, когда он используется в излучаемой трассировке. Предопределенный набор типов трассировки предоставляется System.Diagnostics, включая "Запуск и Остановку", чтобы явно обозначить границы времени существования активности.
Начало. Указывает начало действия. Трассировка start предоставляет запись начала новой вехи обработки. Он содержит новый идентификатор активности для данного источника трассировки в данном процессе, за исключением случаев, когда идентификатор активности распространяется через конечные точки, при этом для каждой конечной точки мы видим по одному «Началу». Примеры запуска нового действия включают создание нового потока для обработки или ввод нового общедоступного метода.
Остановка. Указывает конец действия. Трассировка 'Стоп' предоставляет запись о завершении существующего этапа обработки. Он содержит существующий идентификатор активности для данного источника трассировки в данном процессе, за исключением случаев, когда идентификатор активности распространяется между конечными точками; в этом случае мы видим одну "остановку" для каждой конечной точки. Примеры остановки действия включают завершение потока обработки или выход из метода, начало которого было обозначено трассировкой Start.
Приостановка. Указывает приостановку обработки действия. След "Приостановка" содержит существующий идентификатор действия, обработка которого должна возобновиться позже. Трассировки с этим идентификатором не выдаются из текущего источника трассировки в период между событиями приостановки и возобновления. Примеры включают приостановку действия при вызове внешней функции библиотеки или при ожидании ресурса, например порта завершения ввода-вывода.
Резюме: указывает возобновление обработки действия. Трассировка "Резюме" содержит существующий идентификатор активности, последний из которого был "Приостановка" из текущего источника трассировки. Примеры включают возврат из вызова функции внешней библиотеки или возобновление обработки при сигнале от ресурса, например, порта завершения ввода-вывода.
Передача: поскольку некоторые действия вызваны другими или связаны с другими, действия могут быть связаны с другими действиями с помощью трассировки передачи. Перевод регистрирует направленное отношение одной деятельности к другой.
Трассировки запуска и остановки не критически важны для корреляции. Однако они могут помочь повысить производительность, профилирование и проверку области действий.
С помощью этих типов средства могут оптимизировать навигацию по журналам трассировки, чтобы найти немедленно связанные события одного и того же действия или события в связанных действиях, если средство следует трассировкам передачи. Например, средства перестают анализировать журналы для заданного действия, когда они видят трассировку запуска и остановки.
Эти типы трассировки также можно использовать для профилирования. Ресурсы, используемые между маркерами запуска и остановки, представляют инклюзивное время действия, включая содержащиеся логические действия. Вычитание интервалов времени между трассировками приостановки и возобновления позволяет определить фактическое время активности.
Трассировка останова также особенно полезна для проверки охвата реализованных действий. Если некоторые трассировки обработки отображаются после трассировки остановки, а не внутри заданного действия, это может указывать на дефект кода.
Рекомендации по использованию трассировки действий
Ниже приведено руководство по использованию трассировок ActivityTracing (запуск, остановка, приостановка, возобновление и передача).
Трассировка — это направленный циклический граф, а не дерево. Вы можете вернуть управление активности, которая инициировала другую активность.
Активность обозначает границу обработки, которая может быть значимой для администратора системы или для поддерживаемости.
Каждый метод WCF, как на клиенте, так и на сервере, привязан к началу нового действия, затем (после завершения работы) завершает новое действие и возвращается к внешнему действию.
Длительные (текущие) действия, такие как прослушивание подключений или ожидание сообщений, представлены соответствующими маркерами запуска и остановки.
Действия, инициируемые получением или обработкой сообщения, представлены границами трассировки.
Деятельность обозначает не обязательно объекты, а именно действия. Действие должно быть интерпретировано как "это происходило, когда. . . (произошел значимый выброс трассировки).