2012-03-06 14 views
0

出力コンテンツをキャッシュするWebサービスを作成しようとしています。Webサービス - キャッシュ更新

私は[WebMethod(CacheDuration=1800)]を追加しましたが、問題は、Webサービスが30分後に自動的にそのキャッシュを更新したいということです。

私はC#で.netを使用しています。 Webサービスは、実際にはXMLデータを取得し、解析してクライアントに送信するプロキシです。

Webサービスは、一定期間(どのくらい)にキャッシュを更新できますか?

+1

質問がありますか? – Oded

+0

はい。ウェブサービスは、ある期間(それ自身)の後にキャッシュをどのように更新できますか? – user1226051

+0

その場合、なぜ30分間キャッシュするのですか? 1日キャッシュする。 – Oded

答えて

0

timer classesのいずれかを使用して、キャッシュされた結果セットをリフレッシュして、クラスのフィールドに保存することができます。

この方法では、IISではなくキャッシュを管理できます。

タイマーの代わりにはCacheクラスを使用することです - それは有効期限が切れると自動的にキャッシュを更新するCacheItemUpdateCallbackを使用して(まだそれがリフレッシュするとして、ユーザがメソッドを呼ぶかもしれない小さなウィンドウを残して - おそらくを使用キャッシュ項目)。

+0

あなたのリンクによると、私は、Webで "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

関連する問題