전파
이 항목에서는 WCF(Windows Communication Foundation) 추적 모델의 활동 전파에 대해 설명합니다.
전파를 통해 엔드포인트 내의 동작 상호 연결
전파는 사용자에게 애플리케이션 엔드포인트를 통해 동일한 처리 단위(예: 요청)에 대한 오류 추적의 직접적인 상관 관계를 제공합니다. 동일한 처리 단위에 대해 다른 엔드포인트에서 내보내진 오류는 애플리케이션 도메인에서도 동일한 동작에서 그룹화됩니다. 이는 메시지 헤더에서 동작 ID의 전파를 통해 수행됩니다. 그러므로 서버의 내부 오류로 인해 클라이언트의 시간이 초과되면 두 오류 모두 직접 상관 관계에 대해 동일한 동작에서 표시됩니다.
이 작업을 수행하려면 앞의 예제에서 설명한 대로 ActivityTracing
설정을 사용하세요. 또한 모든 엔드포인트에서 propagateActivity
추적 소스에 대해 System.ServiceModel
특성을 설정하세요.
<source name="System.ServiceModel" switchValue="Verbose,ActivityTracing" propagateActivity="true" >
동작 전파는 WCF가 TLS에 동작 ID를 포함한 아웃바운드 메시지에 헤더를 추가하도록 구성할 수 있는 기능입니다. 서버측에서 이후의 추적에 이를 포함함으로써 클라이언트 및 서버 동작을 상호 연결할 수 있습니다.
전파 정의
다음 조건이 모두 충족되면 동작 M의 gAId가 동작 N에 전파됩니다.
N은 M으로 인해 만들어집니다.
M의 gAId가 N에 알려집니다.
N의 gAId가 M의 gAId와 같습니다.
다음 XML 스키마에 설명된 것처럼 gAId는 ActivityId 메시지 헤더를 통해 전파됩니다.
<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="aaaa0000-bb11-2222-33cc-444444dddddd"
xmlns="http://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>
전파 및 동작 경계
동작 ID가 엔드포인트를 통해 전파되는 경우 메시지 수신자는 해당(전파된) 동작 ID를 사용하여 Start 및 Stop 추적을 내보냅니다. 따라서 각 추적 소스의 해당 gAId를 가진 Start 및 Stop 추적이 있습니다. 엔드포인트가 동일한 프로세스에 있고 동일한 추적 소스 이름을 사용하는 경우 동일한 lAId(동일한 gAId, 동일한 추적 소스, 동일한 프로세스)를 가진 여러 Start 및 Stop 추적이 만들어집니다.
동기화
서로 다른 컴퓨터에서 실행되는 엔드포인트에서 이벤트를 동기화하기 위해 CorrelationId가 메시지에 전파되는 ActivityId 헤더에 추가됩니다. 도구에서 이 ID를 사용하여 클럭이 일치하지 않는 시스템 간의 이벤트를 동기화할 수 있습니다. 특히 Service Trace Viewer 도구는 이 ID를 사용하여 엔드포인트 간의 메시지 흐름을 표시합니다.