2014-03-05 1 views
0

포트 공유를 사용하도록 설정 한 msdn 전체를 읽었습니다. 포트 공유 서비스를 시작하고 net.tcp 바인딩에서 'portSharingEnabled = True'를 지정해야합니다.바인딩에서 PortSharingEnabled를 지정하지 않고 net.tcp wcf 서비스가 어떻게 작동합니까?

또한 net.tcp 바인딩 설명서는 portsharing의 기본값을 false로 표시합니다.

하지만 내 VS 2013, WIN 7 컴퓨터에서 콘솔 서비스가 많은 서비스를 호스팅하고 있으며 문제없이 VS에서 실행할 수 있습니다. 내 Servichost는 동일한 포트에서 10 개 이상의 서비스를 호스팅 할 수 있습니다. 내가 이해하지 못하는 것은 무엇인가? 어떤 아이디어?

<service name="Lookup" behaviorConfiguration=""> 
     <host> 
      <baseAddresses> 
      <add baseAddress="net.tcp://localhost:8000/"/> 
      </baseAddresses> 
     </host> 
     <endpoint 
         name="IEntitiesLookup" 
         binding="netTcpBinding" 
         address="LookupService" 
         contract="ILookup" /> 
     </service> 
+0

'IEntitiesLookup' 인터페이스 만 가지고 계시나요, 아니면 더 많은 인터페이스가 있습니까? 인터페이스가 하나뿐이라면 하나의 엔드 포인트와 하나의 서비스 만 있습니다. 각 서비스/인터페이스에는 여러 가지 * 메소드 *가있을 수 있습니다. –

+0

죄송합니다. 당신이 암시하는 것을 이해하지 못하고 있습니다. 위에서 언급했듯이 동일한 포트를 사용하여 하나 이상의 서비스가 실행 중입니다. 위는 단지 하나의 서비스 엔드 포인트의 샘플이었습니다. –

답변

1

내가 어느 정도 포트 공유에 대한 나의 이해를 취소 관리 :

나는 내 모든 서비스에 대한 서비스 이름 다음에이 엔드 포인트를 사용합니다. 그러나 이것에 대한 더 많은 생각에 행복 할 것입니다.

나는 위의 시나리오의 이유를 찾을 수있었습니다. 프로세스 내에서 동일한 포트를 공유하는 여러 끝점을 호스팅 할 수 있습니다. 포트 공유를 활성화하지 않아도됩니다. 그러나 동일한 포트 번호로 일부 서비스를 호스팅하려고하는 다른 프로세스가있는 경우 '이미 사용중인 포트'에 대한 예외가 발생합니다. 이 경우 서비스 호스트 프로세스의 모든 끝점을 바인딩 할 때 포트 공유를 활성화하고 PortSharing 서비스를 시작해야합니다.

저는 이것이 전송 계층에서 포트 번호가 프로세스와 관련되어 있다는 것을 이해합니다.