2012-08-12 2 views
3

누군가가 시스템 설계 중에이 문제에 대한 해결책을 올바른 방향으로 찾도록 도울 수 있기를 바랍니다.시간 초과/종료 날짜 이벤트에 대한 해결책

나는 경매에 특정 종료 날짜/시간이있는 경매 사이트를 만들고 있습니다.

.NET Timer가 사용자에게 남은 시간을 표시하고이 카운트 다운이 발생하면 해당 SQL Server 백 엔드 SQL 데이터베이스를 업데이트하여 경매가 완료되었다고 말하면서 우승 한 사용자에게 알리고 CLOSE 기능을 실행합니다.

Timer 이벤트가이 CLOSE 이벤트를 생성하지 않도록 해당 시간에 브라우저에서 실제로 열리지 않는 경매에 대해 어떻게하는 것이 좋을까요?

이상적으로 나는 경매 종결 시간이 끝난 시점에서 뭔가를 실행할 필요가 있습니까?

감사

+0

여기에 무엇이 남았습니까? 답변이 도움이 되었습니까? – bryanmac

+0

사이트가 공유 호스팅 솔루션에있어 서비스가 실행되지 않아서이 솔루션을 사용하고 있기 때문에 사이트가 약간 다른 접근 방식을 취해야했습니다. http : //www.codeproject .com/Articles/12117/Simulate-a-Windows-Service-ASP-NET-to-run-sc를 사용하여 DoWork 부분에서 나는 경매 마감 날짜를 <지금 확인하고 거기에서 이메일을 보내고 구매자와 판매자 및 경매 상태를 종료합니다. 작동이 원활하며 30 분마다 확인합니다. –

답변

4

하나의 옵션은 데이터베이스에 경매 항목이 끝나는/닫히고 날짜/시간을 저장하는 것입니다. 그런 다음 닫는 것에 반응하는 것에 대해 걱정하지 마십시오 (클라이언트의 경우 타이머). 닫힌 상태로 업데이트하십시오. 그것이 닫히는 것을 결정하는 것은 단순히 사실> 지금은 닫힌 날짜/시간이라는 사실입니다.

편집 : 코멘트에

당신은 또한 경매 닫을 때 메일을 보낼 필요가 진술 아래. 이 경우 폐쇄 된 모든 이벤트를 선택하고 메일을 보내려면 일종의 백그라운드 처리가 필요합니다. 날짜 시간을 저장하여 닫힌 상태를 정의 할 수 있습니다. bg 처리는 현재 닫힌 날짜보다 큰 모든 이벤트를 선택할 수 있고 처리 된 비트는 거짓입니다. 일단 이들을 선택하면 내구성 큐 (sql, azure 큐 등의 테이블)에 저장하십시오. 그런 다음 백그라운드 처리를 통해 대기열을 비울 수 있습니다. 각 항목을 처리하고 메일을 보낼 때 처리 된대로 이벤트를 업데이트합니다. 푸른 에서

  • 작업자 역할을 (하나 AT이있는 경우에만이 작업을 수행) 프로세스에 스레드와 PROC 타이머에서

    1. Windows 서비스
    2. :

      당신은 배경 처리를위한 여러 옵션이 있습니다

    3. SQL 에이전트 작업
  • +0

    +1 서비스가 필요한 내 대답과 달리이 솔루션은 플래그를 업데이트 할 필요를 없애고 비즈니스 논리를 사용하여 경매 만료를 나타냅니다. –

    +0

    안녕하세요 @bryanmac, 나는 내 DB에 경매가 닫히고 페이지의 타이머가 현재 이것을 사용하는 날짜/시간을 저장하고 있습니다. 그러나 사용자가 페이지를 열지 않은 경우 닫기 이벤트가 발생하지 않으므로 Windows 서비스에 대한 아래의 답변을 통해 경매가 종료되었을 때 효과적으로 응답하는 것이 가장 좋습니다. –

    +0

    복잡성, 움직이는 부품 및 필요하지 않은 대기 시간이 추가됩니다. 대신 단순히 닫힌 상태로 업데이트하지 마십시오. 해당 이벤트로 이벤트가 종료 된 날짜를 저장하고 해당 이벤트가 현재 종료되었는지 여부를 정의합니다. – bryanmac

    2

    설정된 시간 내에 데이터베이스를 폴링하는 Windows 서비스를 작성하십시오. le 경매의 최소 길이보다 적습니다. 예를 들어 하루를 말하십시오). 이 서비스는 그 시간 내에 종료 될 메모리 동작을 저장하고, 종료 된 동작이 있는지 여부를 매 초마다 점검합니다. 종료 된 경매의 경우 CLOSE 이벤트를 시작하십시오.

    +0

    이 방법을 사용하는 것이 가장 좋은 방법이라고 생각하지만 Windows 서비스의 작동 방식을 조사해야합니다. 나는 효과적으로 우승자에게 이메일을 보내고 경매가 끝날 때 경매를 닫고 싶다. 그래서 나는 창세 서비스가이 시간들을 체크하고있을 때 나는 이것을 실행할 수있다. –

    +0

    질문에, 당신은 그것이 끝날 때 이메일을 보낼 필요가 없다고 말했습니다. 그런 다음해야 할 일이 있다면 폐쇄 된 경매를 확인하기 위해 배경 작업자 (Windows 서비스 또는 BG 스레드와 같은)가 필요합니다. 이 시점에서 두 가지 방법을 조합하여 사용할 수 있습니다. – bryanmac

    +0

    +1 두 가지의 하이브리드가 필요할 가능성이 높기 때문에 (처음에는 메일을 보내야한다고 말하지 않았 음). – bryanmac