すべてのユーザーが共有する単純なテーブルをASP.NETのサーバー上のメモリに格納する簡単な方法はありますか?たとえば、単純なチャットプログラムを持っていて、最後の100レコードをメモリに保持したいとします(これは実際のアプリケーションではなく、単なる例です)。 100個のレコードしかないこのチャット・バッファであることに専念したテーブル全体をSQLで使用したくないとします。メモリ内のデータテーブルを作成し、接続されたユーザー間で共有できる方法はありますか?単純なテーブルをASP.NETのメモリに格納しますか?
答えて
このクラスの1つのインスタンスがアプリケーションドメインごとに作成し、それ は限りアプリケーションドメインがアクティブのままとして、有効なままです。 このクラスのインスタンスに関する情報は、 HttpContextオブジェクトのCacheプロパティまたは PageオブジェクトのCacheプロパティを介して利用できます。
DataTable yourDataTable = new DataTable();
Cache["yourTable"] = yourDataTable;
//to access it
DataTable dt = Cache["yourTable"] as DataTable;
あなたは、すべてのユーザーのためのメモリとaccesableで物事を格納するHttpApplicationState
オブジェクトを使用することができます。
HttpContext.Current.Application["MyTable"] = myTable;
または(よりスレッドセーフである)Cache
オブジェクト:
HttpContext.Current.Cache["MyTable"] = myTable;
ここです良い記事約Application and Cache。
キャッシュオブジェクトとアプリケーションオブジェクトは、セッションオブジェクトよりも広い範囲を提供し、データはASP.NETアプリケーション内のすべてのクラスで使用できます。
はい、それはグローバルキャッシュになります。それを行うためのダウンとダーティな方法は、アプリケーションの状態です値を格納することです。これは本質的に、IISが実行されている限り常に重要なバリューストアです。あなたはそれを同じように `
var myObject = Application["someKey"];`
にアクセスすることができます
Application["someKey"} = SomeObject;
はるかにエレガントな解決策がありますが、あなたは、少量のデータを格納する必要があるときには、簡単なグローバルなもののためにであなたを取得します。
あなたは多くのオプションは、アプリケーションキャッシュは、すべてのユーザー間で共有されていると同じASP.NETアプリケーションプール内のすべてのセッションは、ここにチェック:
http://msdn.microsoft.com/en-us/library/6hbbsfk6(v=vs.100).aspx
は別のオプションは、メモリ内で使用することができ/ SQL Server CompactやSQL Liteのような、組み込みのデータベースで、実際にdbのようなアプローチを使用するかどうかによって異なります。
- 1. サーバー、dbまたはjsonに単純なデータを格納していますか?
- 2. MySQLテーブルに単語を格納する
- 3. 単純な配列マップに値を格納する
- 4. 単純なデータセットの格納、列挙またはデータベースの使用?
- 5. JavaのBufferedReader.readLine()はファイル全体をメモリに格納しますか?
- 6. ASP.NET必要なDLLはどこに格納しますか
- 7. 明示的なIDを持たない単純な関係を格納する
- 8. Sql Geography列またはより単純な列にLong/Latを格納していますか?
- 9. クッキー、純粋なJavaScript、jqueryにオブジェクトの配列を格納しますか?
- 10. テーブル名をストアドプロシージャまたは単純なSQLクエリに動的に渡し、その結果を変数に格納する方法はありますか?
- 11. 私の単純なListViewアプリケーションはメモリをリークしています。
- 12. Pythonでの単純なデータ格納のための最適なフォーマット
- 13. 計算フィールド:DBに格納するか、格納しないか?
- 14. asp.netアプリケーションでDbContextをどこに格納しますか?
- 15. asp.netプロファイルに汎用辞書を格納しますか?
- 16. ASP.NETアプリケーションはどこにデータファイルを格納しますか?
- 17. なぜこの単純なPHPスクリプトはメモリをリークしますか?
- 18. AJAXの結果を純粋なJavascriptに格納する
- 19. 単純なメモリ割り当てのセグメンテーションフォールト
- 20. ユーザーコントロール単純なデータバインド - ASP.NET
- 21. 単純なhtml5ボタントリガポストバックasp.net webform
- 22. 単純なASP.NETソリューションにSQL Azureを使用できますか?
- 23. テーブルの行に他のテーブルのWebサービスからのアクセスを格納します
- 24. ハイブはテーブルをローカルに格納しますか?
- 25. C++はどのように関数とオブジェクトをメモリに格納しますか?
- 26. IDをエンコードして一意のコードとして格納し、行の作成時にテーブルに格納します
- 27. ASP.Net WebAPIのポストメソッドを格納し、null値
- 28. NLTKステミングは単純なケースに合格しません
- 29. SQLテーブル:テーブルBの単一レコードのテーブルAの未知数の行への参照を格納します
- 30. テーブルに格納されたリストから各テーブルの数を選択します。
なぜテーブルにする必要がありますか?単純な 'static Queue'はどうでしょうか? –
paul