2

私のMVCベースのアプリケーションは、大量のデータを送り返すいくつかのWebサービスをフックします!同じものを使用して、ビューをレンダリングします。Webサービスは遅く、私の手に負えません。したがって、セッションごとにこの情報を保存したいのですが、これによりWebサーバーが停止するのではないかと心配しています。数百人のユーザーがいると、Webサーバーのメモリが不足します。

このセッションデータをセッションごとにファイルに保存する方法はありますか?私は、箱から出してすぐに使えるオープンソースソリューションをもっと調べています。

歓迎します、新しい提案も!

4

3 に答える 3

2

サーバーファームでの実行に一般的に関連するいくつかの例外を除いて、ほとんどすべてのオブジェクトをセッションストレージに格納できます。ただし、ここではそれらのケースを無視します。

数MBのデータのみを処理している場合、それをSessionオブジェクト(または@Rickが示唆するようにキャッシュ)に格納することは必ずしも大きな問題ではありません。データがWebサービスから返され、独自の内部データ構造に解析されたら、データ構造のルートオブジェクトをセッションに配置するだけです。私はこの方法をかなり頻繁に使用して、実行に時間がかかるデータベースクエリの結果を保存します。特に、クエリ条件が頻繁に変更される可能性が低い場合はそうです。

大規模なデータセットの場合は、おそらくデータベースを使用して情報を保存する必要があります。返すデータの構造に一致するテーブルを作成し、何らかの方法でデータにタグを付けて、データの古さやフェッチ時に使用された基準を示します。必要に応じて更新し、各クライアント要求のレコードをデータベースに照会します。

SessionIDを使用してデータを保存するための一時ファイルを作成してそれらを識別するなど、他にも多くのオプションがありますが、最初にデータベースオプションを調査することをお勧めします。

于 2013-02-15T07:22:41.290 に答える
1

キャッシングはあなたの友達です。また、MSテクノロジを使用しているため、キャッシュクラスを確認することをお勧めします。

于 2013-02-15T07:10:05.793 に答える
0

結果コレクションをシリアル化してxmlとしてファイルに保存するか(XMLから直接linq / XPathを使用して処理することもできます)、または任意の.netネイティブxmlデータベースを使用してデータをファイルに保存および永続化できます。

于 2013-12-27T09:11:13.083 に答える