ASP.NET에 대한 Comet 구현? [닫은]


103

브라우저 내에서 Gmail과 같은 메시징을 구현하는 방법을 찾고 있었고 Comet 개념에 도달했습니다 . 그러나 IIS 내에서이 작업을 수행 할 수있는 좋은 .NET 구현을 찾을 수 없었습니다 (애플리케이션은 ASP.NET 2.0으로 작성되었습니다).

내가 찾은 (또는 그 문제에 대해 생각할 수있는) 솔루션은 사용자별로 실행중인 스레드를 남겨 두어야 메시지를 받으면 그에게 응답을 반환 할 수 있습니다. 물론 이것은 전혀 확장되지 않습니다.

그래서 제 질문은-다른 방식으로 작동하는 Comet의 ASP.NET 구현에 대해 알고 있습니까? IIS에서도 가능합니까?


12
MS-blessed 초기 구현은 SignalR입니다. hanselman.com/blog/…
user423430

Node.JS는 이제 Azure에서 지원되며 곧 2003의 IIS가 지원됩니다. 즉, IIS ( windowsazure.com/en-us/develop/nodejs ) 내에서 comet 서버를 실행할 수 있습니다
goodguys_activate

답변:


44

Comet은 Comet의 지속적인 연결로 인해 IIS로 확장하기가 어렵지만 지금 Comet 시나리오를 검토하는 팀이 있습니다. 또한 Aaron Lerch의 블로그 를 살펴보십시오. 그가 ASP.NET에서 몇 가지 초기 Comet 작업을 수행했다고 생각합니다.


9
이것은 실제로 구현됩니다. 아래 Anton의 응답에 따라 WebSync를 확인하십시오. ( frozenmountain.com/websync )
jvenema

3
리버스 아약스라고 불리는 사람이 있습니까? 이것을 확인하십시오 : pokein.codeplex.com
Zuuum

4
MVC 비동기 컨트롤러는 대기 시간을 비 IIS 작업자 스레드로 오프로드하여 IIS 문제를 해결하는 데 도움이 될 수 있습니다 . Clay Lenhart 의이 훌륭한 게시물을 참조하십시오 . BitBucket의 채팅 서버 예제 프로젝트 도 참조하십시오 .
Jacob

33

WebSync 는 IIS / .NET 파이프 라인에 직접 통합되는 확장 가능한 표준 호환 Comet 서버입니다. 요청시 호스팅 서비스로도 제공됩니다.

공식적으로는 서버 노드 당 최대 20,000 개의 동시 클라이언트 연결을 지원하지만 개별 테스트에서 최대 50,000 개까지 증가하는 것으로 나타났습니다. 메시지 처리량은 단일 노드에서 초당 최대 300,000 개의 메시지를 전달하는 1,000 ~ 5,000 개의 동시 클라이언트 표시 부근에서 최적입니다.

여기에는 JavaScript, .NET / Mono, iOS, Mac OS X, Java, Silverlight, Windows Phone, Windows Runtime 및 .NET Compact에 대한 클라이언트 측 지원이 포함되며 .NET / Mono 및 PHP에 대한 서버 측 지원이 포함됩니다.

클러스터링은 기본적으로 SQL Server 또는 Azure Caching을 사용하여 지원되지만 사용자 지정 공급자는 거의 모든 항목 (Redis, NCache)에 대해 작성할 수 있습니다.

면책 조항 : 저는이 제품을 개발하는 회사에서 일합니다.


17
부인은 ... 자사의 제품으로, 여기가 있어야한다
샘 사프란

9
물론, 그것은 내가 일하는 회사에서 생산했습니다. :) 확실히 아무것도 숨기려고하지 않습니다.
Anton

1
@Anton-무언가를 숨기지 않는 것은 공개하는 것과 다릅니다.
RedFilter

1
@Anton 서버 노드 당 최대 20,000 개의 동시 클라이언트 연결을 지원하는 방법에 대해 자세히 설명해 주시겠습니까? 이 숫자는, 음 .. "너무 크다".
Pacerier

1
물론 25,000 피트 뷰에서 개념적으로 웹 싱크가 어떻게 작동하는지 물어 보는 것이 현명하다고 생각하지 않습니다.
nocarrier

15

저는 최근 Clay Lenhart훌륭한 기사를 기반으로 MVC 3 Async Controllers를 사용 하는 Long Polling Chat Server간단한 예제를 작성했습니다.

BitBucket 프로젝트의 소스를 기반으로 설정 한 AppHarbor 배포 에서 예제를 사용할 수 있습니다 .

또한 프로젝트를 설명하는블로그 게시물 에서 더 많은 정보를 얻을 수 있습니다 .


나는 AppHarbor 배포의 예를 좋아합니다
guaike

'프로젝트 설명 블로그 게시물'-> web.archive.org/web/20130328042214/http://...
jaybro

감사! 기사가 마음에 드 셨다니 다행입니다.
Clay Lenhart는

4

실제로 ASP.NET으로 ajax 지원 웹 사이트를 만드는 데는 많은 선택이 있지만 솔직히 PokeIn 은 혜성 ajax 지원 웹 응용 프로그램을 만드는 가장 쉬운 방법입니다. 우리 회사의 프로젝트 중 하나를 저장했습니다.


3

혜성 방식을 완전히 대체하고 브라우저와 애플리케이션 서버 간의 전이중 연결을 가능하게하는 webSocket [HTML5] 게이트웨이의 프로덕션 릴리스를 만든 Kaazing Enterprise Gateway 를 살펴볼 수도 있습니다.

Light Streamer 데모를 볼 수도 있습니다.


1

나는 오래 전에 맞춤형 http 스트리밍 서버를 사용하는 채팅 사이트를 사용한 적이 있습니다. 저는 실제로 호기심에서 그 소프트웨어를 한 지점에서 재현했으며, 그렇게하기에 충분히 쉽다고 생각합니다. IIS, 특히 ASP.NET에서 유사한 유형의 "무한 요청"을 구현하려고 시도하지 않을 것입니다. 요청이 스레드 풀 스레드 (또는 비동기 처리기가 사용되는 경우 IO 스레드)를 무기한으로 묶기 때문입니다. 스레드 풀 구성이 허용하는 한 서버 당 너무 많이 처리합니다.

그러한 기능에 대한 합법적 인 요구가 강력하다면 솔직히 사용자 지정 http 서버를 작성합니다.

나는 그것이 당신의 질문에 실제로 대답하지 않는다는 것을 알고 있지만 입력이 관련성이 있다고 생각했습니다.


1

WS-I 그룹 은 글래스 피쉬와 .NET 구현 이 잘 상호 운용 되는 "신뢰할 수있는 보안 프로필" 이라는 것을 발표했습니다 .

운이 좋으면 Javascript 구현도 있습니다.

HTTP Duplex 를 사용하는 Silverlight 구현도 있습니다 . 푸시가 발생할 때 javascript를 Silverlight 개체에 연결하여 콜백을받을 수 있습니다 .

도 있습니다 상용 유료 버전 뿐만 아니라이.


4
짧은 연속으로 여러 질문에 대해 똑같은 답변을 대량 게시하면 몇 가지 플래그가 넘어가는 경향이 있습니다 ...
Marc Gravell

2
( 잠깐만 )

0

Comet 접근 방식은 웹 팜을 수평으로 확장 할 준비가되어 있지 않으면 실제로 확장 가능하지 않다고 생각합니다 (혼합에 웹 서버를 더 추가하여). 작동 방식은 사용자 세션마다 TCP 연결을 열어 두는 것이므로 서버가 때때로 해당 연결로 항목을 푸시하여 사용자에게 변경 또는 활동을 즉시 알릴 수 있습니다.


6
모든 것은 수평 적 확장이 일어나야 만 한 지점까지 수직으로 만 확장 가능합니다.
안톤
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.