Protocollo Reliable Messaging versione 1.0
Questo argomento illustra i dettagli di implementazione di Windows Communication Foundation (WCF) per il protocollo WS-Reliable Messaging di febbraio 2005 (versione 1.0) necessario per l'interoperabilità con utilizzo del trasporto HTTP. WCF segue la specifica WS-Reliable Messaging con i vincoli e i chiarimenti illustrati in questo argomento. Tenere presente che il protocollo WS-ReliableMessaging versione 1.0 viene implementato a partire da WinFX.
Il protocollo WS-Reliable Messaging di febbraio 2005 viene implementato in WCF da ReliableSessionBindingElement.
Per comodità, nell'argomento vengono utilizzati i ruoli seguenti:
Iniziatore: il client che avvia la creazione della sequenza di WS-Reliable Message.
Risponditore: il servizio che riceve le richieste dell'iniziatore.
In questo documento vengono utilizzati i prefissi e gli spazi dei nomi riportati nella tabella seguente.
Prefisso | Spazio dei nomi |
---|---|
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 |
Messaggistica
Messaggi di definizione sequenza
WCF implementa i messaggi CreateSequence
e CreateSequenceResponse
per stabilire una sequenza di messaggi affidabile. Si applicano i vincoli seguenti:
B1101: l'iniziatore WCF non genera l'elemento facoltativo Expires nel messaggio
CreateSequence
o, nei casi in cui il messaggioCreateSequence
contiene un elementoOffer
, l'elementoExpires
facoltativo nell'elementoOffer
.B1102: quando si accede al messaggio
CreateSequence
, il WCFResponder
invia e riceve entrambi gli elementiExpires
, se esistenti, ma non ne usa i valori.
Con il protocollo WS-ReliableMessaging viene introdotto il meccanismo Offer
che consente di stabilire le due sequenze correlate opposte che formano una sessione.
R1103: se
CreateSequence
contiene un elementoOffer
, il risponditore Reliable Messaging deve accettare la sequenza e rispondere conCreateSequenceResponse
contenente un elementowsrm:Accept
, formando due sequenze correlate opposte, oppure rifiutare la richiestaCreateSequence
.R1104: i messaggi
SequenceAcknowledgement
e dell'applicazione in transito sulla sequenza opposta devono essere inviati al riferimento endpointReplyTo
diCreateSequence
.R1105: i riferimenti endpoint
AcksTo
eReplyTo
inCreateSequence
devono presentare valori indirizzo che corrispondano all'ottetto.Il risponditore WCF verifica che la parte URI degli EPR
AcksTo
eReplyTo
sia identica prima di creare una sequenza.R1106: i riferimenti endpoint
AcksTo
eReplyTo
inCreateSequence
devono avere lo stesso set di parametri per riferimento.WCF non applica ma presuppone che [parametri di riferimento] di
AcksTo
eReplyTo
suCreateSequence
siano identici e usa [parametri di riferimento] del riferimento dell'endpointReplyTo
per i riconoscimenti e i messaggi di sequenza inversa.R1107: quando vengono stabilite due sequenze opposte tramite il meccanismo
Offer
, i messaggi dell'applicazione eSequenceAcknowledgement
in transito sulle sequenze opposte devono essere inviati al riferimento all'endpointReplyTo
diCreateSequence
.R1108: quando vengono stabilite due sequenze opposte mediante il meccanismo Offer, la proprietà
[address]
dell'elemento figlio del riferimento endpointwsrm:AcksTo
dell'elementowsrm:Accept
diCreateSequenceResponse
deve corrispondere per numero di byte all'URI di destinazione diCreateSequence
.R1109: quando vengono stabilite due sequenze opposte tramite il meccanismo
Offer
, i messaggi inviati dall'iniziatore e gli acknowledgement a tali messaggi da parte del risponditore devono essere inviati allo stesso riferimento all'endpoint.WCF utilizza WS-Reliable Messaging per stabilire sessioni affidabili tra l'iniziatore e il risponditore. L'implementazione di WS-Reliable Messaging di WCF offre una sessione affidabile per modelli di messaggistica unidirezionale, richiesta-risposta e full duplex. Il meccanismo
Offer
di WS-Reliable Messaging suCreateSequence
/CreateSequenceResponse
consente di stabilire due sequenze inverse correlate e offre un protocollo di sessione adatto a tutti gli endpoint dei messaggi. Poiché WCF fornisce una garanzia di sicurezza per tale sessione, inclusa la protezione end-to-end per l'integrità della sessione stessa, è opportuno garantire che i messaggi destinati alla stessa entità arrivino alla stessa destinazione. Ciò consente anche il "piggy-backing" degli acknowledgement della sequenza sui messaggi dell'applicazione. A WCF si applicano pertanto i vincoli R1104, R1105 e R1108.
Esempio di un messaggio 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>
Esempio di un messaggio 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
Di seguito è riportato un elenco di vincoli che si applicano alle sequenze:
B1201: WCF genera e accede a numeri di sequenza non superiori al valore inclusivo massimo di
xs:long
, 9223372036854775807.B1202: WCF genera sempre un ultimo messaggio con corpo vuoto con l'URI dell'azione di
http://schemas.xmlsoap.org/ws/2005/02/rm/LastMessage
.B1203: WCF riceve e recapita un messaggio con un'intestazione di sequenza che contiene un elemento
LastMessage
purché l'URI dell'azione non siahttp://schemas.xmlsoap.org/ws/2005/02/rm/LastMessage
.
Esempio di intestazione di sequenza.
<wsrm:Sequence>
<wsrm:Identifier>
urn:uuid:addabbbf-60cb-44d3-8c5b-9e0841629a36
</wsrm:Identifier>
<wsrm:MessageNumber>
10
</wsrm:MessageNumber>
<wsrm:LastMessage/>
</wsrm:Sequence>
Intestazione AckRequested
WCF utilizza l'intestazioneAckRequested
come meccanismo keep-alive. WCF non genera l'elemento MessageNumber
facoltativo. Quando si riceve un messaggio con un'intestazione AckRequested
che contiene l'elemento MessageNumber
, WCF ignora il valore MessageNumber
dell'elemento, come illustrato nell'esempio seguente.
<wsrm:AckRequested>
<wsrm:Identifier>
urn:uuid:addabbbf-60cb-44d3-8c5b-9e0841629a36
</wsrm:Identifier>
</wsrm:AckRequested>
Intestazione SequenceAcknowledgement
WCF utilizza il meccanismo piggy-back per i riconoscimenti della sequenza forniti in WS-Reliable Messaging.
R1401: quando vengono stabilite due sequenze opposte utilizzando il meccanismo
Offer
, l'intestazioneSequenceAcknowledgement
può essere inclusa in qualsiasi messaggio dell'applicazione trasmesso al destinatario desiderato.B1402: quando WCF deve generare un riconoscimento prima di ricevere qualsiasi messaggio di sequenza (ad esempio, per soddisfare un messaggio
AckRequested
), WCF genera un'intestazioneSequenceAcknowledgement
che contiene l'intervallo 0-0, come illustrato nell'esempio seguente.<wsrm:SequenceAcknowledgement> <wsrm:Identifier> urn:uuid:addabbbf-60cb-44d3-8c5b-9e0841629a36 </wsrm:Identifier> <wsrm:AcknowledgementRange Upper="0" Lower="0"/> </wsrm:SequenceAcknowledgement>
B1403: WCF non genera intestazioni
SequenceAcknowledgement
che contengono un elementoNack
ma supporta elementiNack
.
Errori WS-ReliableMessaging
Di seguito è riportato un elenco di vincoli che si applicano all'implementazione WCF degli errori di WS-Reliable Messaging:
B1501: WCF non genera errori
MessageNumberRollover
.B1502: l'endpoint WCF può generare errori
CreateSequenceRefused
come descritto nella specifica.B1503: quando l'endpoint di servizio raggiunge il limite di connessione e non è in grado di elaborare nuove connessioni, WCF genera un sottocodice aggiuntivo dell'errore
CreateSequenceRefused
,netrm:ConnectionLimitReached
, come illustrato nell'esempio seguente.<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>
Errori WS-Addressing
Poiché WS-Reliable Messaging utilizza WS-Addressing, l'implementazione di WCF WS-Reliable Messaging può generare errori WS-Addressing. Questa sezione tratta gli errori WS-Addressing generati in modo esplicito da WCF a livello di WS-Reliable Messaging:
B1601: WCF genera l'errore Intestazione di indirizzamento messaggi richiesta quando si verifica una delle condizioni seguenti:
In un messaggio mancano un'intestazione
Sequence
e un'intestazioneAction
.In un messaggio
CreateSequence
manca un'intestazioneMessageId
.In un messaggio
CreateSequence
manca un'intestazioneReplyTo
.
B1602: WCF genera l'errore Azione non supportata in risposta a un messaggio in cui manca un'intestazione
Sequence
e presenta un'intestazioneAction
che non è riconosciuta nella specifica WS-Reliable Messaging.B1603: WCF genera l'errore Endpoint non disponibile per indicare che l'endpoint non elabora la sequenza in base all'esame delle intestazioni di indirizzamento del messaggio
CreateSequence
.
Composizione del protocollo
Composizione con WS-Addressing
WCF supporta due versioni di WS-Addressing: WS-Addressing 2004/08 [WS-ADDR] e W3C WS-Addressing 1.0 Elementi consigliati [WS-ADDR-CORE] e [WS-ADDR-SOAP].
Anche se la specifica WS-Reliable Messaging menziona solo WS-Addressing 2004/08, non limita la versione WS-Addressing da utilizzare. Di seguito è riportato un elenco di vincoli che si applicano a WCF:
R2101: sia WS-Addressing 2004/08 che WS-Addressing 1.0 possono essere utilizzati con WS-Reliable Messaging.
R2102: è necessario utilizzare una singola versione di WS-Addressing in una determinata sequenza di WS-Reliable Messaging o in una coppia di sequenze inverse correlate utilizzando il meccanismo
wsrm:Offer
.
Composizione con SOAP
WCF supporta l'uso di SOAP 1.1 e SOAP 1.2 con WS-Reliable Messaging.
Composizione con WS-Security e WS-SecureConversation
WCF fornisce protezione per le sequenze di WS-Reliable Messaging utilizzando trasporto sicuro (HTTPS), composizione con WS-Security e composizione con WS-Secure Conversation. Di seguito è riportato un elenco di vincoli che si applicano a WCF:
R2301: per proteggere l'integrità di una sequenza di WS-Reliable Messaging oltre all'integrità e alla riservatezza dei singoli messaggi, WCF richiede l'utilizzo di WS-Secure Conversation.
R2302: prima di stabilire sequenze di WS-Reliable Messaging, è necessario stabilire una sessione WS-SecureConversation.
R2303: se la durata della sequenza di WS-Reliable Messaging supera la durata della sessione WS-SecureConversation, è necessario rinnovare il
SecurityContextToken
stabilito tramite WS-SecureConversation utilizzando l'associazione WS-Secure Conversation Renewal corrispondente.B2304: la sequenza di WS-Reliable Messaging o una coppia di sequenze inverse correlate sono sempre associate a una singola sessione WS-SecureConversation.
L'origine WCF genera l'elemento
wsse:SecurityTokenReference
nella sezione di estendibilità dell'elemento del messaggioCreateSequence
.R2305: se composto con WS-Secure Conversation, un messaggio
CreateSequence
deve contenere l'elementowsse:SecurityTokenReference
.
Asserzione di WS-Policy relativa a WS-Reliable Messaging
WCF usa la WS-Policy Assertion wsrm:RMAssertion
di WS-Reliable Messaging per descrivere le funzionalità degli endpoint. Di seguito è riportato un elenco di vincoli che si applicano a WCF:
B3001: WCF allega la WS-Policy Assertion
wsrm:RMAssertion
agli elementiwsdl:binding
. WCF supporta sia gli allegati awsdl:binding
che gli elementiwsdl:port
.B3002: WCF supporta le seguenti proprietà facoltative dell'asserzione WS-Reliable Messaging e ne fornisce il controllo sul WCF
ReliableMessagingBindingElement
:wsrm:InactivityTimeout
wsrm:AcknowledgementInterval
Di seguito viene riportato un esempio.
<wsrm:RMAssertion> <wsrm:InactivityTimeout Milliseconds="600000" /> <wsrm:AcknowledgementInterval Milliseconds="200" /> </wsrm:RMAssertion>
Estensione di WS-Reliable Messaging per il controllo del flusso
WCF utilizza l'estendibilità di WS-Reliable Messaging per fornire un controllo aggiuntivo facoltativo più rigoroso sul flusso di messaggi della sequenza.
Il controllo del flusso è abilitato impostando la proprietà ReliableSessionBindingElement.FlowControlEnabled su true
. Di seguito è riportato un elenco di vincoli che si applicano a WCF:
B4001: quando il controllo del flusso di Reliable Messaging è abilitato, WCF genera un elemento
netrm:BufferRemaining
nell'estendibilità dell'elemento dell'intestazioneSequenceAcknowledgement
.B4002: quando il controllo del flusso di Reliable Messaging è abilitato, WCF non richiede la presenza di un elemento
netrm:BufferRemaining
nell'intestazioneSequenceAcknowledgement
, come illustrato nell'esempio seguente.<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 utilizza
netrm:BufferRemaining
per indicare quanti nuovi messaggi la destinazione di Reliable Messaging può memorizzare nel buffer.B4004: il servizio WCF Reliable Messaging limita il numero di messaggi trasmessi quando l'applicazione di destinazione di Reliable Messaging non può ricevere messaggi rapidamente. La destinazione Reliable Messaging memorizza nel buffer messaggi e il valore dell'elemento scende a 0.
B4005: WCF genera valori interi
netrm:BufferRemaining
compresi tra 0 e 4096 inclusi e legge valori interi compresi tra 0 e il valoremaxInclusive
dixs:int
, incluso 214748364.
Modelli di scambio dei messaggi
In questa sezione viene descritto il comportamento di WCF quando WS-Reliable Messaging viene utilizzato per diversi modelli di scambio di messaggi. Per ogni modello di scambio di messaggi, vengono presi in considerazione i due scenari di distribuzione seguenti:
Iniziatore non indirizzabile: l'iniziatore si trova dietro a un firewall; il risponditore può recapitare messaggi all'iniziatore solo su risposte HTTP.
Iniziatore indirizzabile: le richieste HTTP possono essere inviate sia all'iniziatore che al risponditore. In altre parole, è possibile stabilire due connessioni HTTP opposte.
Iniziatore unidirezionale, non indirizzabile
Binding
WCF fornisce un modello di scambio di messaggi unidirezionale utilizzando una sequenza su un canale HTTP. WCF utilizza le richieste HTTP per trasmettere tutti i messaggi da RMS a RMD e la risposta HTTP per trasmettere tutti i messaggi da RMD a RMS.
Scambio CreateSequence
L'iniziatore WCF genera un messaggio CreateSequence
senza offerta. Il risponditore WCF garantisce che CreateSequence
non abbia offerte prima di creare una sequenza. Il risponditore WCF risponde alla richiesta CreateSequence
con un messaggio CreateSequenceResponse
.
SequenceAcknowledgement
L'iniziatore WCF elabora i riconoscimenti sulla risposta di tutti i messaggi tranne il messaggio CreateSequence
e i messaggi di errore. Il risponditore WCF genera sempre un riconoscimento indipendente nella risposta sia ai messaggi di sequenza che a quelli AckRequested
.
Messaggio TerminateSequence
WCF tratta TerminateSequence
come operazione unidirezionale, il che significa che la risposta HTTP ha un corpo vuoto e un codice di stato HTTP 202.
Iniziatore unidirezionale, indirizzabile
Binding
WCF fornisce un modello di scambio di messaggi unidirezionale usando una sequenza su un canale HTTP in entrata e su uno in uscita. WCF utilizza le richieste HTTP per trasmettere tutti i messaggi. Tutte le risposte HTTP hanno un corpo vuoto e un codice di stato HTTP 202.
Scambio CreateSequence
L'iniziatore WCF genera un messaggio CreateSequence
senza offerta. Il risponditore WCF garantisce che CreateSequence
non abbia offerte prima di creare una sequenza. Il risponditore WCF trasmette il messaggio CreateSequenceResponse
su una richiesta HTTP indirizzata con il riferimento dell'endpoint ReplyTo
.
Iniziatore duplex, indirizzabile
Binding
WCF fornisce un modello di scambio di messaggi bidirezionale completamente asincrono usando due sequenze su un canale HTTP in entrata e su uno in uscita. WCF utilizza le richieste HTTP per trasmettere tutti i messaggi. Tutte le risposte HTTP hanno un corpo vuoto e un codice di stato HTTP 202.
Scambio CreateSequence
L'iniziatore WCF genera un messaggio CreateSequence
con un'offerta. Il risponditore WCF garantisce che CreateSequence
abbia un'offerta prima di creare una sequenza. WCF invia CreateSequenceResponse
sulla richiesta HTTP indirizzata al riferimento dell'endpoint ReplyTo
di CreateSequence
.
Durata della sequenza
WCF tratta le due sequenze come una sessione completamente duplex.
Quando si genera un errore che genera un errore in una sequenza, WCF prevede che l'endpoint remoto generi errori in entrambe le sequenze. Dopo la lettura di un errore che genera un errore in una sequenza, WCF genera errori in entrambe le sequenze.
WCF può chiudere la sua sequenza in uscita e continuare a elaborare i messaggi nella sua sequenza in entrata. Per contro, WCF può elaborare la chiusura della sequenza in entrata e continuare a inviare messaggi nella sua sequenza in uscita.
Iniziatore request/reply non indirizzabile
Binding
WCF fornisce un modello di scambio di messaggi unidirezionale e richiesta-risposta usando due sequenze su un canale HTTP. WCF utilizza le richieste HTTP per trasmettere i messaggi della sequenza di richiesta e utilizza le risposte HTTP per trasmettere i messaggi della sequenza di risposta.
Scambio CreateSequence
L'iniziatore WCF genera un messaggio CreateSequence
con un'offerta. Il risponditore WCF garantisce che CreateSequence
abbia un'offerta prima di creare una sequenza. Il risponditore WCF risponde alla richiesta CreateSequence
con un messaggio CreateSequenceResponse
.
Messaggio unidirezionale
Per completare correttamente un protocollo di scambio di messaggi unidirezionale, l'iniziatore WCF trasmette un messaggio di sequenza di richiesta sulla richiesta HTTP e riceve un messaggio indipendente SequenceAcknowledgement
sulla risposta HTTP. SequenceAcknowledgement
deve riconoscere il messaggio trasmesso.
Il risponditore WCF può rispondere alla richiesta con un riconoscimento, un errore o una risposta con un corpo vuoto e un codice di stato HTTP 202.
Messaggi bidirezionali
Per completare correttamente un protocollo di scambio di messaggi bidirezionale, l'iniziatore WCF trasmette un messaggio di sequenza di richiesta sulla richiesta HTTP e riceve un messaggio di sequenza di risposta sulla risposta HTTP. La risposta deve contenere un SequenceAcknowledgement
che riconosce che il messaggio della sequenza di richiesta è stato trasmesso.
Il risponditore WCF può rispondere alla richiesta con una risposta dell'applicazione, un errore o una risposta con un corpo vuoto e un codice di stato HTTP 202.
A causa della presenza di messaggi unidirezionali e del tempo delle risposte dell'applicazione, il numero di sequenza del messaggio della sequenza di richiesta e il numero di sequenza del messaggio di risposta non hanno alcuna correlazione.
Nuovi tentativi di risposte
WCF si basa sulla correlazione richiesta/risposta HTTP per la correlazione del protocollo di scambio di messaggi bidirezionale. Per questo motivo, l'iniziatore WCF non smette di ripetere un messaggio di sequenza di richiesta quando il messaggio di sequenza di richiesta viene riconosciuto, ma piuttosto quando la risposta HTTP contiene un riconoscimento, un messaggio utente o un errore. Il risponditore WCF ritenta le risposte sulla parte di richiesta HTTP della richiesta a cui è correlata la risposta.
Scambio LastMessage
L'iniziatore WCF genera e trasmette un ultimo messaggio a corpo vuoto sulla parte di richiesta HTTP. WCF richiede una risposta ma ignora il messaggio di risposta effettivo. Il risponditore WCF risponde all'ultimo messaggio con corpo vuoto di sequenza di richiesta con l'ultimo messaggio con corpo vuoto di sequenza di risposta.
Se il risponditore WCF riceve un ultimo messaggio in cui l'URI dell'azione non è http://schemas.xmlsoap.org/ws/2005/02/rm/LastMessage
, WCF risponde con un ultimo messaggio. Nel caso di un protocollo di scambio di messaggi bidirezionale, l'ultimo messaggio contiene il messaggio dell'applicazione; nel caso, invece, di un protocollo di scambio di messaggi unidirezionale, l'ultimo messaggio è vuoto.
Il risponditore WCF non richiede un riconoscimento per l'ultimo messaggio con corpo vuoto di sequenza di risposta.
Scambio TerminateSequence
Quando tutte le richieste hanno ricevuto una risposta valida, l'iniziatore WCF genera e trasmette il messaggio di sequenza di richiesta TerminateSequence
sulla parte di richiesta HTTP. WCF richiede una risposta ma ignora il messaggio di risposta effettivo. Il risponditore WCF risponde al messaggio di sequenza di richiesta TerminateSequence
con il messaggio di sequenza di risposta TerminateSequence
.
In una sequenza di arresto normale, entrambi i messaggi TerminateSequence
contengono un intervallo completo SequenceAcknowledgement
.
Iniziatore request/reply, indirizzabile
Binding
WCF fornisce un modello di scambio di messaggi di richiesta-risposta usando due sequenze su un canale HTTP in entrata e su uno in uscita. WCF utilizza le richieste HTTP per trasmettere tutti i messaggi. Tutte le risposte HTTP hanno un corpo vuoto e un codice di stato HTTP 202.
Scambio CreateSequence
L'iniziatore WCF genera un messaggio CreateSequence
con un'offerta. Il risponditore WCF garantisce che CreateSequence
abbia un'offerta prima di creare una sequenza. WCF invia CreateSequenceResponse
sulla richiesta HTTP indirizzata al riferimento dell'endpoint ReplyTo
di CreateSequence
.
Correlazione request/reply
L'iniziatore WCF garantisce che tutti i messaggi di richiesta dell'applicazione presentino un MessageId
e un riferimento dell'endpoint ReplyTo
. L'iniziatore WCF applica il riferimento dell'endpoint ReplyTo
del messaggio CreateSequence
su ogni messaggio di richiesta dell'applicazione. Il risponditore WCF richiede che i messaggi di richiesta in entrata presentino un MessageId
e un ReplyTo
. Il risponditore WCF garantisce che l'URI di riferimento dell'endpoint sia di CreateSequence
che di tutti i messaggi di richiesta dell'applicazione siano identici.