2013-09-06 3 views
1

인터페이스가 있고 동일한 인터페이스에 대해 여러 구현이 있습니다. 그래서 하나의 호스트를 사용하여 엔드 포인트를 공개하는 방법에 대해 묻고 싶습니다.단일 서비스에서 여러 WCF ServiceContract 구현 호스팅

서비스 코드

[ServiceContract] 
public interface ICalculator 
{ 
    [OperationContract] 
    int Add(int num1, int num2); 
} 
public class Calculator : ICalculator 
{ 
    public int Add(int num1, int num2) 
    { 
     return num1 + num2; 
    } 
} 
public class Calculator_Fake : ICalculator 
{ 
    public int Add(int num1, int num2) 
    { 
     return num1 + num1; 
    } 
} 

호스트 코드

class Program 
{ 
    static void Main(string[] args) 
    { 

     ServiceHost host = new ServiceHost(typeof(WCF_Service.CalService)); 
     host.Open(); 
     Console.ReadLine(); 
    } 
} 

호스트 구성

<endpoint address="http://localhost:8000/CalService" 
      binding="basicHttpBinding" 
      contract="WCF_Service.ICalculator" /> 

답변

2

당신은 내가 말을하지 않지만 나는 당신이 하나의 applcation에서 가짜 서비스와 실제 서비스를 모두 호스트 할 수 있기를 원한다고 가정하고 있습니다. 그렇다면 단일 응용 프로그램에서 둘 이상의 WCF 서비스를 호스팅 할 수 있습니다. 그렇게하기 위해 코드를 변경하여 둘 이상의 호스트를 작성해야합니다.

코드 변화

class Program 
{ 
    static void Main(string[] args) 
    { 
     ServiceHost host1 = new ServiceHost(typeof(Calculator)); 
     host1.Open(); 

     ServiceHost host2 = new ServiceHost(typeof(Calculator_Fake)); 
     host2.Open(); 

     Console.ReadLine(); 
    } 
} 

구성 변화

<endpoint address="http://localhost:8000/CalService" 
      binding="basicHttpBinding" 
      contract="WCF_Service.ICalculator" /> 

<endpoint address="http://localhost:8000/FakeCalService" 
      binding="basicHttpBinding" 
      contract="WCF_Service.ICalculator" />