0

1 つのマスター アプリケーション スイートにすべて関連する複数のアプリケーションからデータを収集するトレース ロギング メカニズムの表示を処理する MVC プロジェクトがあります。トレース ログ ツールは、例外やその他のさまざまなログ情報を収集し、後で使用できるようにデータベースに配置するサービスです。この MVC プロジェクトは、その消費の一部です。

おわかりのように、Entity / LINQ を介して返されるデータはたくさんあります。現在、開発者はすべてのデータを取得しており、セッション変数を使用してこのデータを保持しています (3 ~ 5 MB 相当のデータが返されているようだと彼は言ったと思います)。512 のトレースのみがビュー/ブラウザーに送り返されます。ユーザーは、AJAX 呼び出しを介して入力したものによってフィルタリングすることができます。開発者は、古い Session["name"] オブジェクトを使用してデータを入力し、LINQ を使用してサーバー上でフィルター処理しているため、フィルターが選択または入力されるたびにトレース サービスにアクセスすることはありません。

ローカルでは機能しますが、リモートでは機能しません。IIS に問題があると思いますが、まだ調べていません。

セッションがこのような大規模なデータに最適なアプローチなのか、それともセッションの代わりにより良い推奨事項があるのか​​ どうか疑問に思っていました.. MVC がステートレスであることはわかっており、TempData 以外のものをできるだけきれいに保つようにしています。できますが、そうでなければこれに取り組む方法がわかりません

4

1 に答える 1

1

It could be better to use HttpRunTime.Cache to store the data as it has flexibility in how it is expired, especially if the traces are global to the application, e.g.

private List<string> GetApplicationSuiteTraces() 
{
    List<string> applicationSuiteTraces = Cache["ApplicationSuiteTraces"];

    if(applicationSuiteTraces == null) 
    {    
       applicationSuiteTraces = Service.GetTraces();
       Cache.Add("ApplicationSuiteTraces", applicationSuiteTraces, null, DateTime.Now.AddSeconds(600), Cache.NoSlidingExpiration, CacheItemPriority.High, null);
    }

    return applicationSuiteTraces;
}
于 2012-09-13T02:51:17.310 に答える