문제

내가 개발하는 채팅 웹 응용 프로그램을 사용하는 SqlServer 데이터베이스를 교환하는 메시지입니다.

모든 클라이언트 조사의 모든 x 초을 확인에 대한 새로운 메시지입니다.

그것은 분명 이 방법을 소비하는 많은 리소스가 있는 경우에는"더 싼 방법"그 목적을 달성할 수 있게 해 줍니다.

나는 같은 방법을 사용하는"존재":검사는 누구입니다.

도움이 되었습니까?

해결책

실시간 채팅 앱과 같은 경우 SQL 백업이있는 분산 캐시를 권장합니다. Enyim .NET 제공 업체와 Memcached를 좋아하므로 다음과 같은 일을 할 것입니다.

  1. 사용자 게시물 메시지
  2. 시스템은 데이터베이스에 메시지를 씁니다
  3. 시스템은 캐시에 메시지를 씁니다
  4. 모든 사용자는 새 메시지를 위해 주기적으로 캐시를 폴링합니다

데이터베이스 백업을 사용하면 캐시가 지워지거나 응용 프로그램이 다시 시작되는 경우 캐시를 사전로드 할 수 있지만 기능적 비트는 데이터베이스를 폴링하는 대신 메모리 인 캐시에 의존합니다.

다른 팁

Flash 또는 Java Applet과 같은 브라우저 플러그인/확장자를 사용하지 않으면 브라우저는 본질적으로 한 가지 방식으로 통신 도구입니다. 데이터를 가져 오려면 브라우저에서 요청을 시작해야합니다. 데이터를 브라우저에 '푸시'할 수 없습니다.

Ajax 폴링 방법을 사용하는 많은 웹 앱을 사용하여 서버 '푸시'를 시뮬레이션합니다. 요령은 주파수/데이터 크기의 대역폭 및 서버 리소스의 균형을 맞추는 것입니다.

방금 Gmail에 대한 간단한 관찰을했습니다. 5 초마다 httppost 폴링을합니다. '상태'변경이없는 경우 응답 데이터 크기는 몇 바이트 (HTTP 헤더 제외)입니다. 물론 Google은 거대한 서버 리소스와 대역폭을 가지고 있기 때문에 내가 언급 한 이유는 다음과 같습니다.

이는 "사용자 경험 대 서버 리소스 향상"입니다. x 초마다 간단한 투표를하는 대신 창의적인 폴링 전략 방법을 제공해야 할 수도 있습니다.

예 : 파티 A의 활동이 없으면 3 초마다 투표하십시오. 파티 A가 입력하는 동안 5 초마다 투표하십시오. 이것은 단지 일러스트 라톤 일 뿐이며, 당신은 숫자를 가지고 놀거나, 더 효율적인 것과 함께 나올 수 있습니다.

마지막으로, 데이터 교환. 과제는 동일한 정보를 전달하기 위해 최소 데이터 크기를 전달하는 방법을 찾는 것입니다.

내 2 센트 :)

SQL Server 2005를 사용하는 경우 알림 서비스를 볼 수 있습니다. SQL 2008에서 알림 서비스가 제거되었으므로 SQL Server가 클라이언트 응용 프로그램에 데이터베이스 변경 사항을 알릴 수 있도록 설계되었으므로 이는 SQL 2005에 고정 될 것입니다.

좀 더 확장 가능한 것을 원한다면 사용자 레코드에 몇 가지 비트 플래그를 넣을 수 있습니다. 사용자를위한 메시지가 변경되면 새 메시지의 비트가 True로 변경됩니다. 메시지를 읽으면 메시지가 0으로 변경됩니다. 사람들이 로그인 할 때도 동일합니다. 그렇게하면 이미 캐시에있을 가능성이 좋은 아주 작은 필드를 읽고 있습니다.

워크 플로가 준비 될 것입니다. 1이면 메시지 테이블에서 메시지를 받으십시오. 0이라면 아무것도하지 않습니다.

ASP.NET 4.0에서는 할 수 있습니다 JavaScript 객체 및 배열과 함께 관찰자 패턴을 사용하십시오 IE : Ajax JSON은 jQuery 및 또는 pagemethods로 호출됩니다.

반환 할 데이터가 있는지 여부에 대한 분석을 수행하려면 항상 데이터베이스를 칠해야합니다. 트릭은 해당 통화를 작게 만들고 필요할 때만 데이터를 반환하는 것입니다.

두 가지가 있 관련된 솔루션에서 SQL Server2005 에서 계속 사용할 수 있는 SQL Server2008:

1) 서비스 브로커, 할 수 있는 구내구독자를 게시 읽기에 큐(받으로 명령을 기다..).귀하의 경우에 당신이 원하는 메시지를 보낼 데이터베이스를 통해 서비스를 이용하여 브로커 서비스는 잘난척한 큐,할 수 있는 선택을 기다리고 클라이언트입니다.없 폴링 기다리는 클라이언트를 활성화할 때는 메시지를 받았습니다.

2) 쿼리가 알림, 을 허용하는 가입자를 정의하는 쿼리를 수신할 때 알림 데이터 집합하는 것이 결과에서 실행하는 쿼리를 바꿀 것입니다.에 건설 서비스 브로커,쿼리가 알림이 다소 쉽게 사용할 수 있지만,또한 약간 미만 효율적입니다.(지 않는 쿼리를 통과 그들의 형제 자매,이벤트 알림는 자주 잘못 알림서비스(NS),는 문제가 발생하기 때문에 NS decommitted2008 년에,그러나,쿼리&이벤트 알림이 아직 완전히 사용할 수 있도 향상에 SQL Server2008).

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