상관 관계 개요
이 항목은 Windows Workflow Foundation 4에 적용됩니다.
상관 관계는 워크플로 서비스 메시지를 서로 연결하거나 응용 프로그램 상태와 연결하는 메커니즘입니다. 예를 들어 응답을 초기 요청과 연결하거나 특정 주문 ID를 주문 처리 워크플로의 지속된 상태와 연결할 수 있습니다. 이 항목에서는 상관 관계에 대해 간략하게 설명하고 이 단원의 다른 항목에서는 각 상관 관계 형식에 대해 자세히 설명합니다.
상관 관계 형식
상관 관계는 프로토콜 기반 또는 내용 기반일 수 있습니다. 프로토콜 기반 상관 관계는 메시지 배달 인프라에서 제공하는 데이터를 사용하여 메시지 간의 매핑을 제공합니다. 프로토콜 기반 상관 관계를 사용하여 상호 관련된 메시지는 메모리에 있는 개체(예: RequestContext)를 사용하거나 전송 프로토콜에서 제공하는 토큰에 의해 서로 연결됩니다. 내용 기반 상관 관계는 응용 프로그램에서 지정한 데이터를 사용하여 메시지를 서로 연결합니다. 내용 기반 상관 관계를 사용하여 상호 관련된 메시지는 해당 메시지에 있는 일부 응용 프로그램 정의 데이터(예: 고객 번호)를 사용하여 서로 연결됩니다.
상관 관계에 참여하는 작업은 CorrelationHandle을 사용하여 메시징 작업을 서로 연결합니다. 예를 들어 서비스를 호출하는 데 사용되는 Send와 서비스로부터 콜백을 받은 데 사용되는 후속 Receive는 동일한 CorrelationHandle을 공유합니다. 이 기본 패턴은 내용 기반 상관 관계와 프로토콜 상관 관계에서 모두 사용됩니다. 즉, 각 작업에 상관 관계 핸들을 명시적으로 설정하거나 CorrelationScope 작업에 작업을 포함할 수 있습니다. CorrelationScope에 포함된 작업은 CorrelationScope를 통해 해당 상관 관계 핸들을 관리하기 때문에 CorrelationHandle을 명시적으로 설정할 필요가 없습니다. CorrelationScope 범위는 요청-회신 상관 관계 및 하나의 추가 상관 관계 형식에 CorrelationHandle 관리를 제공합니다. WorkflowServiceHost를 사용하여 호스팅된 워크플로 서비스는 CorrelationScope 작업과 동일한 기본 상관 관계 관리를 사용합니다. 일반적으로 이 기본 상관 관계 관리는 두 개의 Receive 작업이 나란히 있거나 두 개의 Send 작업 뒤에 두 개의 Receive 작업이 있는 것과 같이 여러 메시징 작업이 나란히 있거나 겹치지 않는 한 대부분의 경우에 CorrelationScope 또는 워크플로 서비스의 메시징 작업에 해당 CorrelationHandle 집합이 필요 없음을 의미합니다. 기본 상관 관계는 이 단원에서 각 상관 관계 형식에 대해 설명하는 항목에서 자세히 설명합니다. 메시징 작업에 대한 자세한 내용은 메시징 작업 사용 및 방법: 메시징 작업을 사용하여 워크플로 서비스 만들기를 참조하십시오.
프로토콜 기반 상관 관계
프로토콜 기반 상관 관계는 전송 메커니즘을 사용하여 메시지를 서로 연결하거나 적절한 인스턴스와 연결합니다. 일부 시스템 제공 프로토콜 상관 관계에는 요청-회신 상관 관계와 컨텍스트 기반 상관 관계가 포함됩니다. 요청-회신 상관 관계는 ReceiveReply와 쌍을 이루는 Send 또는 SendReply와 쌍을 이루는 Receive처럼 한 쌍의 메시징 작업을 상호 연결하여 양방향 작업을 만드는 데 사용됩니다. Visual Studio 2010 Workflow Designer에서는 이러한 패턴을 빠르게 구현할 수 있도록 작업 템플릿 집합도 제공합니다. 컨텍스트 기반 상관 관계는 .NET Context Exchange Protocol Specification에서 설명하는 컨텍스트 교환 메커니즘을 기반으로 합니다. 컨텍스트 상관 관계를 사용하려면 끝점에서 BasicHttpContextBinding, WSHttpContextBinding 또는 NetTcpContextBinding을 사용해야 합니다.
프로토콜 상관 관계에 대한 자세한 내용은 컨텍스트 교환, 영속 이중 및 요청-회신을 참조하십시오. Visual Studio 2010 Workflow Designer 작업 템플릿 사용에 대한 자세한 내용은 메시징 작업 사용을 참조하십시오.
내용 기반 상관 관계
내용 기반 상관 관계는 메시지에 있는 일부 정보를 사용하여 해당 메시지를 특정 인스턴스와 연결합니다. 프로토콜 기반 상관 관계와 달리 내용 기반 상관 관계는 응용 프로그램 작성자가 연결된 각 메시지에서 이러한 데이터를 찾을 수 있는 위치를 명시적으로 지정해야 합니다. 내용 기반 상관 관계를 사용하는 작업은 MessageQuerySet을 사용하여 이 메시지 데이터를 지정합니다. 내용 기반 상관 관계는 BasicHttpContextBinding과 같은 컨텍스트 바인딩 중 하나를 사용하지 않는 서비스와 통신할 때 유용합니다. 내용 기반 상관 관계에 대한 자세한 내용은 내용 기반을 참조하십시오.