用于Internet与Intranet服务消耗的WCF服务TCP / Ip与Http协议

时间:2011-10-18 10:04:33

标签: .net wpf wcf wcf-binding

我有一个WCF服务,可以通过互联网上基于jQuery的web应用程序以及本地Intranet中的WPF应用程序来使用。

我应该选择http或TCP协议还是应该使用http协议为Intranet制作两个类似的Internet协议和TCP协议服务。

3 个答案:

答案 0 :(得分:2)

老实说,我建议两者兼顾,这也是我所做的。我认为公开服务'x'并且能够通过'y'或'z'连接是很好的,这取决于消费方的需求。

当我第一次决定这样做时,我认为为同一服务公开多种绑定类型将是微不足道的。毕竟WCF是关于选项的,所以为什么不公开你想要的几个选项,对吧?棘手的部分是你不能拥有(2)具有不同绑定的不同服务(比如HTTP和netTCP)都使用相同的服务契约。尝试托管此类服务时会出错。

我想出了一个简单的抽象,使用额外的接口来实现这一点。现在,你将有(2)单独的合同来实现,每个绑定类型1,但仍然只有一个不受约束的代码库。看一下我写的帖子,用一个代码示例解释这个:

Exposing Multiple Binding Types For The Same Service Class In WCF

答案 1 :(得分:1)

我建议使用HTTP,它适用于互联网和内联网。 此外,为了在两者上公开服务,您不需要创建2个服务,只需在配置中创建正确的绑定,然后在两个协议上都会公开相同的服务。

答案 2 :(得分:1)

我不是WCF的专家,但这里是我的两分钱:

WCF绑定中的

只是配置问题,这意味着WCF端点的web.config和WPF客户端的app.config。

服务器web.config中只需要一个服务,最终需要多个绑定/端点

客户端应用程序将根据需要使用两个端点之一和客户端绑定/协议进行连接,而无需您拥有两个服务或进行任何特定更改。

内联网netTCPbinding中的

可能是最快的选择,因为它传输二进制数据,在Internet httpBinding中运行良好;请注意,您也可以在Intranet中使用httpBinding而没有任何问题,如果它会慢得多或完全等同于netTcp绑定,还要根据您的用户转换类型/内容进行验证。