首页 / 知识

WCF服务可以有几个ServiceContracts?

2023-04-13 11:07:00

WCF服务可以有几个ServiceContracts?

How many ServiceContracts can a WCF service have?

WCF服务可以有几个ServiceContracts?

具体来说,由于ServiceContract是接口的属性,因此我可以将几个接口编码到一个WCF Web服务中?是一对一的吗?

在多个Web服务之间分开合同是否有意义?


WCF服务可以具有多个端点,每个端点可以实现不同的服务协定。

例如,您可以将服务声明如下:

1
2
[ServiceBehavior(Namespace ="DemoService")]
public class DemoService : IDemoService, IDoNothingService

具有以下配置的配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<service name="DemoService" behaviorConfiguration="Debugging">
  <host>
    <baseAddresses>
     
    </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的非常大的倍数。


@jdiaz

当然,您应该努力在不同的服务中处理非常不同的业务事项,但是请考虑您希望的情况,例如,所有服务都实现GetVersion()操作。您可以仅针对该操作有一个服务合同,并让每个服务都实现它,而不是将GetVersion()操作添加到所有服务的合同中。


您可以让服务实施所需的所有服务合同。我的意思是,我不知道是否有限制,但是我不认为有限制。

这是分离将由同一服务在几个概念上不同的服务协定接口中实现的操作的巧妙方法。


理论上,服务可以具有任意数量的端点,并且每个端点都绑定到特定的合约或接口,因此单个概念(和配置)服务可以通过多个端点或多个端点承载多个接口端点以托管相同的接口。

但是,如果您使用ServiceHost类来承载服务,则只能代替ServiceIIS来代替IIS。我不确定为什么会这样,但是确实如此。


服务接口属性合同

最新内容

相关内容

热门文章

推荐文章

标签云

猜你喜欢