【问题标题】:WCF with Binary over TCPWCF 与基于 TCP 的二进制文件
【发布时间】:2010-03-15 16:27:06
【问题描述】:

WCF Binary over TCP 选项,它是否也仅适用于 Intranet 或 Internet?

TCP 是否只适用于 Intranet?

【问题讨论】:

  • 你想通过切换到 TCP 来完成什么?可能还有其他(甚至更好)不涉及开孔的选项。
  • @Marc - 我只是想了解和探索可用的选项。我知道并且一直在使用 HTTP。尝试了解其他选项(目前为 TCP),以及它们的优缺点。

标签: c# asp.net wcf tcp


【解决方案1】:

序列化程序和传输在很大程度上是不相关的。有针对常见场景的预配置绑定,但我的理解是您可以将二进制序列化程序 (NetDataContractSerializer) 插入任何传输。或者自己写;-p

但是 - 一个不同的传输 可能比普通 HTTP 更难配置(防火墙等)。

See here(虽然我会对速度声明提出异议;我曾见过NetDataContractSerializer 殴打...)


重新评论 - 与其说是 transport(我怀疑你最好还是使用 http),但请考虑 thisthis。另一种二进制序列化器,非常适合发送某些类型的消息。它也可以与 MTOM(通过 http)很好地配合。

【讨论】:

  • 谢谢马克。您是否可以提供任何关于 HTTP 以外的协议限制的参考资料。我需要了解,我们是否可以通过互联网使用其他协议?如果可能的话,这样做需要什么(开放端口等)?
  • @jobless-spt : 添加了一些链接
  • +1,Binary over HTTP 是一个很好的折衷方案。它保留了在 IIS 中托管服务的能力(我不能告诉你上次我费心编写自己的 WCF 主机是什么时候)并且它对防火墙友好。如果您不流式传输数据块或不经常聊天,那么 HTTP 开销可能非常低。
【解决方案2】:

答案是:视情况而定。据我所知,WCF 的二进制编码要求两个端点都是 WCF 端点(目前这会将您限制在 Windows 中,除非/直到 Mono 支持二进制编码)。另一个问题是您是否可以访问远程服务器正在侦听的端口。通过 HTTP 运行服务变得如此流行的原因之一是 80 端口更容易被打开。

【讨论】:

  • +1 完全正确 - 理论上,它应该可以正常工作 - 但它是 TCP - 不是 HTTP - 所以期待防火墙问题,并且您的另一端也必须使用二进制编码进行相同的 tcp/ip 绑定,所以它只有在你控制通信的两端时才有用,真的。
  • 谢谢。所以根据你的说法,如果我打开端口 434(或者 TCP 端口),我应该能够通过互联网访问它吗?还是我需要用客户端设置 VPN 隧道?
  • @jobless-spt - 访问远程端口所需执行的操作会因网络的安全配置而异。您需要与当地的 IT/Sec 人员交谈才能解决问题。但是请注意,安全人员可能非常不愿意将额外的端口暴露给外部网络;如果不是,您可能需要新的安全人员。
猜你喜欢
  • 2012-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-02
  • 2015-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多