2008-09-15 5 views
102

저는 브라우저에서 Gmail과 같은 메시징을 구현하는 방법을 찾고 있었으며 Comet 개념에 도달했습니다. 그러나 IIS에서이 작업을 수행 할 수있는 좋은 .NET 구현을 찾을 수 없었습니다 (우리의 응용 프로그램은 ASP.NET 2.0으로 작성되었습니다).ASP.NET 용 Comet 구현은 무엇입니까?

해결책 (사용자가 생각할 수있는 해결책)은 사용자 당 실행중인 스레드를 남겨 두어야하므로 메시지를 받으면 그에 대한 응답을 반환 할 수 있습니다. 물론 이것은 확장되지 않습니다.

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

+12

MS-blessed 초기 구현은 SignalR입니다. http://www.hanselman.com/blog/AsynchronousScalableWebApplicationsWithRealtimePersistentLongrunningConnectionsWithSignalR.aspx – user423430

+0

Node.JS가 이제 Azure에서 지원되며 곧 2003 년 IIS가 지원 될 것입니다. IIS (http://www.windowsazure.com/en-us/develop/nodejs/) 내에서 혜성 서버를 실행할 수 있음을 의미합니다. – LamonteCristo

답변

44

혜성의 지속적인 연결로 인해 혜성은 IIS로 확장하기가 어렵지만 이제는 혜성 시나리오를 보는 팀이 있습니다. 그가 ASP.NET에서 초기 Comet 작업을 끝냈다 고 생각하면 Aaron Lerch's blog을보십시오.

+9

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

+3

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

+4

MVC 비동기 컨트롤러는 비 IIS 작업자 스레드에 대한 대기 시간을 줄임으로써 IIS 문제를 해결할 수 있습니다. [Clay Lenhart의 위대한 게시] (http : //clay.lenharts .net/blog/2010/10/19/websockets-is-cool-but-you-can-do-do-today). BitBucket의 [Chat Server Example Project] (https://bitbucket.org/jacob4u2/mvcchatsite/src)도 참조하십시오. – Jacob

0

웹 서버를 수평 적으로 확장 할 준비가되어 있지 않으면 Comet 방식이 실제로 확장 성이 없다고 생각합니다 (더 많은 웹 서버를 추가하여). 작동 방식은 사용자 세션마다 TCP 연결을 열어 놓는 것입니다. 서버가 수시로 연결을 밀어 넣으면 사용자에게 즉시 변경 또는 활동을 알릴 수 있습니다.

+6

모든 것이 한 지점으로 수직 확장 만 가능하며, 그 후에는 수평 확장이 필요합니다 장소. – Anton

3

comet way를 완전히 대체하고 브라우저 & 응용 프로그램 서버간에 전이중 연결을 가능하게하는 webSocket [HTML5] 게이트웨이의 프로덕션 릴리스를 만든 Kaazing Enterprise Gateway을 볼 수도 있습니다.

또한 Light Streamer Demos

33

WebSync 볼 수있는 것은 IIS/.NET 파이프 라인에 직접 통합 표준을 준수하는 확장 성 혜성 서버입니다. 또한 호스팅 서비스로 주문형으로 제공됩니다.

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

JavaScript, .NET/Mono, Mac OS X, Java, Silverlight, Windows Phone, Windows 런타임 및 .NET Compact에 대한 클라이언트 측 지원을 포함하며 .NET/Mono 및 PHP.

클러스터링은 SQL Server 나 Azure Caching 중 하나를 사용하여 지원되지만 사용자 지정 공급자는 거의 아무것도 (Redis, NCache)로 작성할 수 있습니다.

면책 조항 :이 제품을 개발 한 회사에서 근무했습니다.

+16

여기에 귀하의 제품으로서 면책 조항이 있어야합니다 ... –

+9

물론, 그것은 내가 일하는 회사에서 생산하고 있습니다 :) 확실히 아무것도 숨기려고하지 마십시오. – Anton

+1

@Anton - 숨기는 것이 아니라 공개하는 것과 다릅니다. – RedFilter

1

한때 나는 맞춤형으로 구축 된 http 스트리밍 서버를 사용하여 채팅 사이트를 사용했습니다. 나는 그 소프트웨어를 실제로 호기심에서 한 번에 재현했다. 그렇게하기에는 쉽다. 요청이 무기한으로 스레드 풀 스레드 (또는 IO 스레드, 비동기 처리기가 사용되는 경우)를 묶어주기 때문에 ASP.NET의 경우와 마찬가지로 IIS에서 "무한 요청"과 비슷한 유형의 구현을 시도하지 않습니다. 스레드 풀 구성에서 허용하는만큼 서버 당 처리 할 수 ​​있습니다.

그러한 기능에 대한 합법적 인 필요성이 있다면 솔직하게 사용자 지정 http 서버를 작성합니다.

나는 그것이 정말로 당신의 질문에 대답하지 않는다는 것을 알고 있지만, 입력이 적절하다고 생각했습니다.

4

실제로 ASP.NET에서 ajax 지원 웹 사이트를 만드는 방법은 다양하지만 솔직히 PokeIn은 혜성 아약스 지원 웹 응용 프로그램을 만드는 가장 쉬운 방법입니다. 그것은 우리 회사의 프로젝트 중 하나를 저장했습니다.

15

나는 최근에 당신은 내가의 bitbucket 프로젝트의 소스를 기반으로 설정 한 example on a AppHarbor deployment를 사용할 수있는 great article by Clay Lenhart

에 따라 simple example of a Long Polling Chat Server 사용하여 MVC 3 비동기 컨트롤러를 썼다.

자세한 내용은 내 blog post explaining the project에서 확인하십시오.

+0

나는 AppHarbor 배치의 예제를 좋아한다 – guaike

+0

'블로그 포스트는 프로젝트를 설명한다'-> https://web.archive.org/web/20130328042214/http://jacob4u2.posterous.com/mvc-3-long- polling-comet-chat-example – jaybro

1

WS-I 그룹은 유리 물고기와 .NET implementation을 가진 "Reliable Secure Profile"이라는 글을 게시했습니다.이 글은 inter-operate입니다.

운이 있다면 거기에 Javascript 구현도 있습니다.

HTTP Duplex.을 사용하는 Silverlight 구현이 있습니다. 푸시 발생시 콜백을 가져 오는 connect javascript to the Silverlight 개체를 사용할 수 있습니다.

commercial paid versions도 있습니다.

+4

많은 질문에 대해 정확히 똑같은 답변을 대량으로 게시하는 것은 짧은 깃발을내는 경향이 있습니다. –

+2

([psst] (http://meta.stackexchange.com/questions/) 88078/what-to-do-about-these-answer-dupes)) – Will

관련 문제