2012-10-16 8 views
2

우리 시스템에는 WCF를 통해 서로 통신하는 여러 "사이트"가 있습니다. 각 사이트는 NetTCP 바인딩을 통해 ~ 20 개의 인터페이스를 제공합니다.WCF 채널이 너무 많습니다.

사이트가 피어 사이트의 인터페이스를 사용하면 각 채널에 대해 별도의 TCP 소켓이 열립니다. 즉, 모든 인터페이스를 정기적으로 사용하려면 ~ 20 개의 TCP 소켓이 각 피어 사이트에 대해 열린 상태로 유지됩니다.

각 사이트에있는 피어의 수는 현재 비교적 적지 만 (10-15) 가까운 미래에 ~ 100까지 증가해야합니다. 내 관심사는 각 사이트에 과도하게 보이는 ~ 2000 수신 소켓이 있어야한다는 것입니다. 나는 특정한 문제에 관해서는 손가락을 집어 넣을 수는 없지만, 잘못 생각한다. 예를 들어, 이것은 WCF의 기본 MaxConcurrentConnections (기본값은 10)를 크게 초과합니다.

시스템에 적합한 설계입니까? 모든 인터페이스를 단일 인터페이스 (및 단일 채널)로 통합해야합니까? 단일 채널에서 동시에 메시지를 보낼 수 있습니까? 아마도 메시지 큐 시스템을 고려해야할까요?

모든 의견이나 아이디어를 환영합니다.

+0

@Fabske .NET 4.5에서 더 이상 사용되지 않는 것으로 보입니다. (http://msdn.microsoft.com/en-us/library/system.servicemodel.netpeertcpbinding.aspx – telewin

답변

0

PortSharing을 사용 설정해 보셨습니까? ie http://msdn.microsoft.com/en-us/library/ms734772.aspx

+0

을 참조하십시오. 아마도이 책을 읽었습니다. 잘못되었지만 여기서 도움이되지는 않을 것이라고 생각합니다. 모든 고객이 모든 서비스를 사용하기 위해서는 하나의 클라이언트가 20 개의 다른 소켓을 열어야합니다. 클라이언트는 PortSharing에서도 그렇습니까? 예를 들어 각 인터페이스에 대해'ChannelFactory.CreateChannel'을 호출해야합니다. – telewin

관련 문제