Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym temacie opisano szczegóły implementacji programu Windows Communication Foundation (WCF) dla protokołu WS-Reliable Messaging luty 2005 (wersja 1.0) niezbędnego do współdziałania przy użyciu transportu HTTP. Program WCF jest zgodny ze specyfikacją WS-Reliable Messaging z ograniczeniami i wyjaśnieniami opisanymi w tym temacie. Należy pamiętać, że protokół WS-ReliableMessaging w wersji 1.0 jest implementowany począwszy od systemu WinFX.
Protokół WS-Reliable Messaging z lutego 2005 r. jest implementowany w programie WCF przez ReliableSessionBindingElement.
Dla wygody temat używa następujących ról:
Inicjator: klient, który inicjuje tworzenie sekwencji komunikatów WS-Reliable
Osoba odpowiadająca: usługa, która odbiera żądania inicjatora
Dokument ten wykorzystuje prefiksy i przestrzenie nazw przedstawione w poniższej tabeli.
| Prefiks | Namespace |
|---|---|
| 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 |
Komunikacja
Sekwencja komunikatów o ustanowieniu
Program WCF implementuje CreateSequence i CreateSequenceResponse komunikaty, aby ustanowić niezawodną sekwencję wiadomości. Obowiązują następujące ograniczenia:
B1101: Inicjator WCF nie generuje opcjonalnego elementu Expires w
CreateSequencekomunikacie lub w przypadkach, gdyCreateSequencekomunikat zawieraOfferelement, opcjonalnyExpireselement w elemencieOffer.B1102: Podczas uzyskiwania dostępu do komunikatu
CreateSequenceprogram WCFResponderwysyła i odbiera obaExpireselementy, jeśli istnieją, ale nie używa ich wartości.
WS-Reliable Messaging wprowadza Offer mechanizm do ustanowienia dwóch odwrotnych skorelowanych sekwencji, które tworzą sesję.
R1103: Jeśli
CreateSequencezawiera elementOffer, Odbiorca niezawodnych komunikatów musi zaakceptować sekwencję i odpowiedzieć za pomocąCreateSequenceResponsezawierającego elementwsrm:Accept, tworząc dwie przeciwnie skorelowane sekwencje, lub odrzucić żądanieCreateSequence.R1104:
SequenceAcknowledgementi komunikaty aplikacji przepływające na sekwencji odwrotnejReplyTomuszą być wysyłane do odwołania do punktu końcowegoCreateSequence.R1105:
AcksToiReplyToodwołania do punktu końcowego w elemencieCreateSequencemuszą mieć wartości adresów zgodne oktet po oktet.WCF Responder sprawdza, czy część identyfikatora URI
AcksToiReplyToEPR są identyczne przed utworzeniem sekwencji.R1106: Referencje punktu końcowego
AcksToiReplyTowCreateSequencepowinny mieć ten sam zestaw parametrów referencyjnych.WCF nie wymusza, ale zakłada, że [parametry referencyjne]
AcksToiReplyTonaCreateSequencesą identyczne i używa [parametrów referencyjnych] zReplyToodwołania do punktu końcowego dla potwierdzeń i przeciwnych komunikatów sekwencji.R1107: Kiedy dwie sekwencje odwrotne są ustanawiane przy użyciu mechanizmu
Offer,SequenceAcknowledgementa komunikaty aplikacyjne przepływające na tych sekwencjach muszą być wysyłane do punktu końcowegoReplyToobiektuCreateSequence.R1108: Po ustanowieniu dwóch sekwencji odwrotnych przy użyciu mechanizmu Oferty, właściwość
[address]podrzędnego elementu Odwołania Punktu Końcowego elementuwsrm:AcksTomusi być zgodna bajtowo z docelowym identyfikatorem URI elementuwsrm:Accept.R1109: Po ustanowieniu dwóch sekwencji odwrotnych przy użyciu mechanizmu
Offer, wiadomości wysyłane przez inicjatora i potwierdzenia do komunikatów przez odpowiadającego muszą być wysyłane do tego samego odwołania do punktu końcowego.WCF używa WS-Reliable Messaging do ustanawiania niezawodnych sesji między inicjatorem i odpowiadającym. Implementacja obsługi komunikatów WS-Reliable WCF zapewnia niezawodną sesję dla jednokierunkowych, żądanie-odpowiedź i pełnych dupleks wzorców komunikatów. Mechanizm WS-Reliable Messaging
OffernaCreateSequence/CreateSequenceResponseumożliwia ustanowienie dwóch skorelowanych sekwencji konwersacyjnych i udostępnia protokół sesji odpowiedni dla wszystkich punktów końcowych wiadomości. Ponieważ program WCF zapewnia gwarancję bezpieczeństwa dla takiej sesji, w tym kompleksowej ochrony integralności sesji, praktyczne jest zapewnienie, że komunikaty przeznaczone dla tej samej strony docierają do tego samego miejsca docelowego. Umożliwia to również dołączanie potwierdzeń sekwencji do komunikatów aplikacji. W związku z tym ograniczenia R1104, R1105 i R1108 mają zastosowanie do programu WCF.
Przykład komunikatu 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>
Przykład komunikatu 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>
Kolejność
Poniżej znajduje się lista ograniczeń, które mają zastosowanie do sekwencji:
B1201:WCF generuje i uzyskuje dostęp do numerów sekwencji nie wyższych niż maksymalna wartość
xs:longwłącznie, 9223372036854775807.B1202:WCF zawsze generuje ostatni komunikat o pustym ciele z identyfikatorem URI akcji .
http://schemas.xmlsoap.org/ws/2005/02/rm/LastMessageB1203: Program WCF odbiera i dostarcza komunikat z nagłówkiem sekwencji zawierającym element
LastMessage, jeśli identyfikator URI akcji nie jesthttp://schemas.xmlsoap.org/ws/2005/02/rm/LastMessage.
Przykład nagłówka sekwencji.
<wsrm:Sequence>
<wsrm:Identifier>
urn:uuid:addabbbf-60cb-44d3-8c5b-9e0841629a36
</wsrm:Identifier>
<wsrm:MessageNumber>
10
</wsrm:MessageNumber>
<wsrm:LastMessage/>
</wsrm:Sequence>
Nagłówek AckRequested
WCF używa AckRequested nagłówka jako mechanizmu utrzymania aktywności. Program WCF nie generuje opcjonalnego MessageNumber elementu. Po otrzymaniu komunikatu z nagłówkiem, który zawiera element AckRequestedMessageNumber, program WCF ignoruje wartość elementu MessageNumber, jak pokazano w poniższym przykładzie.
<wsrm:AckRequested>
<wsrm:Identifier>
urn:uuid:addabbbf-60cb-44d3-8c5b-9e0841629a36
</wsrm:Identifier>
</wsrm:AckRequested>
Nagłówek SequenceAcknowledgement
WCF używa mechanizmu piggy-back na potrzeby potwierdzeń sekwencji podanych w WS-Reliable Messaging.
R1401: Gdy przy użyciu mechanizmu
Offerustanowione zostaną dwie sekwencje odwrotne, nagłówekSequenceAcknowledgementmoże zostać uwzględniony w każdym komunikacie aplikacji przesłanym do zamierzonego adresata.B1402: Kiedy WCF musi wygenerować potwierdzenie przed odebraniem jakichkolwiek komunikatów sekwencyjnych (na przykład w celu spełnienia komunikatu
AckRequested), WCF generuje nagłówekSequenceAcknowledgementzawierający zakres 0-0, jak pokazano w poniższym przykładzie.<wsrm:SequenceAcknowledgement> <wsrm:Identifier> urn:uuid:addabbbf-60cb-44d3-8c5b-9e0841629a36 </wsrm:Identifier> <wsrm:AcknowledgementRange Upper="0" Lower="0"/> </wsrm:SequenceAcknowledgement>B1403: WCF nie generuje nagłówków
SequenceAcknowledgementzawierających elementNack, ale obsługuje elementyNack.
WS-ReliableMessaging błędy
Poniżej znajduje się lista ograniczeń mających zastosowanie do implementacji WCF błędów komunikacyjnych WS-Reliable:
B1501: Program WCF nie generuje
MessageNumberRolloverbłędów.Punkt końcowy B1502: WCF może generować błędy
CreateSequenceRefused, jak opisano w specyfikacji.B1503: Gdy punkt końcowy usługi osiągnie limit połączenia i nie może przetworzyć nowych połączeń, program WCF generuje dodatkowy
CreateSequenceRefusedkod podrzędny błędów,netrm:ConnectionLimitReachedjak pokazano w poniższym przykładzie.<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>
błędy WS-Addressing
Ponieważ WS-Reliable Messaging używa adresowania WS, implementacja komunikatów WCF WS-Reliable może generować błędy WS-Addressing. W tej sekcji omówiono błędy WS-Addressing, które usługa WCF generuje jawnie w warstwie komunikacyjnej WS-Reliable.
B1601: WCF generuje nagłówek adresowania komunikatu o błędzie Wymagany, gdy spełniony jest jeden z następujących warunków:
Brak w komunikacie nagłówka
Sequencei nagłówkaAction.Brak nagłówka
CreateSequencew wiadomościMessageId.Brak nagłówka
CreateSequencew wiadomościReplyTo.
B1602: WCF generuje błąd: Akcja Nieobsługiwana w odpowiedzi na komunikat, który nie ma nagłówka
Sequencei ma nagłówekAction, który nie jest zgodny ze specyfikacją Messaging WS-Reliable.B1603:WCF generuje punkt końcowy błędu Niedostępny, aby wskazać, że punkt końcowy nie przetwarza sekwencji na podstawie badania
CreateSequencenagłówków adresowania komunikatu.
Kompozycja protokołu
Kompozycja z WS-Addressing
WCF obsługuje dwie wersje WS-Addressing: WS-Addressing 2004/08 [WS-ADDR] i Rekomendacje W3C WS-Addressing 1.0 [WS-ADDR-CORE] i [WS-ADDR-SOAP].
Chociaż specyfikacja WS-Reliable Messaging wspomina tylko o WS-Addressing 2004/08, nie ogranicza wersji WS-Addressing do użycia. Poniżej znajduje się lista ograniczeń, które mają zastosowanie do programu WCF:
R2101:Zarówno WS-Addressing 2004/08, jak i WS-Addressing 1.0 mogą być używane z WS-Reliable Messaging.
pl-PL: R2102: Pojedyncza wersja WS-Addressing musi być używana w ramach danej sekwencji WS-Reliable komunikatów lub pary sekwencji odwrotnych skorelowanych przy użyciu mechanizmu
wsrm:Offer.
Kompozycja z SOAP
Program WCF obsługuje korzystanie zarówno z protokołu SOAP 1.1, jak i protokołu SOAP 1.2 z WS-Reliable Messaging.
Kompozycja z WS-Security i WS-SecureConversation
Program WCF zapewnia ochronę sekwencji WS-Reliable Messaging przy użyciu bezpiecznego Transportu (HTTPS), kompozycji z użyciem zabezpieczeń WS-Security oraz kompozycji z użyciem WS-Secure Conversation. Poniżej znajduje się lista ograniczeń, które mają zastosowanie do programu WCF:
R2301: Aby chronić integralność sekwencji komunikatów WS-Reliable oraz integralność i poufność poszczególnych wiadomości, program WCF wymaga użycia WS-Secure Conversation.
R2302:AWS-Secure Sesja konwersacji musi zostać ustanowiona przed ustanowieniem WS-Reliable sekwencji wymiany wiadomości.
R2303: Jeśli czas trwania sekwencji wiadomości WS-Reliable przekracza czas trwania sesji konwersacji WS-Secure,
SecurityContextTokenustanowiony przy użyciu WS-Secure konwersacja musi zostać odnowiony za pomocą odpowiedniego powiązania odnowienia konwersacji WS-Secure.B2304: sekwencja komunikatówWS-Reliable lub para skorelowanych sekwencji odwrotnych jest zawsze powiązana z jedną sesją WS-SecureConversation.
Źródło WCF generuje element
wsse:SecurityTokenReferencew sekcji rozszerzalności wiadomościCreateSequence.R2305: Gdy skomponowane z WS-Secure Konwersacja, wiadomość
CreateSequencemusi zawierać elementwsse:SecurityTokenReference.
obsługa komunikatów WS-Reliable asercji WS-Policy
WCF używa WS-Reliable Messaging WS-Policy Assertion wsrm:RMAssertion do opisywania możliwości punktów końcowych. Poniżej znajduje się lista ograniczeń, które mają zastosowanie do programu WCF:
B3001: WCF dołącza asercję
wsrm:RMAssertionWS-Policy do elementówwsdl:binding. WCF obsługuje załączniki zarówno do elementówwsdl:binding, jak iwsdl:port.B3002: WCF obsługuje następujące opcjonalne właściwości asercji WS-Reliable Messaging i umożliwia ich kontrolę w WCF
ReliableMessagingBindingElement:wsrm:InactivityTimeoutwsrm:AcknowledgementInterval
Poniżej przedstawiono przykład.
<wsrm:RMAssertion> <wsrm:InactivityTimeout Milliseconds="600000" /> <wsrm:AcknowledgementInterval Milliseconds="200" /> </wsrm:RMAssertion>
Rozszerzenie komunikatów sterowania przepływem WS-Reliable
WCF używa rozszerzalności komunikatów WS-Reliable, aby zapewnić opcjonalnie dodatkową, bardziej ścisłą kontrolę nad ruchem komunikatów sekwencji.
Sterowanie przepływem jest włączone przez ustawienie ReliableSessionBindingElement.FlowControlEnabled właściwości na true. Poniżej znajduje się lista ograniczeń, które mają zastosowanie do programu WCF:
B4001: Po włączeniu niezawodnego sterowania przepływem wiadomości, program WCF generuje element
netrm:BufferRemainingw rozszerzalności nagłówkaSequenceAcknowledgement.B4002: Po włączeniu sterowania przepływem dla niezawodnej obsługi komunikatów WCF nie wymaga obecności elementu
netrm:BufferRemainingw nagłówkuSequenceAcknowledgement, jak pokazano w poniższym przykładzie.<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 używa
netrm:BufferRemainingdo wskazania, ile nowych komunikatów może buforować miejsce docelowe w usłudze Reliable Messaging.B4004: Usługa WCF Reliable Messaging ogranicza liczbę komunikatów przesyłanych, gdy aplikacja docelowa Reliable Messaging nie może szybko odbierać komunikatów. Miejsce docelowe niezawodnego przesyłania wiadomości buforuje wiadomości, a wartość elementu spada do 0.
B4005: WCF generuje
netrm:BufferRemainingwartości całkowite z zakresu od 0 do 4096 włącznie i odczytuje wartości całkowite z zakresu od 0 doxs:intwartościmaxInclusive214748364 włącznie.
Wzorce wymiany komunikatów
W tej sekcji opisano zachowanie usługi WCF, gdy używane jest WS-Reliable Messaging dla różnych wzorców wymiany komunikatów. Dla każdego wzorca wymiany komunikatów są brane pod uwagę następujące dwa scenariusze wdrażania:
Nieadresowalny inicjator: Inicjator znajduje się za zaporą; Responder może dostarczać komunikaty do inicjatora tylko w odpowiedziach HTTP.
Adresowalny inicjator: inicjator i obiekt odpowiadający mogą wysyłać żądania HTTP; innymi słowy, można ustanowić dwa odwrotne połączenia HTTP.
Jednokierunkowy nieadresowalny inicjator
Wiążący
WCF zapewnia jednokierunkowy wzorzec wymiany komunikatów przy użyciu jednej sekwencji za pośrednictwem jednego kanału HTTP. Program WCF używa żądań HTTP do przesyłania wszystkich komunikatów z usługi RMS do usługi RMD i odpowiedzi HTTP w celu przesyłania wszystkich komunikatów z usługi RMD do usługi RMS.
CreateSequence Exchange
Inicjator WCF generuje CreateSequence komunikat bez oferty. Obiekt odpowiadający WCF zapewnia, że CreateSequence nie ma oferty przed utworzeniem sekwencji. Responder WCF odpowiada na żądanie CreateSequence komunikatem CreateSequenceResponse.
Potwierdzenie Sekwencji
Inicjator WCF przetwarza potwierdzenia odpowiedzi wszystkich komunikatów z wyjątkiem komunikatów CreateSequence i komunikatów o błędach. Generator WCF zawsze generuje niezależne potwierdzenie w odpowiedzi zarówno na sekwencję, jak i komunikaty AckRequested.
Komunikat TerminateSequence
WCF traktuje TerminateSequence jako jednokierunkową operację, co oznacza, że odpowiedź HTTP ma pustą treść i kod stanu HTTP 202.
Jednokierunkowy, adresowalny inicjator
Wiążący
Program WCF zapewnia jednokierunkowy wzorzec wymiany komunikatów przy użyciu jednej sekwencji dla ruchu przychodzącego i wychodzącego kanału HTTP. Program WCF używa żądań HTTP do przesyłania wszystkich komunikatów. Wszystkie odpowiedzi HTTP mają pustą treść i kod stanu HTTP 202.
CreateSequence Exchange
Inicjator WCF generuje CreateSequence komunikat bez oferty. Responder WCF zapewnia, że CreateSequence nie zawiera żadnej oferty przed utworzeniem sekwencji. Responder WCF przesyła wiadomość CreateSequenceResponse w żądaniu HTTP z odniesieniem do punktu końcowego ReplyTo.
Dwupoziomowy, adresowalny inicjator
Wiążący
Program WCF zapewnia w pełni asynchroniczny wzorzec wymiany komunikatów dwukierunkowych przy użyciu dwóch sekwencji dla ruchu przychodzącego i wychodzącego kanału HTTP. Program WCF używa żądań HTTP do przesyłania wszystkich komunikatów. Wszystkie odpowiedzi HTTP mają pustą treść i kod stanu HTTP 202.
CreateSequence Exchange
Inicjator WCF generuje CreateSequence komunikat z ofertą. Odpowiedź WCF zapewnia, że CreateSequence ma ofertę przed utworzeniem sekwencji. WCF wysyła CreateSequenceResponse w żądaniu HTTP skierowanym do odwołania do punktu końcowego CreateSequenceReplyTo.
Okres istnienia sekwencji
Program WCF traktuje dwie sekwencje jako jedną dwudupleksową sesję.
Generując błąd, który powoduje awarię jednej z sekwencji, program WCF oczekuje, że zdalny punkt końcowy uszkodzi obie sekwencje. Podczas odczytywania błędu, który powoduje uszkodzenie jednej sekwencji, WCF powoduje uszkodzenie obu sekwencji.
Program WCF może zamknąć sekwencję ruchu wychodzącego i kontynuować przetwarzanie komunikatów w sekwencji ruchu przychodzącego. Z drugiej strony program WCF może przetworzyć zamknięcie sekwencji ruchu przychodzącego i kontynuować wysyłanie komunikatów w sekwencji ruchu wychodzącego.
Żądanie-odpowiedź, inicjator nieadresowalny
Wiążący
WCF zapewnia wzorce wymiany komunikatów jednokierunkowych i żądań-odpowiedzi przy użyciu dwóch sekwencji za pośrednictwem jednego kanału HTTP. Program WCF używa żądań HTTP do przesyłania komunikatów sekwencji żądań i używa odpowiedzi HTTP do przesyłania komunikatów sekwencji odpowiedzi.
CreateSequence Exchange
Inicjator WCF generuje CreateSequence komunikat z ofertą. Odpowiedź WCF zapewnia, że CreateSequence ma ofertę przed utworzeniem sekwencji. Responder WCF odpowiada na żądanie CreateSequence komunikatem CreateSequenceResponse.
Jednokierunkowa wiadomość
Aby pomyślnie ukończyć jednokierunkowy protokół wymiany komunikatów, inicjator WCF przesyła komunikat sekwencji żądań w żądaniu HTTP i odbiera autonomiczny komunikat SequenceAcknowledgement w odpowiedzi HTTP. Element SequenceAcknowledgement musi potwierdzić przesłaną wiadomość.
Osoba odpowiadająca WCF może odpowiedzieć na żądanie z potwierdzeniem, błędem lub odpowiedzią z pustą treścią i kodem stanu HTTP 202.
Komunikaty dwukierunkowe
Aby pomyślnie ukończyć dwukierunkowy protokół wymiany komunikatów, inicjator WCF przesyła komunikat sekwencji żądań w żądaniu HTTP i odbiera komunikat sekwencji odpowiedzi w odpowiedzi HTTP. Odpowiedź musi zawierać SequenceAcknowledgement jako potwierdzenie przesłania wiadomości w sekwencji żądań.
Osoba odpowiadająca WCF może odpowiedzieć na żądanie za pomocą odpowiedzi aplikacji, błędu lub odpowiedzi z pustą treścią i kodem stanu HTTP 202.
Ze względu na obecność komunikatów jednokierunkowych i moment odpowiedzi aplikacji numer sekwencji komunikatu żądania i numer sekwencji komunikatu odpowiedzi nie mają korelacji.
Ponawianie odpowiedzi
WCF opiera się na korelacji http request-reply dla dwukierunkowej korelacji protokołu wymiany komunikatów. Z tego powodu inicjator WCF nie przestaje ponawiać próby wysyłania komunikatu sekwencji żądań, gdy komunikat sekwencji jest potwierdzany, lecz dopiero wtedy, gdy odpowiedź HTTP zawiera potwierdzenie, komunikat użytkowy lub błąd. Obiekt odpowiadający WCF ponawia próbę odpowiedzi na część żądania HTTP, z którym odpowiedź jest skorelowana.
LastMessage Exchange
Inicjator WCF generuje i przesyła ostatni komunikat o pustej treści w ramach żądania HTTP. Program WCF wymaga odpowiedzi, ale ignoruje rzeczywisty komunikat odpowiedzi. Obiekt odpowiadający WCF odpowiada na ostatnią pustą wiadomość sekwencji żądań ostatnią pustą wiadomością sekwencji odpowiedzi.
Jeśli obiekt odpowiadający WCF otrzyma ostatni komunikat, w którym identyfikator URI akcji nie jest http://schemas.xmlsoap.org/ws/2005/02/rm/LastMessage, WCF odpowiada ostatnim komunikatem. W przypadku dwukierunkowego protokołu wymiany komunikatów ostatni komunikat przenosi komunikat aplikacji; w przypadku jednokierunkowego protokołu wymiany komunikatów ostatnia wiadomość jest pusta.
Reagujący WCF nie wymaga potwierdzenia dla ostatniej wiadomości w sekwencji odpowiedzi, która ma pustą treść.
TerminateSequence Exchange
Gdy wszystkie żądania otrzymały prawidłową odpowiedź, inicjator WCF generuje i przesyła komunikat sekwencji żądań TerminateSequence w nodze żądania HTTP. Program WCF wymaga odpowiedzi, ale ignoruje rzeczywisty komunikat odpowiedzi. The WCF Responder odpowiada na komunikat sekwencji żądań TerminateSequence, wysyłając komunikat sekwencji odpowiedzi TerminateSequence.
Podczas normalnej sekwencji zamykania oba komunikaty TerminateSequence niosą pełny zakres SequenceAcknowledgement.
Żądanie/odpowiedź, adresowalny inicjator
Wiążący
WCF zapewnia wzorzec wymiany komunikatów typu żądanie-odpowiedź, wykorzystując dwie sekwencje na odpowiednich dla nich kanałach HTTP — przychodzących i wychodzących. Program WCF używa żądań HTTP do przesyłania wszystkich komunikatów. Wszystkie odpowiedzi HTTP mają pustą treść i kod stanu HTTP 202.
CreateSequence Exchange
Inicjator WCF generuje CreateSequence komunikat z ofertą. Odpowiedź WCF zapewnia, że CreateSequence ma ofertę przed utworzeniem sekwencji. WCF wysyła CreateSequenceResponse w żądaniu HTTP skierowanym do odwołania do punktu końcowego CreateSequenceReplyTo.
Korelacja żądań/odpowiedzi
Inicjator WCF zapewnia, że wszystkie komunikaty żądań aplikacji mają MessageId i ReplyTo odwołanie do punktu końcowego. Inicjator WCF stosuje odwołanie do punktu końcowego komunikatu CreateSequenceReplyTo dla każdego komunikatu żądania aplikacji. Obiekt odpowiadający WCF wymaga, aby przychodzące komunikaty żądań zawierały MessageId oraz ReplyTo. Obiekt odpowiadający WCF zapewnia, że identyfikator URI odwołania do punktu końcowego dla elementu CreateSequence oraz wszystkich komunikatów żądań aplikacji są identyczne.