1

サーバーファームでasp.netアプリケーションを実行しています。そのため、進行中のセッションは終了します。状態サーバーはありません。SQLサーバーデータベースがあります(状態サーバーには使用できません)。同じWebサーバーサービス機能を強制することはないため、どのWebサーバーが次のページにサービスを提供するかは保証されません。

ページ間でデータのブロック(ビッグオブジェクトの状態)を保存する必要があります。データが大きくなる可能性があり、データがネットワークを通過することを望まないため、ビューステートを使用したくありません。データベースを使用してデータを保存し、ビューステートでネットワーク全体のレコードIDを使用して、次のページのデータを取得できます。

より良い解決策はありますか?

4

3 に答える 3

4

データベースを使用してデータを保存し、ビューステートでネットワーク全体のレコードIDを使用して、次のページのデータを取得できます。

他のすべてのオプションを削除しました。

于 2009-08-11T21:28:58.833 に答える
1

さて、あなたはすでにほとんどのオプションを除外していると思います。また、他のサービスをインストールできないと仮定すると、他に2つの可能性が思い浮かびます。

  1. 書き込み可能なファイル共有を使用してデータを保存します。
  2. 個々のWebサーバーが相互に通信できるようにします。たとえば、マシンのIPまたは名前を生成された一意の識別子の一部にします。そうすれば、ポストバックで別のサーバーに到達した場合、そのサーバーは元のサーバーを呼び出してデータを取得できます。注意:1台のサーバーがダウンした場合(またはASP.NETプロセスがリサイクルされた場合)、すべてのデータが失われます。*この問題に関係なく、それほど頻繁に発生することはないはずです。

SQL Serverバージョンと同様に、データをなんらかの方法でクリーンアップすることを忘れないでください。オプション1は、その点でSQL Serverと非常に似ていますが、SQL Serverの場合は、一元化されたクリーンアップジョブである可能性があります。ファイル共有の場合、問題は次のようになります。どのサーバーが中心ですか。

*)もちろん、ASP.NETからセカンダリプロセスを生成することもできます。ここでの問題は次のようになります。そのプロセスに問題がある場合はどうなりますか?管理可能にしない限り、デフォルトではシステム管理者は管理できませ

于 2009-08-11T21:34:47.260 に答える
0

正しく読んだかどうかはわかりませんが、データベースを使用してasp.netセッションを保存できませんか?

<sessionState
      mode="SQLServer"
      sqlConnectionString="somedb"
      cookieless="AutoDetect"
      timeout="20"
    />

memcached(http://www.danga.com/memcached/などの分散キャッシングソリューションを使用して、ポストバック間でデータを永続化することもできます。

于 2009-08-11T21:39:13.197 に答える