문제

실제 시나리오에서 이중 콜백에 WSDualHttpBinding을 사용할 수 있습니까?예를 들어, 무작위 포트를 사용하는 .NET 애플리케이션이 있는데 서비스가 콜백을 위해 클라이언트의 기본 주소와 포트를 확인할 수 있습니까?

도움이 되었습니까?

해결책

귀하의 질문에 대한 완전한 대답은 인트라넷 또는 인터넷 시나리오인 "실제 시나리오"에 따라 달라집니다.WSDualHttpBinding은 두 시나리오 모두에서 작동하지만 알아야 할 구체적인 사항이 있습니다.

인트라넷

WSDualHttpBinding은 인트라넷 시나리오에서 미리 구성된 사용자 지정 포트를 사용하여 .NET 애플리케이션과 함께 작동하며 "예" 서비스는 콜백을 위한 클라이언트의 기본 주소와 포트를 확인할 수 있습니다.아래에 정확히 어떻게 설명되어 있는지 알아보세요.아래에 설명하는 이유는 WSDualHttpBinding이 주로 인터넷을 통해 사용되도록 설계되었기 때문입니다.

클라이언트와 서버 모두에서 WCF를 사용할 수 있는 인트라넷 시나리오의 이중 콜백은 NetTcpBinding 또는 NetNamedPipeBinding을 사용하는 것이 가장 좋습니다.이러한 바인딩은 HTTP가 아닌 TCP와 ICP를 각각 전송으로 사용하고 사용자 지정 바이너리 인코딩을 사용하므로 양쪽 모두에 WCF가 필요합니다.클라이언트에 대한 콜백의 경우 새 포트를 열 필요 없이 바인딩을 통해 서비스에 연결하는 데 사용된 것과 동일한 채널이 재사용됩니다.

인터넷

인터넷 시나리오에서 유효한 HTTP 요청과 응답은 한 방향으로만 이동하며 HTTP는 단방향 프로토콜로 설계되었습니다.따라서 WSDualHttpBinding WCF를 사용하면 콜백을 위한 별도의 HTTP 채널이 생성됩니다.두 번째 질문에 대한 답변:클라이언트에 대한 이 콜백의 대상 주소는 기본적으로 클라이언트 시스템 호스트 이름과 포트 80으로 구성됩니다.예를 들어 클라이언트가 개발 컴퓨터이고 IIS가 설치된 경우 일부 시나리오에서는 포트 80이 독점적으로 예약되어 프로토타입 응용 프로그램과 충돌이 발생합니다.이것이 바로 이 블로그 게시물 ClientBaseAddress 속성이 도움이 되도록 설계된 솔루션과 솔루션을 제시합니다.어떤 포트(기본 포트 또는 사용자 지정 포트)를 사용하든 관계없이 발신 채널과 별도의 콜백 채널이 모두 설정될 수 있도록 양쪽의 모든 방화벽과 라우터가 올바르게 구성되어 있는지 확인해야 합니다.

.NET 응용 프로그램은 Silverlight 응용 프로그램을 나타낼 수도 있습니다.브라우저에서 실행되는 Silverlight 응용 프로그램은 새로 들어오는 HTTP 연결을 받아들일 수 없기 때문에 별도의 백 채널이 있는 WSDualHttpBinding은 작동하지 않습니다.따라서 PollingDuplexHttpBinding은 Silverlight 2에서 처음 만들어졌습니다. 이는 요청 채널을 오랫동안 열어 두고(긴 폴링) 이를 백 채널로 사용하여 HTTP가 단방향이라는 사실을 해결하는 영리한 '트릭'으로 생각할 수 있습니다. 클라이언트에게 다시 전화를 겁니다.이는 특히 확장과 관련하여 클라이언트와 서버 측 모두에 많은 영향을 미칩니다. 자세한 내용은 다음을 참조하세요. 내 블로그의 이 게시물.

특정 "실제 시나리오"에 대한 아이디어와 사용 사례를 통해 이중 콜백에 사용할 올바른 바인딩을 찾는 데 도움이 되기를 바랍니다.

다른 팁

방화벽 뒤의 애플리케이션이라면 이론적으로는 그렇습니다."실제 세계"가 무엇을 의미하는지에 따라 다릅니다."고성능"을 의미한다면 아마도 NetTcpBinding이 더 나은 접근 방식일 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top