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


Распространение

В этом разделе описывается распространение действий в модели трассировки Windows Communication Foundation (WCF).

Использование распространения для корреляции действий между конечными точками

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

Чтобы использовать распространение, задайте параметр ActivityTracing, как показано в предыдущем примере. Кроме того, задайте атрибут propagateActivity для источника трассировки System.ServiceModel во всех конечных точках.

<source name="System.ServiceModel" switchValue="Verbose,ActivityTracing" propagateActivity=”true” >

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

Определение распространения

Идентификатор gAId действия M распространяется на действие N, если выполняются все следующие условия.

  • N создается из-за M.

  • Идентификатор gAId M известен N.

  • Идентификатор gAId N равен идентификатору gAId M.

Идентификатор gAId распространяется через заголовок сообщения ActivityId, как показано в следующей схеме XML.

<xsd:element name=”ActivityId” type=”integer” minOccurs=”0”>
  <xsd:attribute name=”CorrelationId” type=”integer” minOccurs=”0”/>
</xsd:element>

Ниже приведен пример заголовка сообщения.

<MessageLogTraceRecord>
  <s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope"   
                      xmlns:a="http://www.w3.org/2005/08/addressing">
    <s:Header>
      <a:Action s:mustUnderstand="1">http://Microsoft.ServiceModel.Samples/ICalculator/Subtract
      </a:Action>
      <a:MessageID>urn:uuid:f0091eae-d339-4c7e-9408-ece34602f1ce
      </a:MessageID>
      <ActivityId CorrelationId="f94c6af1-7d5d-4295-b693-4670a8a0ce34" 
                          
               xmlns="https://schemas.microsoft.com/2004/09/ServiceModel/Diagnostics">
        17f59a29-b435-4a15-bf7b-642ffc40eac8
      </ActivityId>
      <a:ReplyTo>
          <a:Address>http://www.w3.org/2005/08/addressing/anonymous
          </a:Address>
      </a:ReplyTo>
      <a:To s:mustUnderstand="1">net.tcp://localhost/servicemodelsamples/service</a:To>
   </s:Header>
   <s:Body>
     <Subtract xmlns="http://Microsoft.ServiceModel.Samples">
       <n1>145</n1>
       <n2>76.54</n2>
     </Subtract>
   </s:Body>
  </s:Envelope>
</MessageLogTraceRecord>

Распространение и границы действия

Когда идентификатор действия распространяется на конечные точки, получатель сообщения выдает трассировки Start и Stop с этим (распространенным) идентификатором действия. Следовательно, будет присутствовать трассировка Start и Stop с этим идентификатором gAId из каждого источника трассировки. Если конечные точки выполняются в одном и том же процессе и имеют одно и то же имя источника трассировки, создается несколько трассировок Start и Stop с одинаковым идентификатором lAId (одинаковый gAId, одинаковый источник трассировки, одинаковый процесс).

Синхронизация

Чтобы синхронизировать события между конечными точками, выполняемыми на разных компьютерах, например сообщение отправлено или сообщение получено, к заголовку ActivityId, распространяемому в сообщениях, добавляется заголовок CorrelationId. Средства могут использовать этот идентификатор для синхронизации событий между компьютерами с разным системным временем. В частности, программа Service Trace Viewer использует этот идентификатор для отображения потоков сообщений между конечными точками.

См. также

Основные понятия

Настройка трассировки
Использование программы Service Trace Viewer для просмотра скоррелированных трассировок и устранения неполадок
Сценарии сквозной трассировки
Программа Service Trace Viewer (SvcTraceViewer.exe)