2012-06-22 2 views
4

웹 응용 프로그램에서 데이터베이스 저장 프로 시저를 호출하여 고객에 따라 데이터를 반환하는 webservice를 호출하는 경우가 있습니다. SP에 의해 반환 된 80,000 개의 행이 있으며 SP에 JOIN이 포함되어 있으므로 약 8-10 초가 소요됩니다.ASP.NET 백그라운드 처리

웹 서비스가 끝나면 캐시에 8 십만 개의 행을 넣고 웹 서비스는 캐시에서 데이터를 반환한다고 결정했습니다. 백그라운드 스레드는 15-20 초 후에 데이터를 함께 작업하고 업데이트합니다.

ASP.NET 2.0의 뒷 배경 처리에 대한 확실한 메커니즘을 알고 싶었습니다.

도움과 협조에 미리 감사드립니다.

+2

심각하게 잘못하고있는 것보다 8 백만 행을 심각하게 반환하는 경우. 엄청난 컴퓨팅 파워의 낭비입니다. 왜냐하면 저는 결코 당신을 믿지 않을 것이기 때문에 모든 행을 표시해야합니다. 페이징 (페이징)이라는 말을 들어 보셨습니까? – walther

+0

Lolz, 나는 그것을 내가 10 배 더 높게 썼다는 것을 확인했다. 그래서 나는 그것을 8 억 수천 개로 수정했다. :) 예치 페이징에 대해 들었습니다. 그리고 우리는 그 8 억 명의 사용자 앞에 25 개의 레코드 만 표시 할 것입니다. –

+0

8M, * 00K, 같은 것 ... 너무 많은 데이터. 한 번에 25 개의 행만 표시하는 경우 데이터베이스에 25 개의 행을 쿼리하십시오. –

답변

0

을 사용하면 백그라운드 스레드를 스핀 오프하고 데이터를 캐싱 할 수 있습니다. 다음은 blog post으로 사용자가 제안하는 것을 수행하는 방법을 보여줍니다.

0

Golbal.asx (Application_Start 이벤트)에 스레드를 생성하면 쉽게 수행 할 수 있으며 해당 스레드가 작업을 수행합니다. 또한 HTTPModule 기반 구현과 달성하려는 작업에 대한 캐시 기반 구현이 있습니다.

그러나 IDLE 시간 초과 (또는 다른 이유로) 때문에 응용 프로그램 풀이 재생 될 때 모두 작동하지 않기 때문에 위의 방법 중 하나를 사용하지 않는 것이 좋습니다.

http://haacked.com/archive/2011/10/16/the-dangers-of-implementing-recurring-background-tasks-in-asp-net.aspx

내가 추천하는 것은 : - - : 1은 간단한 콘솔 응용 프로그램을 만드는 Windows 서비스 2를 만들고 창 3에 예약 된 작업에 추가 여기에 모든 문제의 세부 사항은 - 특정 빈도 후에 실행될 데이터베이스에 작업을 생성하십시오. 자세한 내용은

은에서 참조하시기 바랍니다 : -

http://zeeshanumardotnet.blogspot.com/2010/01/how-to-send-periodictimely-emails.html

+0

Windows 서비스 또는 콘솔 응용 프로그램에서 웹 서버의 캐시에 데이터를 추가 할 수 있는지 확실하지 않습니다. –

0

없음 배경 처리가 여기에 도움이 될 수 없습니다. 새로운 db 녀석을 고용하고 실제로 데이터 페이징을 이해했는지 확인하십시오. 25 행의 데이터를 쿼리하는 데 10 초가 걸릴 수 있습니다. 이는 단지 미친 짓입니다.