이중 콜백을위한 WSDualHttpBinding을 사용하면 실제 시나리오에서 작동합니까? 말하자면, 무작위 포트를 사용하는 .NET 애플리케이션이 있는데 서비스가 클라이언트의 기본 주소와 콜백 포트를 해결할 수 있습니까?이중 콜백을위한 WSDualHttpBinding
답변
질문에 대한 답변은 인트라넷 또는 인터넷 시나리오 인 "실제 시나리오"에 따라 달라집니다. WSDualHttpBinding이 두 시나리오 모두에서 작동하지만주의해야 할 세부 사항이 있습니다 :
WSDualHttpBinding이 .NET 응용 프로그램이 인트라넷 시나리오에서 사전 구성된 사용자 지정 포트를 사용하여 작동합니다
인트라넷 "예"서비스가 될 것입니다 클라이언트의 기본 주소와 콜백을위한 포트를 해결할 수 있습니다. 정확히 어떻게 아래에 설명되어 있습니다. 아래에서 설명하는 이유는 WSDualHttpBinding이 주로 인터넷을 통해 사용되도록 설계 되었기 때문입니다.
클라이언트와 서버 모두에서 WCF를 사용할 수있는 인트라넷 시나리오의 이중 콜백은 NetTcpBinding 또는 NetNamedPipeBinding을 사용하는 것이 가장 좋습니다. 이러한 바인딩은 TCP와 ICP를 각각 HTTP (전송) 대신 전송 (전송)으로 사용하며 사용자 지정 바이너리 인코딩을 사용하므로 양쪽에서 WCF가 필요합니다. 클라이언트에 대한 콜백의 경우 Binding을 통해 서비스에 연결하는 데 사용 된 동일한 채널이 새 포트를 열지 않아도 다시 사용됩니다.
유효한 HTTP 요청과 응답은 한 방향으로 만 여행 인터넷 시나리오에서 인터넷
는, HTTP는 단방향 프로토콜로 설계되었습니다. 따라서 WSDualHttpBinding WCF를 사용하면 콜백을위한 별도의 HTTP 채널이 만들어집니다. 귀하의 두 번째 질문에 대한 답변 : 클라이언트에 대한이 콜백의 대상 주소는 기본적으로 클라이언트 시스템 호스트 이름과 포트 80으로 구성됩니다. 예를 들어 클라이언트가 개발 시스템이고 IIS가 설치된 경우 포트 80은 일부 시나리오에서 독점적으로 예약되므로 프로토 타입 응용 프로그램과 충돌 할 수 있습니다. 이것은 this blog post이 솔루션을 제시하고 ClientBaseAddress 속성이 도움을 주도록 설계된 것입니다. 기본 포트 또는 사용자 정의 포트와 관계없이 양방향의 모든 방화벽과 라우터가 나가는 채널과 별도의 콜백 채널을 모두 설정할 수 있도록 올바르게 구성해야합니다.
.NET 응용 프로그램은 Silverlight 응용 프로그램을 나타낼 수도 있습니다. 브라우저에서 실행되는 Silverlight 응용 프로그램은 새로운 들어오는 HTTP 연결을 허용 할 수 없기 때문에 별도의 백 채널을 사용하는 WSDualHttpBinding이 작동하지 않습니다. 따라서 PollingDuplexHttpBinding은 Silverlight 2에서 처음 만들어졌습니다.이 트릭은 HTTP가 오랫동안 (긴 폴링) 요청 채널을 열어 놓고 백 채널로 사용함으로써 단방향이라는 사실을 해결합니다. 클라이언트에게 다시 전화를 겁니다. 이것은 특히 스케일링과 관련된 클라이언트 측과 서버 측 모두에 많은 의미가 있습니다. 자세한 내용은 this post from my blog을 참조하십시오.
여러분의 특별한 "실제 시나리오"와 여러분의 유스 케이스에 대한 생각으로, 이것은 이중 콜백에 사용할 올바른 바인딩을 만드는 데 도움이 될 것입니다.
방화벽 뒤에있는 응용 프로그램 인 경우 이론적으로는 그렇습니다. 그것은 "현실 세계"가 의미하는 바에 달려 있습니다. 그것이 "고성능"을 의미한다면 아마도 NetTcpBinding이 더 나은 appraoch 일 것입니다.
매우 유용한 정보 +1 –