3

ユーザーが複数のタスクで構成されるスケジュールを作成できるようにする Web サイトを構築しています。スケジュールとタスクの情報はデータベースに保存されます。

スケジュールを作成するとき、ユーザーはスケジュールを最終的に保存する前に、必要な数のタスクを追加、編集、または削除できます。これらの変更はデータベースに永続化されるため、ユーザーは後で編集を再開できます (セッションが予期せず終了したり中断されたりした場合)。

タスクを更新するリクエストが来るたびに、Web サイトはデータ アクセス レイヤーから適切なメソッドを呼び出し、データベースからスケジュール データ オブジェクト全体を再リクエストして、ユーザーに表示します。

タスクのみが編集されている場合、これはやり過ぎのように思えます。スケジュール オブジェクトとそのタスク リストを HttpContext.Session にキャッシュし、変更される個々のタスク (または変更された場合はスケジュール オブジェクト) のみを更新したいと考えています。

編集操作が成功したという確認を得たときにのみキャッシュされたオブジェクトを更新する限り、2 つのバージョンが同期しなくなる危険性はありますか?

4

2 に答える 2

0

セッションがリセットされると、web.configの更新、dllの変更、IISによるアプリプールの自動リサイクルなどが原因で、セッションがクリアされます。複数のWebサーバーがある場合は、複数のWebサーバー間およびデータベース内の1つのWebサーバー間でセッションを同期することについても心配する必要があります。個人的には、回避できるセッションには何も保存しないようにしています。

于 2013-02-18T23:54:47.670 に答える
0

2 つのバージョンが同期しなくなる危険性はありますか

編集が成功した後にサーバーから新しい状態を取得してキャッシュを更新する限り、問題は発生しません。

心に留めておくべきことの 1 つは、共同編集を許可する場合は、ローカル コピーが古くならないようにポーリングを導入する必要があるということです。ただし、あなたの説明からすると、そうではないようです。

于 2013-02-18T23:57:19.567 に答える