2008-08-28 84 views
10

WCF服務可以有多少個ServiceContracts?WCF服務可以有多少個ServiceContracts?

具體而言,由於ServiceContract是接口的屬性,因此可以將多少個接口編碼到一個WCF Web服務中?這是一對一的嗎?

跨多個Web服務分離合同是否合理?

回答

1

您可以讓服務實現您想要的所有服務合同。我的意思是,我不知道是否有限制,但我認爲沒有限制。

這是一種很簡單的方式來分離將由幾個概念上不同的服務合同接口中的相同服務實現的操作。

1

@jdiaz

當然你要努力在不同的服務非常不同的業務問題,但考慮到要在其中,例如,所有的服務實現GetVersion()操作的情況。您可以爲該操作提供服務合同,並讓每項服務都實施它,而不是將GetVersion()操作添加到所有服務的合同中。

0

服務可以理論上具有任何數量的端點,並且各個端點被綁定到特定合同,或接口,因此可能的是一個單一的概念(和配置)服務託管經由多個端點或可替代地多個接口幾個端點來承載相同的接口。

如果您正在使用的ServiceHost類託管服務,不過,不是IIS,你可以ServiceHost的每一個單一的接口只能關聯。我不確定爲什麼會出現這種情況,但確實如此。

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.

+0

不錯。 10倍清理。 – 2011-12-01 02:04:55