WCF与二进制TCP的使用

6

WCF二进制传输选项,它只适用于局域网还是互联网也可以使用?

TCP只适用于局域网吗?


你想通过切换到TCP实现什么目标?可能有其他选择(甚至更好的选择)可以避免打开漏洞。 - Marc Gravell
@Marc - 我只是想了解和探索可用选项。我知道并一直在使用HTTP。现在正在尝试了解其他选项(如TCP),以及它们的优缺点。 - user274915
2个回答

3
序列化器和传输通常是无关的。有预配置的绑定用于常见情况,但我的理解是您可以将二进制序列化器(NetDataContractSerializer)插入任何传输中。或者编写自己的;-p 然而,与纯HTTP相比,不同的传输可能更难配置(防火墙等)。
请参见此处(尽管我会质疑速度声明;我曾在某些场合看到过NetDataContractSerializer被折磨......)
关于评论-不太关注传输(我怀疑最好使用http),但请考虑这个这个。另一种二进制序列化器,非常适合发送某些类型的消息。它也可以与MTOM(通过http)很好地配合使用。

谢谢Marc。除了HTTP协议之外,您有任何参考资料可以提供关于其他协议的限制吗?我需要了解是否可以在互联网上使用其他协议?如果可能的话,需要什么(打开端口等)? - user274915
@jobless-spt:添加了一些链接。 - Marc Gravell
+1,通过HTTP进行二进制传输是一个不错的折中方案。它保留了在IIS中托管服务的能力(我已经不记得上一次自己编写WCF主机是什么时候了),并且它对防火墙友好。如果您不经常流式传输块或聊天,则HTTP开销可能非常低。 - Josh

2
答案是:这取决于具体情况。据我所知,WCF的二进制编码需要两个端点都是WCF端点(这将限制你只能在Windows上使用,除非/直到Mono支持二进制编码)。另一个问题是您是否可以访问远程服务器正在侦听的端口。将服务运行在HTTP上变得如此流行的原因之一是端口80更容易打开。

+1 确切无误 - 理论上应该完全没问题 - 但它是 TCP - 不是 HTTP - 所以请预期防火墙问题,并且您的另一端也必须使用相同的 TCP/IP 绑定和二进制编码进行通信,因此只有在您真正控制通信的两端时才有用。 - marc_s
谢谢。所以根据您的说法,如果我打开434端口(或TCP的任何其他端口),我应该能够通过互联网访问它?还是我需要设置客户端的VPN隧道? - user274915
@jobless-spt - 要访问远程端口所需的操作将根据网络安全配置而大不相同。您需要与当地的IT/Sec人员交谈以解决这个问题。但请注意,安全人员可能会非常不愿意向外部网络公开额外的端口;如果他们不这样做,您可能需要新的安全人员。 - Matt McClellan

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