2012-03-06 6 views
0

출력 내용을 캐시하는 웹 서비스를 만들려고합니다.웹 서비스 - 캐시 업데이트

나는 [WebMethod(CacheDuration=1800)]을 추가했다. 그러나 문제는 웹 서비스가 요청을하지 않고 30 분 후에 자동으로 캐시를 업데이트하기를 원한다는 것이다.

.net을 C#과 함께 사용하고 있습니다. 웹 서비스는 실제로 XML 데이터를 가져 와서 파싱하고 클라이언트에게 보내는 프록시입니다.

웹 서비스는 일정 기간 (자체적으로) 후에 캐시를 어떻게 업데이트 할 수 있습니까?

+1

질문이 있으십니까? – Oded

+0

예. 웹 서비스는 얼마 동안 (자체적으로) 캐시를 업데이트 할 수 있습니까? – user1226051

+0

그런 경우 왜 30 분 동안 캐시합니까? 하루 동안 캐시하십시오. – Oded

답변

0

timer classes 중 하나를 사용하면 캐시 된 결과 집합을 새로 고쳐서 클래스의 필드에 저장할 수 있습니다.

이렇게하면 IIS 대신 캐시를 관리 할 수 ​​있습니다.

타이머에 대한 대안이 Cache 클래스 사용하는 것입니다

-이 만료되면 자동으로 캐시를 새로 고침하는 CacheItemUpdateCallback를 사용하여가 (여전히 사용자가 같은 방법 를 호출 할 수있는 작은 창을 잎이 새로 고침 - 아마도 사용 캐시 항목).

+0

링크에 따라 웹상에서 "System.Windows.Forms.Timer"를 사용할 수 없다고 생각합니다. 나는 "System.Timers.Timer"클래스를 시도하고 Elapsed 이벤트를 사용했지만 아무런 처리기를 치지 않았습니다. 아래에 언급 된 코드를 사용했습니다. 'System.Timers.Timer t = 새로운 System.Timers.Timer(); t.Enabled = true; t.Interval = 5000; t.Elapsed + = 새 System.Timers.ElapsedEventHandler (t_Elapsed) t_Elapsed (개체를 보낸 사람, System.Timers.ElapsedEventArgs e)를 무효 { }' – Pankaj

+0

내 첫번째 생각은 몇 시간 동안 잠들지 새 스레드를 사용하는 것이 었습니다 그런 다음 실행을 시작하고 (캐시를 업데이트) 다시 일시 정지합니다. 그래도 간단하게 들릴 지 모르지만 구현할 악몽입니다. 업데이트 간격 동안 공유되는 모든 리소스는 잠겨 있어야 업데이트 할 수 있습니다. 이것에 대한 제안? – user1226051

+0

어, 확실하지는 않지만 t.start()가 필요하다고 생각합니다 ... – user1226051