다음을 통해 공유


라우팅 계약

라우팅 계약은 라우팅 서비스에서 처리할 수 있는 메시지 패턴을 정의합니다. 각 계약은 형식이 없으며 서비스에서 메시지 스키마 또는 작업에 대한 지식 없이 메시지를 받을 수 있습니다. 이렇게 하면 라우팅 서비스에서 라우팅되는 기본 메시지의 세부 사항에 대한 추가 구성 없이 메시지를 일반적으로 라우팅할 수 있습니다.

라우팅 계약

라우팅 서비스는 일반 WCF 메시지 개체를 허용하므로 계약을 선택할 때 가장 중요한 고려 사항은 클라이언트 및 서비스와 통신할 때 사용할 채널의 모양입니다. 메시지를 처리할 때 라우팅 서비스는 대칭 메시지 펌프를 사용하므로 일반적으로 인바운드 계약의 모양이 아웃바운드 계약의 모양과 일치해야 합니다. 그러나 서비스 모델의 디스패처가 이중 채널을 요청-회신 채널로 변환하거나, 필요하지 않고 사용되지 않을 때(즉, SessionMode.Allowed, IInputSessionChannelIInputChannel로 변환하는 경우) 채널에서 세션 지원을 제거하는 경우와 같이 서비스 모델의 디스패처가 셰이프를 수정할 수 있는 경우가 있습니다.

이러한 메시지 펌프를 지원하기 위해 라우팅 서비스는 라우팅 서비스에서 사용하는 서비스 엔드포인트를 정의할 때 사용해야 하는 네임스페이스에 계약을 System.ServiceModel.Routing 제공합니다. 이러한 계약은 형식이 없으므로 모든 메시지 유형 또는 작업을 수신할 수 있으며 라우팅 서비스에서 특정 메시지 스키마에 대한 지식 없이 메시지를 처리할 수 있습니다. 라우팅 서비스에서 사용하는 계약에 대한 자세한 내용은 라우팅 계약을 참조하세요.

라우팅 서비스에서 제공하는 계약은 네임스페이 System.ServiceModel.Routing 스에 있으며 다음 표에 설명되어 있습니다.

계약서 모양 채널 형태
ISimplexDatagramRouter SessionMode = SessionMode.Allowed # 세션 모드를 허용하도록 설정합니다.

AsyncPattern = true

IsOneWay = true
IInputChannel -> IOutputChannel
ISimplexSessionRouter SessionMode = SessionMode.Required

AsyncPattern = true

IsOneWay = true
IInputSessionChannel -> IOutputSessionChannel
IRequestReplyRouter SessionMode = SessionMode.Allowed

AsyncPattern = true
IReplyChannel -> IRequestChannel
IDuplexSessionRouter SessionMode=SessionMode.Required

CallbackContract=typeof(ISimplexSession)

AsyncPattern = true

IsOneWay = true

TransactionFlow(TransactionFlowOption.Allowed)
IDuplexSessionChannel -> IDuplexSessionChannel

참고하십시오