我有一个WCF服务,可以通过基于jQuery的Web应用程序在互联网中使用,也可以通过本地Intranet中的WPF应用程序使用。WCF服务TCP/Ip vs Http协议,用于Internet与Intranet服务消费
我应该选择http还是TCP协议或者我应该使用http协议的Internet协议和TCP协议的Intranet的两个类似的服务。
我有一个WCF服务,可以通过基于jQuery的Web应用程序在互联网中使用,也可以通过本地Intranet中的WPF应用程序使用。WCF服务TCP/Ip vs Http协议,用于Internet与Intranet服务消费
我应该选择http还是TCP协议或者我应该使用http协议的Internet协议和TCP协议的Intranet的两个类似的服务。
我不是WCF的专家,但我在这里的两分钱:
在WCF绑定只能配置的问题,这意味着你的WPF客户端为WCF终点的web.config和app.config中。
你只需要一个服务,最终多个绑定/端点服务器的web.config
客户端应用程序将使用两个端点的一个和客户端绑定/协议的需要,而无需任何您连接有两项服务或做出任何具体的改变。
在内联网netTCPbinding
可能是最快的选择,因为它传输二进制数据,因特网httpBinding
应该工作得很好;请注意,您也可以在Intranet中使用httpBinding
而不会出现问题,并且它可能会比netTcp绑定的速度慢得多或完全等效,这一切都需要根据您的使用传输器类型/内容来证明。
我会建议使用HTTP,它将适用于互联网以及内联网。 此外,为了在两个服务上公开服务,您不需要创建2个服务,只需在配置中创建适当的绑定,然后相同的服务就会暴露在两个协议上。
老实说,我建议做这两个,这也是我所做的。我认为公开服务'x'并且能够根据消费者需求通过'y'或'z'连接是很好的。
当我第一次决定这样做时,我认为为相同服务公开多个绑定类型将是微不足道的。毕竟WCF是关于选项的,所以为什么不公开一些你想要的选项,对吧?棘手的部分是你不能拥有(2)具有不同绑定(比如说HTTP和netTCP)的不同服务都使用同一个服务合约。尝试托管这样的服务时会出现错误。
我想出了一个简单的抽象,使用额外的接口来允许这件事。现在,您将拥有(2)单独的合同来执行,每个绑定类型1个,但底下仍然只有一个不重要的代码库。看看我写的一篇文章,用代码示例解释了这一点:
Exposing Multiple Binding Types For The Same Service Class In WCF