首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >双工回调的WSDualHttpBinding

双工回调的WSDualHttpBinding
EN

Stack Overflow用户
提问于 2008-09-12 18:18:37
回答 2查看 16.8K关注 0票数 10

在真实场景中使用WSDualHttpBinding进行双工回调可以吗?比方说,我有一个使用随机端口的.NET应用程序,该服务是否能够解析客户端的基地址和回调端口?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-08-08 10:07:23

对您的问题的完整回答取决于“真实世界方案”是Intranet还是Internet方案。虽然WSDualHttpBinding在这两种情况下都可以工作,但有一些细节需要注意:

内部网

在Intranet方案中,WSDualHttpBinding将使用预配置的自定义端口与您的.NET应用程序一起工作,并且“是”该服务将能够为回调解析客户端的基地址和端口:具体方式如下所述。下面解释的原因是,WSDualHttpBinding主要是为互联网使用而设计的。

当您可以在客户端和服务器上使用WCF时,最好使用NetTcpBinding或NetNamedPipeBinding来实现内部网方案中的双工回调。这些绑定分别使用TCP和ICP作为传输(而不是HTTP)和自定义二进制编码,这就是为什么两端都需要WCF的原因。对于客户端回调,将重用用于通过绑定连接到服务的相同通道,而无需打开新端口。

互联网

在Internet场景中,有效的HTTP请求和响应只在一个方向上传输,HTTP被设计为单向协议。因此,当使用HTTP时,会为回调创建一个单独的WSDualHttpBinding通道。回答您的第二个问题:默认情况下,客户端回调的目标地址由客户机主机名和端口80组成。例如,如果客户端是一台开发机器,并且安装了IIS,则端口80在某些情况下将被独占保留,这将导致与您的原型应用程序冲突。这就是this blog post提供的解决方案,也是ClientBaseAddress属性的设计目的。无论您使用的端口是默认端口还是自定义端口,都必须确保两端的所有防火墙和路由器都配置正确,以允许建立传出通道和单独的回叫通道。

.NET应用程序也可以表示Silverlight应用程序。由于在浏览器中运行的Silverlight应用程序不能接受新的传入HTTP连接,因此带有独立反向通道的WSDualHttpBinding将无法工作。因此,PollingDuplexHttpBinding首先是在Silverlight2中创建的,这可以被认为是一个聪明的“技巧”,通过长时间(长轮询)保持请求通道的开放,并将其用作回调客户端的回调通道,来绕过HTTP是单向的事实。这对客户端和服务器端都有许多影响,特别是与伸缩相关的,有关更多详细信息,请参阅this post from my blog

了解了你特定的“现实世界场景”和你的用例,希望这能帮助你找出正确的绑定来用于双工回调。

票数 35
EN

Stack Overflow用户

发布于 2008-09-12 19:08:02

如果它是防火墙后的应用程序,理论上是可以的。这取决于您所说的“真实世界”是什么意思;如果您所指的是“高性能”,也许NetTcpBinding是一个更好的应用程序。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59677

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档