다음을 통해 공유


BAM WCF 인터셉션 구성 방법

WCF 인터셉션용으로 BAM을 구성하려면 이벤트 원본에 대한 적절한 어셈블리 매니페스트에 액세스하도록 인터셉터 구성 파일을 수정해야 합니다.

이벤트를 구성하는 경우 작업에 대해 올바르게 형식이 지정된 XPath 식을 지정해야 합니다.

WCF 추적을 사용하도록 설정하고 애플리케이션을 실행하여 메시지가 포함된 샘플 WCF 로그를 생성하여 인터셉터 구성에 사용할 형식이 지정된 XPath 식을 만들 수 있습니다. Microsoft 서비스 추적 뷰어(SvcTraceViewer.exe)를 사용하여 로그를 보고 메시지를 추출할 수 있습니다. 뷰어는 WCF SDK에 포함되어 있습니다. 그런 다음, 원하는 XPath 식은 메시지에 따라 형성되고 인터셉터 구성에 적용할 수 있습니다.

BAM WCF 인터셉션을 구성할 때는 machine.config 파일에 사용된 동작 확장이 수신 위치의 사용자 지정 동작 구성에 사용된 확장과 일치해야 합니다. maching.config 파일에서 구성된 수신 위치의 확장 이름을 변경하면 동작이 로드되지 않으며 수신 위치의 구성 UI에 오류가 발생합니다.

클러스터된 시나리오의 경우 사용자 지정 동작은 한 번만 구성되므로 클러스터에 포함된 컴퓨터의 모든 machine.config 파일에 동일한 파일 이름 확장명이 지정되도록 해야 합니다.

매니페스트를 설정하려면

  1. 인터셉션 구성에서 EventSource의 매니페스트를 'Microsoft.BizTalk.Adapter.Wcf.Runtime.ITwoWayAsyncVoid, Microsoft.BizTalk.Adapter.Wcf.Runtime, Version=3.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'로 설정합니다.

    참고

    인터페이스는 사용되는 서비스/수신 포트의 유형에 따라 변경됩니다. 아래 표의 내용을 참조하여 사용 중인 포트 유형을 반영하도록 매니페스트 줄을 변경하십시오.

    포트 유형 사용
    양방향 포트 ITwoWayAsync
    기본적으로 2개의 양방향 바인딩(예: HTTP)이 적용된 단방향 포트 ITwoWayAsyncVoid
    기본적으로 2개의 양방향 바인딩이 적용된 단방향 포트(트랜잭션 포함) ITwoWayAsyncVoidTxn
    단방향 바인딩(예: MSMQ) IOneWayAsync
    단방향 바인딩(트랜잭션 포함) IOneWayAsyncTxn

    중요

    필터에서 GetOperationName 작업을 사용하는 대신 다음 샘플에서 강조 표시된 대로 XPath 작업을 사용합니다. 일반 계약의 경우 모든 메시지는 일반 작업을 수행할 때 도착하며, 이 시점에서 메시지 자체(Action 특성)를 기준으로 하여 특정 작업으로 라우팅됩니다.

  2. 이 시점에서 작업 이름은 항상 동일합니다. 일반 계약을 사용하는 WCF 어댑터의 경우 사용되는 메서드는 BizTalkSubmit입니다. Action 노드에 대해 GetOperationName 대신 XPath를 사용하여 작업 이름을 검색할 수 있습니다. 그런 후에 해당 작업 이름을 기준으로 필터링할 수 있습니다.

샘플 인터셉터 구성

이 샘플은 WCF 어댑터용 ServiceRequest 및 ServiceReply의 사용 방법을 보여 줍니다. 강조 표시된 섹션에서 동작의 XPath 식은 GetOperationName을 사용하는 대신 작업을 필터링하는 데 사용됩니다. 회신도 필터링할 수 있지만 ITwoWayAsync의 경우에만 필터링이 가능하며 다른 모든 인터페이스의 경우에는 아무 내용도 반환되지 않거나 void가 반환됩니다.

ServiceRequest

<ic:OnEvent IsBegin="true" IsEnd ="false" Name ="WCFServiceRequest" Source="WCFService">  
      <ic:Filter>  
        <ic:Expression>  
          <wcf:Operation Name="GetServiceContractCallPoint"/>  
          <ic:Operation Name ="Constant">  
            <ic:Argument>ServiceRequest</ic:Argument>  
          </ic:Operation>  
          <ic:Operation Name ="Equals" />  
          <wcf:Operation Name ="XPath">  
            <wcf:Argument>//s:Header/a:Action</wcf:Argument>  
          </wcf:Operation>  
          <ic:Operation Name ="Constant">  
            <ic:Argument>Operation1</ic:Argument>  
          </ic:Operation>  
          <ic:Operation Name ="Equals" />  
          <ic:Operation Name ="And" />  
        </ic:Expression>  
      </ic:Filter>  
  
      <ic:CorrelationID>  
        <ic:Expression>  
          <wcf:Operation Name="AutoGenerateCorrelationToken"/>  
        </ic:Expression>  
      </ic:CorrelationID>  
  
      <ic:Update DataItemName ="Activity Date" Type ="DATETIME">  
        <ic:Expression>  
          <wcf:Operation Name ="GetContextProperty">  
            <wcf:Argument>EventTime</wcf:Argument>  
          </wcf:Operation>  
        </ic:Expression>  
      </ic:Update>  
  
      <ic:Update DataItemName ="Source" Type ="NVARCHAR">  
        <ic:Expression>  
          <ic:Operation Name="Constant">  
            <ic:Argument>WcfAdapter_ServiceRequest</ic:Argument>  
          </ic:Operation>  
        </ic:Expression>  
      </ic:Update>  
  
    </ic:OnEvent>  

ServiceReply

<ic:OnEvent IsBegin="true" IsEnd ="false" Name ="WCFServiceReply" Source="WCFService">  
      <ic:Filter>  
        <ic:Expression>  
          <wcf:Operation Name="GetServiceContractCallPoint"/>  
          <ic:Operation Name ="Constant">  
            <ic:Argument>ServiceReply</ic:Argument>  
          </ic:Operation>  
          <ic:Operation Name ="Equals" />  
        </ic:Expression>  
      </ic:Filter>  
  
      <ic:CorrelationID>  
        <ic:Expression>  
          <wcf:Operation Name="AutoGenerateCorrelationToken"/>  
        </ic:Expression>  
      </ic:CorrelationID>  
  
      <ic:Update DataItemName ="Activity Date" Type ="DATETIME">  
        <ic:Expression>  
          <wcf:Operation Name ="GetContextProperty">  
            <wcf:Argument>EventTime</wcf:Argument>  
          </wcf:Operation>  
        </ic:Expression>  
      </ic:Update>  
  
      <ic:Update DataItemName ="Name" Type ="NVARCHAR">  
        <ic:Expression>  
          <ic:Operation Name="Constant">  
            <ic:Argument>WcfAdapter_ServiceReply</ic:Argument>  
          </ic:Operation>  
        </ic:Expression>  
      </ic:Update>  
  
    </ic:OnEvent>  

참고 항목

BAM 데이터를 가로채도록 WCF 어댑터 구성