2009-08-14 3 views
0

asp.net 웹 사이트에서 한 번에 많은 SMS 메시지를 보내고받는 메일에 대한 POP3 계정을 폴링 한 다음 많은 수취인에게 SMS를 폴링해야합니다. 한 번에.내 응용 프로그램의 프로그래밍 디자인 아키텍처

나는이 일을 생각하고있는 방법은 내 SQL 백 엔드에 연결하여 매 10-20 초 정도의 SMS 메시지가 있는지 확인하는 Windows 서비스입니다. 그렇다면 목록의 모든 메시지를 가져 와서 테이블에서 삭제 한 다음 메시지를 보냅니다.

pop 계정과 동일한 방식입니다.

ASP.NET 페이지가 시작될 때 asp.net 웹 페이지에서 차단하지 않고이 서비스를 가장 잘 제공하는 방법에 대한 아이디어 (예 : SQL Server에 추가 된 메시지)?

플랫폼은 Windows Server 2003 R2, sql 2008 표준, asp.net 3.5 SP1입니다.

귀하의 조언에 감사드립니다.

답변

2

SQL Server 서비스 브로커의 큐 메커니즘을 사용하여 유사한 시나리오를 구현했습니다. 모든 삽입 된 SMS 레코드는 SmsID가 포함 된 메시지를 서비스 브로커 큐에 삽입하는 트리거에 의해 캐치됩니다.

그런 다음 큐에서 메시지를받는 저장 프로 시저가 필요합니다. 메시지가 없으면 다음 항목이 삽입 될 때까지 프로 시저가 실행됩니다. 대기열을 들으려고 리소스를 차지하지 않기 때문에 괜찮습니다.

다음으로 STP를 지속적으로 (재귀 적으로) 호출하고 SMS를 어셈블하고 전송하는 Windows 서비스가 필요합니다.

테이블의 플래그를 통한 Service Broker Queue의 장점은 스레드 안전입니다. 이렇게하면 동시성 문제에 대해 너무 많이 걱정할 필요없이 원하는만큼 많은 서비스 인스턴스를 가질 수 있습니다.

당신은 여기 좋은 서비스 브로커 tutoial을 찾을 수 있습니다 http://www.developer.com/db/article.php/3640771

+0

2 ~ 3 년 전에이 질문을하면 SQL Notification Service를 권장하지만 SQL 2005 표준에서만 작동하는 것으로 알려져 있습니다. SQL 2008에서는 알림 서비스가 더 이상 사용되지 않으며 MS 전문가는 Service Broker에서 제공하는 기능이므로 +1을 투표합니다. –

1

대신이에 대한 MSMQ (Microsoft 메시지 대기열)을 사용할 수 대기열에 대한은 SQL Server를 사용.

MSMQ는 설치하기 쉽고 SQL Server보다 확장 성이 뛰어납니다.

그래서 당신이 보낼 메시지를받을 MSMQ에서 새 큐를 설치해야했습니다. 메시지는 일반적으로 메시지, 보낸 사람 및받는 사람을 설명하는 일종의 Message 개체입니다.

그런 다음 일정 간격으로 대기열을 폴링하는 서비스를 설정하거나 새 메시지가 대기열로 전송 될 때마다 선택한 클래스를 시작하도록 MSMQ를 설정할 수 있습니다.

메시지의 로그가 필요하면 메시지가 전송되었을 때 service/sender 개체가 SQL Server의 로그에 쓸 수 있습니다.

관련 문제