2010-03-15 75 views
6

WCF TCP上的二进制选项,是否仅适用于Intranet或Internet?WCF与TCP上的二进制文件

TCP是否仅适用于Intranet?

+0

你想通过切换到TCP完成*它是什么?可能还有其他(甚至可能更好)选项不涉及开放洞。 – 2010-03-15 16:49:23

+0

@Marc - 我只是想了解和探索可用的选项。我知道并且一直在使用HTTP。尝试了解其他选项(现在的TCP)以及它们的优缺点。 – user274915 2010-03-15 17:00:20

回答

2

答案是:这取决于。据我所知,WCF的二进制编码要求两个端点都是WCF端点(除非Mono支持二进制编码,否则目前限制您到Windows)。另一个问题是您是否可以访问远程服务器正在侦听的端口。通过HTTP运行服务的原因之一变得如此流行,因为80端口更像是开放的。

+0

准确地说 - 理论上,它应该工作得很好 - 但它是TCP - 不是HTTP - 所以期望防火墙问题,并且您的另一端也必须使用二进制编码谈论相同的tcp/ip绑定,所以它只在控制沟通的两端,真的。 – 2010-03-15 16:42:17

+0

谢谢。因此,如果我打开端口434(或任何TCP),我应该能够通过互联网访问它?或者我需要使用客户端设置VPN隧道? – user274915 2010-03-15 16:46:13

+0

@ jobless-spt - 根据网络的安全配置,访问远程端口需要做的事情会有很大的不同。您需要与您当地的IT/Sec人员进行交流,以便将其整理出来。但是,请注意,安全人员可能会非常不愿意将额外的端口暴露给外部网络;如果他们不是,你可能需要新的安全人员。 – 2010-03-16 13:59:14

3

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

然而 - 不同的传输配置(防火墙等)可能比纯HTTP更复杂。

See here;


回复评论(虽然我会反对的速度要求我见过NetDataContractSerializer偶尔...惨败) - 与其说是运输(我怀疑你”与http保持最佳关系),但考虑thisthis。另一个二进制串行器,非常适合发送某些类型的消息。它也可以很好地与MTOM(通过http)搭配使用。

+0

谢谢马克。您是否可以提供有关HTTP协议以外的其他协议的限制。我需要了解,我们是否可以通过互联网使用其他协议?如果可能的话,需要做什么(开放端口等)? – user274915 2010-03-15 16:58:59

+0

@ jobless-spt:添加了一些链接 – 2010-03-15 17:35:39

+0

+1,HTTP上的二进制文件是一个很好的折衷方案。它保留在IIS中托管服务的能力(我不能告诉你上次我打算编写我自己的WCF主机)并且它对防火墙友好。如果您不是流式传输块或经常聊天,HTTP开销可能非常低。 – Josh 2010-03-18 05:30:45