2011-09-18 14 views
6

Sto avendo 70-513 esami presto. C'è una domanda nella discarica che non capisco.WCF - IDuplexSessionRouter VS IRequestReplyRouter

Un servizio WCF implementa un contratto con operazioni di risposta unidirezionale e richiesta. Il servizio è esposto su un trasporto TCP. Il cliente utilizza un router per comunicare con il servizio.

La risposta diceva utilizzando IDuplexSessionRouter anziché IRequestReplyRouter. Posso sapere perché non può usare IRequestReplyRouter ??

risposta

3

Tale questione è coperto in questo articolo di MSDN: Building a router (cercare sezione ci "Router e Trasporti Sessions")

1

il servizio di routing utilizza contratti che definiscono la forma dei canali utilizzati per ricevere e inviare messaggi, e pertanto la forma del canale di ingresso deve corrispondere a quella del canale di uscita.

Pertanto, se si esegue il routing su endpoint che utilizzano la forma del canale richiesta-risposta, è necessario utilizzare un contratto compatibile sugli endpoint in entrata, ad esempio IRequestReplyRouter.

Ciò significa che se gli endpoint di destinazione utilizzano contratti con più modelli di comunicazione (come il mix di operazioni unidirezionali e bidirezionali) non è possibile creare un singolo endpoint del servizio che può ricevere e indirizzare i messaggi a tutti loro. Una soluzione alternativa consiste nell'utilizzare un contratto duplex nel servizio di routing come IDuplexSessionRouter.

Riferimenti:

http://msdn.microsoft.com/en-us/magazine/cc546553.aspx

http://msdn.microsoft.com/en-us/library/ee517422.aspx

+2

fare attenzione quando la pubblicazione copia ed incolla boilerplate/risposte letterali a più domande, queste tendono ad essere contrassegnato come "spam" dalla comunità. Se lo fai, in genere significa che le domande sono doppie, quindi contrassegnali come tali. http://stackoverflow.com/questions/10911344 – Kev