2010-06-04 4 views
1

현재 서버에서 푸시 메시지를받을 수있는 실버 라이트 4 인 브라우저 앱을 만들어야합니다. 나는 소켓을 사용하는 것이 가장 좋은 방법이라고 생각하며 서버와 클라이언트 간의 연결을 허용하여 데이터를 전송하고 페이지를 업데이트합니다. 그러나 방화벽 및/또는 프록시 서버가 걱정됩니다. 포트 80에는없는 모든 것을 차단할 수있는 프록시 뒤에 푸시 기술이나 소켓이있을 수 있습니까? 또는 포트 80에서 소켓 연결을 사용할 수 있습니다. 이는 프록시와 방화벽을 우회하기 때문에 완벽 할 것입니다. 나는 실버 라이트에 사용할 수있는 포트의 범위가 정해져 있다는 것을 알고 있습니다.Silverlight에서 소켓을 사용하여 프록시를 통해 데이터를 푸시할까요?

주제에 대해 ... Silverlight에서 대량의 데이터를 소켓, ASP.NET AJAX 또는 ASMX 웹 서비스에보다 빠르게 보내겠습니까?

감사합니다.

답변

0

Silverlight에서 포트 80을 사용하여 TCP 소켓에 연결할 수 없습니다. 당신이 진술했듯이, 제한된 범위의 포트 (4502-4534)가 당신이 연결할 수 있고 그것입니다.

방화벽은 클라이언트와 서버 사이에 관련된 방화벽이 허용 된 포트 번호 중 하나를 통해 연결을 허용해야하는 것과 같이 RDP 원격 액세스와 같은 다른 응용 프로그램과 마찬가지로 우려 할 것입니다.

데이터 전송 속도는 주로 인코딩의 함수입니다. (나는 AJAX가 여기에있는 그림이라고 생각하지 않는다). 궁극적으로 바이너리 인코딩을 사용하는 소켓은 특히 빈번한 작은 전송에 대해 조금 더 빠른 경향이 있습니다. 그러나 HTTP는 약간의 오버 헤드가 있지만 방화벽에 문제가 발생할 확률이 훨씬 적습니다.

소켓을 사용하는 정말 좋은 이유가 없다면 HTTP 기반 프로토콜을 대신 사용하십시오. 앱의이 부분을 합리적으로 추상화하면 나중에 언제든지 바꿀 수 있습니다.

WCF PollingDuplex 채널 사용을 고려 했습니까? 이렇게하면 HTTP를 고집하면서 서버 메커니즘에서 "밀어 넣기"를 만들 수 있습니다. 또한 배관 공사의 대부분은 당신을 위해 이루어집니다.

+0

감사합니다. WCF PollingDuplex를 살펴 보겠습니다. 내가하기 전에,이 기사 : http://dotnetaddict.dotnetdevelopersjournal.com/sl_polling_duplex.htm은 확장 성이 없다고 말합니다. 이것은 많은 사람들에 의해 사용될 것이므로, 불필요한 오버 헤드는 선택 사항이 아닙니다. 이것이 사실이라면 더 나은 HTTP 기반 옵션이 있습니까? 감사합니다. . – Matt

+0

@Matt : "많은 사람들"을 정의 하시겠습니까? – AnthonyWJones

+0

수천. – Matt

관련 문제