2008-08-28 2 views
10

WCF 서비스에는 몇 개의 ServiceContracts가 있습니까?WCF 서비스에는 몇 개의 ServiceContracts가 있습니까?

특히 ServiceContract는 인터페이스에 대한 특성이므로 하나의 WCF 웹 서비스에 몇 개의 인터페이스를 코딩 할 수 있습니까? 일대일가요?

여러 웹 서비스에서 계약을 분리하는 것이 합리적입니까?

답변

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

nice. 10x를 지워야합니다. –

관련 문제