2012-02-25 3 views
1

동일한 wcf 응용 프로그램의 두 인스턴스를 서로 연결해야합니다 (테스트 시나리오 용).서비스 끝점 주소의 WCF 프로그래밍 방식 통합

각 클라이언트는 서비스 엔드 포인트를 공개하고 동일한 서비스에 연결하는 기능도 제공합니다. 은 동료가 공개합니다. 각 클라이언트에 노출

엔드 포인트 :

<services> 
    <service name="BackGammonClient.ClientService"> 
     <endpoint address="net.tcp://localhost:8081/ClientService" binding="netTcpBinding" 
       bindingConfiguration="" contract="Contracts.Client.IClient" /> 
    </service> 
    </services>  

문제는 각 클라이언트들이 모두 같은 로컬 호스트에서 실행되고 동일한 포트를 제공하고 있기 때문에 동일한 엔드 포인트를 노출한다는 것입니다.

클라이언트 응용 프로그램의 각 인스턴스에 대해 동적으로 포트를 적용 할 수 있습니까?

나는 기본 엔드 포인트가 이미 으로 찍혔는지 확인하고 주소에 첨부하기 위해 실행중인 포트 번호를 적용하는 방법을 생각하고있었습니다.

답변

2

끝점을 프로그래밍 방식으로 구성 할 수 있습니다. 참조 : 그래서

http://en.csharp-online.net/WCF_Essentials%E2%80%94Programmatic_Endpoint_Configuration

: 여기

In C#, how to check if a TCP port is available?

일부 프로그램 엔드 포인트 구성에 다른 링크입니다 : 포트가없는 경우

http://msdn.microsoft.com/en-us/library/ff647110.aspx

이 스택 게시물 감지 커버 , 다음과 같습니다.

string svcUri = String.Format("net.tcp://localhost:{0}", port); 
ServiceHost host = new ServiceHost(typeof(MyService)); 
Binding tcpBinding = new NetTcpBinding(); 
host.AddServiceEndpoint(typeof(IMyOtherContract),tcpBinding, 
svcUri); 
host.Open(); 
+0

은 MSDN 문서가 복잡 이상 것, 내가 필요로하는 모든 내가 통해 서비스를 사용하여 엔드 포인트 태그 내가 SVC 도구 을 사용하여 다른 측면에서 프록시를 생성하고 있지 않다에서 주소에 값을 할당하는 것입니다 channelfacotry –

+0

더 유선형으로 보이는 또 다른 링크를 추가했습니다. – bryanmac

+0

감사합니다. 내가 끝내 준 것에 대한 답변을 게시 할 것입니다. 간단하지만 일반적인 것은 아닙니다. 의견을 듣고 싶습니다. –