WCF - IDuplexSessionRouter与IRequestReplyRouter的区别

6

我很快就要参加70-513考试了。题库中有一道我不理解的问题。

一个WCF服务实现了一个具有单向和请求-回复操作的协定。该服务在TCP传输上公开。客户端使用路由器与服务通信。

答案说要使用IDuplexSessionRouter而不是IRequestReplyRouter。请问为什么不能使用IRequestReplyRouter?

2个回答

3
那个问题在这篇msdn文章中有详细介绍:构建路由器(在那里查找“路由器和传输会话”一节)。

1

路由服务使用定义通道形状的契约来接收和发送消息,因此输入通道的形状必须与输出通道的形状相匹配。

因此,如果您将路由应用于使用请求-响应通道形状的端点,则必须在入站端点上使用兼容的契约,例如IRequestReplyRouter。

这意味着,如果您的目标端点使用具有多个通信模式的契约(例如混合单向和双向操作),则无法创建一个可以接收和路由所有这些端点的单个服务端点。解决方法是在Routing Service中使用双工契约,例如IDuplexSessionRouter。

参考资料:

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

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


2
在回答多个问题时,小心复制和粘贴模板/原文答案,社区可能会将其标记为“垃圾邮件”。如果您这样做,那么通常意味着这些问题是重复的,因此请将它们标记为重复。http://stackoverflow.com/questions/10911344 - Kev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接