Reliable Messaging 프로토콜 버전 1.0
이 항목에서는 HTTP 전송을 사용하여 상호 운용에 필요한 WS-Reliable Messaging February 2005(버전 1.0) 프로토콜의 구현 정보에 대해 설명합니다. WCF는 이 항목에서 설명한 제약 조건 및 확인된 내용과 함께 WS-Reliable Messaging 사양을 따릅니다. WS-ReliableMessaging 버전 1.0 프로토콜은 WinFX 이상에서 구현됩니다.
WS-Reliable Messaging February 2005 프로토콜은 WCF에서 ReliableSessionBindingElement에 의해 구현되었습니다.
편의상 이 항목에서는 다음 역할을 사용합니다.
개시자: WS-Reliable 메시지 시퀀스 만들기를 시작한 클라이언트입니다.
응답자: 개시자의 요청을 받은 서비스입니다.
이 문서에서는 다음 표에 있는 접두사와 네임스페이스를 사용합니다.
Prefix | 네임스페이스 |
---|---|
wsrm | http://schemas.xmlsoap.org/ws/2005/02/rm |
netrm | http://schemas.microsoft.com/ws/2006/05/rm |
s | http://www.w3.org/2003/05/soap-envelope |
wsa | http://schemas.xmlsoap.org/ws/2005/08/addressing |
wsse | http://docs.oasis-open.org/wss/2004/01/oasis-200401-wssecurity-secext-1.0.xsd |
메시지
시퀀스 설정 메시지
WCF는 CreateSequence
및 CreateSequenceResponse
메시지를 구현하여 신뢰할 수 있는 메시지 시퀀스를 설정합니다. 다음 제약 조건이 적용됩니다.
B1101: WCF 개시 장치가
CreateSequence
메시지에서 선택적 Expires 요소를 생성하지 않거나CreateSequence
메시지에Offer
요소가 포함된 경우Offer
요소에서 선택적Expires
요소를 생성하지 않습니다.B1102:
CreateSequence
메시지에 액세스하는 경우 WCFResponder
는 두Expires
요소가 모두 존재하는 경우 이러한 요소를 보내고 받지만 해당 값을 사용하지 않습니다.
WS-Reliable Messaging은 Offer
메커니즘을 사용하여 세션을 형성하는 상호 관련된 두 개의 역방향 시퀀스를 설정합니다.
R1103:
CreateSequence
에Offer
요소가 있는 경우 신뢰할 수 있는 메시징 응답자는CreateSequenceResponse
요소가 포함된wsrm:Accept
와 함께 시퀀스 및 응답을 수락하여 상호 관련된 두 개의 역방향 시퀀스를 구성하거나CreateSequence
요청을 거부해야 합니다.R1104: 역방향 시퀀스로 이동하는
SequenceAcknowledgement
및 애플리케이션 메시지는ReplyTo
의CreateSequence
엔드포인트 참조로 보내야 합니다.R1105:
AcksTo
의ReplyTo
및CreateSequence
엔드포인트 참조에는 8비트 형식과 일치하는 주소 값이 있어야 합니다.WCF 응답기는 시퀀스를 만들기 전에
AcksTo
및ReplyTo
EPR의 URI 부분이 동일한지 확인합니다.R1106:
AcksTo
의ReplyTo
및CreateSequence
엔드포인트 참조에는 동일한 참조 매개 변수 집합이 있어야 합니다.WCF는
CreateSequence
에 대한AcksTo
및ReplyTo
의 [참조 매개 변수]를 동일한 것으로 지정하지 않지만 동일하다고 가정하며, 승인 및 역방향 시퀀스 메시지에ReplyTo
엔드포인트 참조의 [참조 매개 변수]를 사용합니다.R1107:
Offer
메커니즘을 사용하여 두 개의 역방향 시퀀스가 설정된 경우 역방향 시퀀스로 이동하는SequenceAcknowledgement
및 애플리케이션 메시지를ReplyTo
의CreateSequence
엔드포인트 참조로 보내야 합니다.R1108: Offer 메커니즘을 사용하여 두 개의 역방향 시퀀스가 설정된 경우
[address]
의wsrm:AcksTo
요소에 대한wsrm:Accept
엔드포인트 자식 요소의CreateSequenceResponse
속성은CreateSequence
의 바이트별 대상 URI와 일치해야 합니다.R1109:
Offer
메커니즘을 사용하여 두 개의 역방향 시퀀스가 설정된 경우 개시자가 보낸 메시지 및 응답자의 메시지 승인을 같은 엔드포인트 참조로 보내야 합니다.WCF는 WS-Reliable Messaging을 사용하여 개시 장치와 응답기 간에 신뢰할 수 있는 세션을 설정합니다. WCF의 WS-Reliable Messaging 구현에서는 단방향, 요청-회신 및 전체 이중 메시징 패턴에 신뢰할 수 있는 세션을 제공합니다.
CreateSequence
/CreateSequenceResponse
에서 WS-Reliable MessagingOffer
메커니즘을 사용하면 상호 관련된 두 개의 역방향 시퀀스를 설정하고 모든 메시지 엔드포인트에 적합한 세션 프로토콜을 제공합니다. WCF는 세션 무결성을 위한 엔드투엔드 보호를 포함하여 세션에 대한 보안 보장을 제공하므로 같은 상대방에 보낼 메시지가 동일한 대상에 도달하는지 확인하는 것이 효율적입니다. 이렇게 하면 애플리케이션 메시지에서 피기백킹이라고 하는 시퀀스 승인을 사용할 수 있습니다. 따라서 제약 조건 R1104, R1105, 및 R1108은 WCF에 적용됩니다.
CreateSequence
메시지의 예입니다.
<s:Envelope>
<s:Header>
<a:Action s:mustUnderstand="1">
http://schemas.xmlsoap.org/ws/2005/02/rm/CreateSequence
</a:Action>
<a:ReplyTo>
<a:Address>
http://Business456.com/clientA
</a:Address>
</a:ReplyTo>
<a:MessageID>
urn:uuid:addabbbf-60cb-44d3-8c5b-9e0841629a36
</a:MessageID>
<a:To s:mustUnderstand="1">
http://Business456.com/clientA
</a:To>
</s:Header>
<s:Body>
<wsrm:CreateSequence>
<wsrm:AcksTo>
<wsa:Address>
http://Business456.com/clientA
</wsa:Address>
</wsrm:AcksTo>
<wsrm:Offer>
<wsrm:Identifier>
urn:uuid:0afb8d36-bf26-4776-b8cf-8c91fddb5496
</wsrm:Identifier>
</wsrm:Offer>
</wsrm:CreateSequence>
</s:Body>
</s:Envelope>
CreateSequenceResponse
메시지의 예입니다.
<s:Envelope>
<s:Header>
<a:Action s:mustUnderstand="1">
http://schemas.xmlsoap.org/ws/2005/02/rm/CreateSequenceResponse
</a:Action>
<a:RelatesTo>
urn:uuid:addabbbf-60cb-44d3-8c5b-9e0841629a36
</a:RelatesTo>
<a:To s:mustUnderstand="1">
http://Business456.com/clientA
</a:To>
</s:Header>
<s:Body>
<wsrm:CreateSequenceResponse>
<Identifier>
urn:uuid:eea0a36c-b38a-43e8-8c76-2fabe2d76386
</Identifier>
<Accept>
<AcksTo>
<a:Address>
http://BusinessABC.com/serviceA
</a:Address>
</AcksTo>
</Accept>
</wsrm:CreateSequenceResponse>
</s:Body>
</s:Envelope>
Sequence
다음은 시퀀스에 적용되는 제약 조건의 목록입니다.
B1201: WCF는
xs:long
의 최대 포함 값, 9223372036854775807보다 작은 시퀀스 번호를 생성하고 액세스합니다.B1202: WCF는 항상
http://schemas.xmlsoap.org/ws/2005/02/rm/LastMessage
의 작업 URI를 사용하여 빈 본문 마지막 메시지를 생성합니다.B1203: WCF는 작업 URI가
LastMessage
가 아닌 한http://schemas.xmlsoap.org/ws/2005/02/rm/LastMessage
요소가 포함된 시퀀스 헤더를 사용하여 메시지를 수신하고 전달합니다.
시퀀스 헤더의 예입니다.
<wsrm:Sequence>
<wsrm:Identifier>
urn:uuid:addabbbf-60cb-44d3-8c5b-9e0841629a36
</wsrm:Identifier>
<wsrm:MessageNumber>
10
</wsrm:MessageNumber>
<wsrm:LastMessage/>
</wsrm:Sequence>
AckRequested 헤더
WCF는 AckRequested
헤더를 연결 유지 메커니즘으로 사용합니다. WCF는 선택적 MessageNumber
요소를 생성하지 않습니다. MessageNumber
요소가 포함된 AckRequested
헤더가 있는 메시지를 수신하는 경우 WCF는 다음 예제에서처럼 MessageNumber
요소의 값을 무시합니다.
<wsrm:AckRequested>
<wsrm:Identifier>
urn:uuid:addabbbf-60cb-44d3-8c5b-9e0841629a36
</wsrm:Identifier>
</wsrm:AckRequested>
SequenceAcknowledgement 헤더
WCF는 WS-Reliable Messaging에 제공된 시퀀스 승인에 피기백 메커니즘을 사용합니다.
R1401:
Offer
메커니즘을 사용하여 두 개의 역방향 시퀀스가 설정된 경우SequenceAcknowledgement
헤더가 받는 사람에게 전송된 애플리케이션 메시지에 포함될 수 있습니다.B1402: WCF가 시퀀스 메시지를 받기 전에 승인을 생성해야 하는 경우(예를 들어,
AckRequested
메시지를 충족해야 하는 경우) WCF는 다음 예제에서처럼 0-0 범위가 포함된SequenceAcknowledgement
헤더를 생성합니다.<wsrm:SequenceAcknowledgement> <wsrm:Identifier> urn:uuid:addabbbf-60cb-44d3-8c5b-9e0841629a36 </wsrm:Identifier> <wsrm:AcknowledgementRange Upper="0" Lower="0"/> </wsrm:SequenceAcknowledgement>
B1403: WCF는
Nack
요소가 포함된SequenceAcknowledgement
헤더를 생성하지 않지만Nack
요소를 지원합니다.
WS-ReliableMessaging 오류
다음은 WS-ReliableMessaging 오류의 WCF 구현에 적용되는 제약 조건 목록입니다.
B1501: WCF는
MessageNumberRollover
오류를 생성하지 않습니다.B1502: WCF 엔드포인트는 사양에 설명된 대로
CreateSequenceRefused
오류를 생성할 수 있습니다.B1503:서비스 엔드포인트가 해당 연결 제한에 도달하여 새 연결을 처리할 수 없는 경우 WCF는 다음 예제에서처럼 추가
CreateSequenceRefused
오류 하위 코드,netrm:ConnectionLimitReached
를 생성합니다.<s:Envelope> <s:Header> <wsa:Action> http://schemas.xmlsoap.org/ws/2005/08/addressing/fault </wsa:Action> </s:Header> <s:Body> <s:Fault> <s:Code> <s:Value> s:Receiver </s:Value> <s:Subcode> <s:Value> wsrm:CreateSequenceRefused </s:Value> <s:Subcode> <s:Value> netrm:ConnectionLimitReached </s:Value> </s:Subcode> </s:Subcode> </s:Code> <s:Reason> <s:Text xml:lang="en"> [Reason] </s:Text> </s:Reason> </s:Fault> </s:Body> </s:Envelope>
WS-Addressing 오류
WS-Reliable Messaging에서는 WS-Addressing을 사용하므로 WCF에서 WS-Reliable Messaging을 구현하는 경우에는 WS-Addressing 오류를 생성할 수 있습니다. 이 섹션에서는 WCF가 WS-Reliable Messaging 계층에 명시적으로 생성하는 WS-Addressing 오류에 대해 설명합니다.
B1601: WCF는 다음 중 하나가 true인 경우 메시지 주소 지정 헤더 필요 오류를 생성합니다.
메시지에
Sequence
헤더 및Action
헤더가 없습니다.CreateSequence
메시지에MessageId
헤더가 없습니다.CreateSequence
메시지에ReplyTo
헤더가 없습니다.
B1602: WCF는
Sequence
헤더가 없고 WS-Reliable Messaging 사양에서 인식하지 않는Action
헤더가 있는 메시지에 대한 응답으로 지원되지 않는 작업 오류를 생성합니다.B1603: WCF는 엔드포인트가
CreateSequence
메시지의 주소 지정 헤더 검사에 따라 시퀀스를 처리하지 않음을 나타내기 위해 엔드포인트를 사용할 수 없음 오류를 생성합니다.
프로토콜 구성
WS-Addressing을 사용하여 구성
WCF는 WS-Addressing의 두 개 버전, WS-Addressing 2004/08 [WS-ADDR]과 W3C WS-Addressing 1.0 Recommendations [WS-ADDR-CORE] 및 [WS-ADDR-SOAP]를 지원합니다.
WS-Reliable Messaging 사양에는 WS-Addressing 2004/08만 언급되어 있지만 WS-Addressing 버전만 사용하도록 제한되지는 않습니다. 다음은 WCF에 적용되는 제약 조건의 목록입니다.
R2101:WS-Addressing 2004/08과 WS-Addressing 1.0 모두 WS-Reliable Messaging과 함께 사용할 수 있습니다.
R2102: 단일 버전의 WS-Addressing은
wsrm:Offer
메커니즘을 사용하여 상호 관련된 한 쌍의 역방향 시퀀스 또는 제공된 WS-Reliable Messaging 시퀀스 전체에서 사용할 수 있어야 합니다.
SOAP를 사용하여 구성
WCF는 WS-Reliable Messaging과 함께 SOAP 1.1 및 SOAP 1.2를 모두 사용할 수 있도록 지원합니다.
WS-Security 및 WS-SecureConversation을 사용하여 구성
WCF는 보안 전송(HTTPS), WS-Security를 사용한 구성 및 WS-Secure Conversation을 사용한 구성을 통해 WS-Reliable Messaging 시퀀스를 보호합니다. 다음은 WCF에 적용되는 제약 조건의 목록입니다.
R2301: 개별 메시지의 무결성과 기밀성뿐만 아니라 WS-Reliable Messaging 시퀀스의 무결성을 보호하려면 WCF에서 WS-Secure Conversation을 사용해야 합니다.
R2302:WS-Secure Conversation 세션은 WS-Reliable Messaging 시퀀스를 설정하기 전에 설정해야 합니다.
R2303: WS-Reliable Messaging 시퀀스 수명이 WS-Secure Conversation 세션의 수명을 초과하는 경우 WS-Secure Conversation을 사용하여 설정한
SecurityContextToken
을 해당 WS-Secure Conversation 갱신 바인딩을 사용하여 갱신해야 합니다.B2304:WS-Reliable Messaging 시퀀스 또는 한 쌍의 상호 관련된 역방향 시퀀스는 항상 단일 WS-SecureConversation 세션에 바인딩됩니다.
WCF 소스는
CreateSequence
메시지의 요소 확장성 섹션에wsse:SecurityTokenReference
요소를 생성합니다.R2305: WS-Secure Conversation을 사용하여 구성하는 경우
CreateSequence
메시지에wsse:SecurityTokenReference
요소가 있어야 합니다.
WS-Reliable Messaging WS-Policy Assertion
WCF는 WS-Reliable Messaging WS-Policy Assertion wsrm:RMAssertion
을 사용하여 엔드포인트 기능을 설명합니다. 다음은 WCF에 적용되는 제약 조건의 목록입니다.
B3001: WCF는
wsrm:RMAssertion
WS-Policy Assertion을wsdl:binding
요소에 연결합니다. WCF는wsdl:binding
및wsdl:port
요소에 대한 두 개 첨부 파일을 모두 지원합니다.B3002: WCF는 WS-Reliable Messaging 어설션의 다음 선택적 속성을 지원하고 WCF
ReliableMessagingBindingElement
에서 이 속성을 제어합니다.wsrm:InactivityTimeout
wsrm:AcknowledgementInterval
예를 들면 다음과 같습니다.
<wsrm:RMAssertion> <wsrm:InactivityTimeout Milliseconds="600000" /> <wsrm:AcknowledgementInterval Milliseconds="200" /> </wsrm:RMAssertion>
흐름 제어 WS-Reliable Messaging 확장
WCF는 WS-Reliable Messaging 확장성을 사용하여 선택적으로 시퀀스 메시지 흐름을 보다 엄격하게 제어합니다.
ReliableSessionBindingElement.FlowControlEnabled 속성을 true
로 설정하여 흐름 제어를 사용하도록 설정합니다. 다음은 WCF에 적용되는 제약 조건의 목록입니다.
B4001: 신뢰할 수 있는 메시징 흐름 제어를 사용하는 경우 WCF는
SequenceAcknowledgement
헤더의 요소 확장성에netrm:BufferRemaining
요소를 생성합니다.B4002: 신뢰할 수 있는 메시징 흐름 제어를 사용하면 WCF는 다음 예제에서처럼
netrm:BufferRemaining
요소를SequenceAcknowledgement
헤더에 제공할 필요가 없습니다.<wsrm:SequenceAcknowledgement> <wsrm:Identifier> http://fabrikam123.com/abc </wsrm:Identifier> <wsrm:AcknowledgementRange Upper="1" Lower="1"/> <netrm:BufferRemaining> 8 </netrm:BufferRemaining> </wsrm:SequenceAcknowledgement>
B4003: WCF는
netrm:BufferRemaining
을 사용하여 신뢰할 수 메시징 대상이 버퍼링할 수 있는 새 메시지 수를 나타냅니다.B4004: WCF 신뢰할 수 있는 메시징 서비스는 신뢰할 수 있는 메시징 대상 애플리케이션이 메시지를 신속하게 받을 수 없는 경우 전송된 메시지 수를 제한합니다. 신뢰할 수 있는 메시징 대상은 메시지를 버퍼링하고 요소의 값을 0으로 줄입니다.
B4005: WCF는 0과 4096 사이의
netrm:BufferRemaining
정수 값을 생성하고 0과xs:int
의maxInclusive
값 214748364 사이의 정수 값을 읽습니다.
메시지 교환 패턴
이 섹션에서는 WS-Reliable Messaging이 다른 메시지 교환 패턴에 사용되는 경우 WCF의 동작을 설명합니다. 각 메시지 교환 패턴에 대해 다음 두 가지 배포 시나리오를 고려합니다.
주소를 지정할 수 없는 개시자: 개시자가 방화벽으로 보호됩니다. 응답자는 HTTP 응답에서만 개시자에게 메시지를 배달할 수 있습니다.
주소를 지정할 수 있는 개시자: 개시자와 응답자 모두 HTTP 요청을 받을 수 있습니다. 즉, 반대 방향의 HTTP 연결 두 개를 설정할 수 있습니다.
주소를 지정할 수 없는 단방향 개시자
바인딩
WCF는 각각 한 개의 HTTP 채널을 통해 한 개의 시퀀스를 사용하여 단방향 메시지 교환 패턴을 제공합니다. WCF는 HTTP 요청을 사용하여 RMS의 모든 메시지를 RMD에게 전송하고 HTTP 응답을 사용하여 RMD의 모든 메시지를 RMS에게 전송합니다.
CreateSequence 교환
WCF 개시 장치는 시퀀스를 제공하지 않는 CreateSequence
메시지를 생성합니다. WCF 응답기는 시퀀스를 만들기 전에 CreateSequence
에서 제공하는 시퀀스가 없는지 확인합니다. WCF 응답기는 CreateSequenceResponse
메시지를 통해 CreateSequence
요청에 응답합니다.
SequenceAcknowledgement
WCF 개시 장치는 CreateSequence
메시지와 오류 메시지를 제외한 모든 메시지의 회신에 대한 승인을 처리합니다. WCF 응답기는 항상 시퀀스 및 AckRequested
메시지 모두에 대한 응답으로 독립 실행형 승인을 생성합니다.
TerminateSequence 메시지
WCF는 TerminateSequence
를 단방향 작업으로 처리합니다. 즉, HTTP 응답에는 비어 있는 본문과 HTTP 202 상태 코드가 있습니다.
주소를 지정할 수 있는 단방향 개시자
바인딩
WCF는 각각 한 개의 인바운드 및 아웃바운드 HTTP 채널을 통해 한 개의 시퀀스를 사용하여 단방향 메시지 교환 패턴을 제공합니다. WCF는 HTTP 요청을 사용하여 모든 메시지를 전송합니다. 모든 HTTP 응답에는 빈 본문과 HTTP 202 상태 코드가 포함됩니다.
CreateSequence 교환
WCF 개시 장치는 시퀀스를 제공하지 않는 CreateSequence
메시지를 생성합니다. WCF 응답기는 시퀀스를 만들기 전에 CreateSequence
에서 제공하는 시퀀스가 없는지 확인합니다. WCF 응답기는 ReplyTo
엔드포인트 참조를 사용하여 주소가 지정된 HTTP 요청에 CreateSequenceResponse
메시지를 전송합니다.
주소를 지정할 수 있는 이중 개시자
바인딩
WCF는 각각 한 개의 인바운드 및 아웃바운드 HTTP 채널을 통해 두 개의 시퀀스를 사용하여 완전히 비동기적인 양방향 메시지 교환 패턴을 제공합니다. WCF는 HTTP 요청을 사용하여 모든 메시지를 전송합니다. 모든 HTTP 응답에는 빈 본문과 HTTP 202 상태 코드가 포함됩니다.
CreateSequence 교환
WCF 개시 장치는 시퀀스를 제공하는 CreateSequence
메시지를 생성합니다. WCF 응답기는 시퀀스를 만들기 전에 CreateSequence
에서 제공하는 시퀀스가 있는지 확인합니다. WCF는 CreateSequence
의 ReplyTo
엔드포인트 참조로 주소가 지정된 HTTP 요청에 CreateSequenceResponse
메시지를 전송합니다.
시퀀스 수명
WCF는 두 개의 시퀀스를 한 개의 전체 이중 세션으로 처리합니다.
한 개의 시퀀스를 오류 처리하는 오류를 생성하면 WCF는 원격 엔드포인트가 두 시퀀스를 오류 처리한다고 예상합니다. 한 개의 시퀀스를 오류 처리하는 오류를 읽으면 WCF는 두 시퀀스를 오류 처리합니다.
WCF에서는 해당 아웃바운드 시퀀스를 닫고 해당 인바운드 시퀀스에서 메시지를 계속 처리할 수 있습니다. 반대로 WCF에서는 인바운드 시퀀스를 닫고 해당 아웃바운드 시퀀스에서 메시지를 계속 보낼 수 있습니다.
요청-회신, 주소를 지정할 수 없는 개시자
바인딩
WCF는 각각 한 개의 인바운드 및 아웃바운드 HTTP 채널을 통해 두 개의 시퀀스를 사용하여 단방향 및 요청-회신 메시지 교환 패턴을 제공합니다. WCF는 HTTP 요청을 사용하여 요청 시퀀스의 메시지를 전송하고 HTTP 응답을 사용하여 회신 시퀀스의 메시지를 전송합니다.
CreateSequence 교환
WCF 개시 장치는 시퀀스를 제공하는 CreateSequence
메시지를 생성합니다. WCF 응답기는 시퀀스를 만들기 전에 CreateSequence
에서 제공하는 시퀀스가 있는지 확인합니다. WCF 응답기는 CreateSequenceResponse
메시지를 통해 CreateSequence
요청에 응답합니다.
단방향 메시지
단방향 메시지 교환 프로토콜을 완료하려면 WCF 개시 장치가 HTTP 요청에 대한 요청 시퀀스 메시지를 전송하고 HTTP 응답에 대한 독립 실행형 SequenceAcknowledgement
메시지를 받습니다. SequenceAcknowledgement
는 전송된 메시지를 승인해야 합니다.
WCF 응답기는 승인, 오류 또는 빈 본문과 HTTP 202 상태 코드가 포함된 응답으로 요청에 회신할 수 있습니다.
양방향 메시지
양방향 메시지 교환 프로토콜을 완료하려면 WCF 개시 장치가 HTTP 요청에 대한 요청 시퀀스 메시지를 전송하고 HTTP 응답에 대한 회신 시퀀스 메시지를 받습니다. 응답에 전송된 요청 시퀀스 메시지를 승인하는 SequenceAcknowledgement
가 있어야 합니다.
WCF 응답기는 애플리케이션 회신, 오류 또는 빈 본문과 HTTP 202 상태 코드가 포함된 응답으로 요청에 회신할 수 있습니다.
단방향 메시지가 있고 애플리케이션이 회신하는 시간 때문에 요청 시퀀스 메시지의 시퀀스 번호와 응답 메시지의 시퀀스 번호는 상관 관계가 없습니다.
회신 다시 시도
WCF는 양방향 메시지 교환 프로토콜 상관 관계에 HTTP 요청-회신 상관 관계를 사용합니다. 따라서 WCF 개시 장치는 HTTP 응답에 승인, 사용자 메시지 또는 오류가 포함되지 않고 요청 시퀀스 메시지가 승인되는 경우 요청 시퀀스 메시지 다시 시도를 중지하지 않습니다. WCF 응답기는 회신과 상호 관련된 요청의 HTTP 요청 레그에서 회신을 다시 시도합니다.
LastMessage 교환
WCF 개시 장치는 HTTP 요청 레그에서 본문이 비어 있는 마지막 메시지를 생성하여 전송합니다. WCF는 응답이 필요하지만 실제 응답 메시지를 무시합니다. WCF 응답기는 회신 시퀀스의 본문이 비어 있는 마지막 메시지를 사용하여 요청 시퀀스의 본문이 비어 있는 마지막 메시지에 대해 회신합니다.
WCF 응답기가 작업 URI가 http://schemas.xmlsoap.org/ws/2005/02/rm/LastMessage
가 아닌 마지막 메시지를 받으면 WCF는 마지막 메시지로 회신합니다. 양방향 메시지 교환 프로토콜의 경우 마지막 메시지에 애플리케이션 메시지가 포함되어 있으며, 단방향 메시지 교환 프로토콜의 경우 마지막 메시지는 비어 있습니다.
WCF 응답기는 회신 시퀀스의 본문이 비어 있는 마지막 메시지에 대한 승인이 필요하지 않습니다.
TerminateSequence 교환
모든 요청이 유효한 회신을 수신하면 WCF 개시 장치는 HTTP 요청 레그에 요청 시퀀스의 TerminateSequence
메시지를 생성하고 전송합니다. WCF는 응답이 필요하지만 실제 응답 메시지를 무시합니다. WCF 응답기는 회신 시퀀스의 TerminateSequence
메시지를 사용하여 요청 시퀀스의 TerminateSequence
메시지에 대해 회신합니다.
정상적인 종료 시퀀스에서 두 TerminateSequence
메시지 모두에 전체 범위의 SequenceAcknowledgement
가 포함되어 있습니다.
요청/회신, 주소를 지정할 수 있는 개시자
바인딩
WCF는 각각 한 개의 인바운드 및 아웃바운드 HTTP 채널을 통해 두 개의 시퀀스를 사용하여 요청-회신 메시지 교환 패턴을 제공합니다. WCF는 HTTP 요청을 사용하여 모든 메시지를 전송합니다. 모든 HTTP 응답에는 빈 본문과 HTTP 202 상태 코드가 포함됩니다.
CreateSequence 교환
WCF 개시 장치는 시퀀스를 제공하는 CreateSequence
메시지를 생성합니다. WCF 응답기는 시퀀스를 만들기 전에 CreateSequence
에서 제공하는 시퀀스가 있는지 확인합니다. WCF는 CreateSequence
의 ReplyTo
엔드포인트 참조로 주소가 지정된 HTTP 요청에 CreateSequenceResponse
메시지를 전송합니다.
요청/회신 상관 관계
WCF 개시 장치는 모든 애플리케이션 요청 메시지에 MessageId
및 ReplyTo
엔드포인트 참조가 있는지 확인합니다. WCF 개시 장치는 각 애플리케이션 요청 메시지에 CreateSequence
메시지의 ReplyTo
엔드포인트 참조를 적용합니다. WCF 응답기의 경우 들어오는 요청 메시지에 MessageId
및 ReplyTo
가 있어야 합니다. WCF 응답기는 CreateSequence
및 모든 애플리케이션 요청 메시지의 엔드포인트 참조 URI가 일치하는지 확인합니다.