C# 基于TCP的二进制WCF

C# 基于TCP的二进制WCF,c#,asp.net,wcf,tcp,C#,Asp.net,Wcf,Tcp,WCF Binary over TCP选项,是否仅适用于Intranet或Internet TCP是否仅适用于内部网?序列化程序和传输在很大程度上是不相关的。有针对常见场景的预配置绑定,但我的理解是,您可以将二进制序列化程序(NetDataContractSerializer)插入任何传输。或者写你自己的-p 然而,不同的传输可能比普通HTTP更难配置(防火墙等) (尽管我会对速度的说法提出异议;我见过NetDataContractSerializer偶尔被痛打过……) 重新评论——与其说是运

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


TCP是否仅适用于内部网?

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

然而,不同的传输可能比普通HTTP更难配置(防火墙等)

(尽管我会对速度的说法提出异议;我见过
NetDataContractSerializer
偶尔被痛打过……)



重新评论——与其说是运输(我怀疑你最好还是和HTTP呆在一起),不如考虑一下。另一种二进制序列化程序,非常适合发送某些类型的消息。而且它还可以很好地与MTOM(通过http)配合使用。

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

+1确切地说,理论上,它应该可以正常工作,但它是TCP,而不是HTTP,所以除了防火墙问题,您的另一端还必须使用二进制编码进行相同的TCP/ip绑定,所以,只有当你们控制了交流的两端,这才有用,真的。谢谢。所以,根据你们的说法,若我打开端口434(或TCP的任何端口),我应该能够通过互联网访问它?或者我需要使用客户端设置VPN隧道吗?@jobless spt-访问远程端口所需的操作将因网络的安全配置而异。您需要与当地IT/Sec人员沟通,以解决这一问题。但是,请注意,安全人员可能非常不愿意向外部网络公开额外的端口;如果他们不是,你可能需要新的安全人员。你想通过切换到TCP来实现什么?可能还有其他(也许更好)的选择,不涉及打开漏洞。@Marc-我只是想了解和探索可用的选择。我知道并且一直在使用HTTP。正在尝试了解其他选项(目前为TCP),以及它们的优缺点。谢谢Marc。您是否可以提供关于HTTP以外的协议限制的任何参考资料。我需要了解,我们是否可以在互联网上使用其他协议?如果可能的话,需要做什么(打开端口等)?@jobless spt:添加了一些链接+1,HTTP上的二进制是一个很好的折衷方案。它保留了在IIS中托管服务的能力(我不能告诉你我最后一次费心编写自己的WCF主机是什么时候),而且它对防火墙友好。如果您不经常流式处理数据块或聊天,HTTP开销可能非常低。