워크플로 서비스는 특정 순서로 전송되는 메시지에 따라 달라질 수 있습니다. 워크플로 서비스에는 하나 이상의 Receive 활동이 포함되며 각 Receive 활동에는 특정 메시지가 필요합니다. 특정 전송 배달 보장이 없으면 클라이언트에서 보낸 메시지가 지연되어 워크플로 서비스가 예상하지 못한 순서로 배달될 수 있습니다. 메시지를 특정 순서로 보낼 필요가 없는 워크플로 서비스 구현은 일반적으로 병렬 작업을 사용하여 수행됩니다. 더 복잡한 애플리케이션 프로토콜의 경우 워크플로가 매우 빠르게 복잡해집니다. WCF(Windows Communication Foundation)의 순서가 다른 메시지 처리 기능을 사용하면 중첩된 병렬 작업의 복잡성 없이 이러한 워크플로를 만들 수 있습니다. 비정렬된 메시지 처리는 WCF MSMQ 바인딩과 같은 채널에서만 ReceiveContext을 지원합니다.
Out-Of-Order 메시지 처리 활성화
워크플로우 서비스에서 AllowBufferedReceive 속성을 true
으로 설정하여 이순서 메시지 처리가 활성화됩니다. 다음 예제에서는 코드에서 속성을 설정하는 AllowBufferedReceive 방법을 보여줍니다.
// Code: Opt-in to Buffered Receive processing...
WorkflowService service = new WorkflowService
{
Name="MyService",
Body = workflow,
AllowBufferedReceive = true
};
다음 예제와 같이 XAML의 워크플로 서비스에 특성을 적용 AllowBufferedReceive
할 수도 있습니다.
// Xaml: Opt-in to Buffered Receive processing...
<WorkflowService AllowBufferedReceive="True">
<!--the actual children activities -->
</Sequence>