WCF服务可以有多少ServiceContracts?
具体来说,由于ServiceContract是接口的属性,我可以在一个WCF Web服务中编码多少个接口?它是一对一的吗?
跨多个Web服务分开合同是否有意义?
答案 0 :(得分:18)
WCF服务可以有多个端点,每个端点都可以实现不同的服务合同。
例如,您可以按如下方式声明服务:
[ServiceBehavior(Namespace = "DemoService")]
public class DemoService : IDemoService, IDoNothingService
哪条线路配置如下:
<service name="DemoService" behaviorConfiguration="Debugging">
<host>
<baseAddresses>
<add baseAddress = "http://localhost/DemoService.svc" />
</baseAddresses>
</host>
<endpoint
address =""
binding="customBinding"
bindingConfiguration="InsecureCustom"
bindingNamespace="http://schemas.com/Demo" contract="IDemoService"/>
<endpoint
address =""
binding="customBinding"
bindingConfiguration="InsecureCustom"
bindingNamespace="http://schemas.com/Demo" contract="IDoNothingService"/>
</service>
希望有所帮助,但如果您使用的是理论上的最大接口,那么我可以提供服务,我怀疑它是2的疯狂大倍数。
答案 1 :(得分:1)
您可以拥有一个服务实现您想要的所有服务合同。我的意思是,我不知道是否有限制,但我认为没有。
这是将几个概念上不同的服务合同接口中由同一服务实现的操作分开的一种巧妙方法。
答案 2 :(得分:1)
@jdiaz
当然,您应该努力在不同的服务中处理非常不同的业务问题,但请考虑您希望的情况,例如,您的所有服务都实现了GetVersion()操作。您可以只为该操作获得服务合同,并让每个服务实现它,而不是将GetVersion()操作添加到您所有服务的合同中。
答案 3 :(得分:0)
理论上,服务可以具有任意数量的端点,并且每个端点都绑定到特定的合同或接口,因此单个概念(和配置)服务可以通过多个端点或多个端点来承载多个接口。端点来托管相同的接口。
但是,如果您使用ServiceHost类来托管服务,则每个ServiceHost只能关联一个接口,而不是IIS。我不确定为什么会这样,但确实如此。