WCF NetTCP绑定在互联网上的应用

7
我有一个问题。我想使用WCF提供一系列服务。消费这些服务的客户端也是基于WCF的.NET应用程序。我希望实现高速访问、快速响应以及传输中小型数据合同(主要是.NET基本数据类型)。这些服务将通过互联网进行分发,因此我需要可靠性、可用性和基本安全性。
我不想使用WsHttp,因为我的唯一客户端是基于.NET的,并且将有近150个客户端请求这些服务。
您建议使用什么绑定方式?是否存在任何缺点、风险等方面的问题?
谢谢您的帮助!
3个回答

8
由于您计划使用简单类型和小数据合同,与通过互联网传输引入的延迟相比,您使用的绑定几乎不相关。因此,正确的答案是使用最易于管理且最安全的绑定。我建议您将应用程序托管在IIS中,并使用wsHttpBinding以及所有与之相关的可管理性好处。它也将是互操作的,虽然今天这并不重要,但它是免费的,为什么不使用呢?另外,请考虑您的服务粒度。您更了解您的客户,但在开放的互联网上,事情发生了。由于通过互联网的往返时间是不可控制的,可能需要毫秒或秒,甚至可能根本无法到达。因此,如果可能的话,请尽量减少旅行次数并使用更大的有效载荷,并使用各种缓存和异步操作使应用程序看起来“快”。

6
这里有一篇关于选择绑定的很好的文章,作者是Juval Lowy:http://www.code-magazine.com/article.aspx?quickid=0605051&page=3。一般来说,建议不要在互联网上使用net tcp绑定,没有听说过任何人这样做。虽然如果端口全开而且没有人阻止调用,它可能会起作用。测试一下nettcp,如果不行,只需更改配置。

最重要的是考虑您的安全需求。您只需要点对点吗?那么基本的http over ssl即可。您需要端到端吗?那就需要wshttp和消息加密。

感谢Shiraz。目前仅计划由.NET Windows表单应用程序使用,通道将是互联网。我们有防火墙,但电信人员可以配置端口以从某些IP访问,分支机构具有专用的互联网连接,因此安全性不是主要问题。 - Arturo Caballero
IP地址很容易被欺骗,这将非常容易受到中间人攻击的影响。如果您的数据很有价值,请通过互联网进行加密。解决这个问题的一种廉价而简单的解决方案是使用VPN而不需要专用线路。 - Jerry Bullard

0
根据您的情况,NetTcpBinding是首选绑定。由于您确定客户端将是WCF,因此无需进行互操作性。
在《编程WCF服务》一书中这里看一下。
我唯一不确定的是防火墙。如果您必须通过其中之一,可能某些WS绑定更合适。

感谢Philippe的回复。我不会有互操作性,但如果发生这种情况,我可以配置多个绑定服务。到目前为止,计划仅由.NET Windows表单应用程序使用,通道将是互联网。我们有防火墙,但电信人员可以配置端口以从某些IP访问,分支机构有专用的互联网连接,因此安全性不是主要问题。我会看一下那本书。 - Arturo Caballero

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