私は1日に100回実行するコンソールアプリケーションを持っていて、大きなファイル(例えば、合計サイズが3-4Gbの50個のファイル)から同じデータを読み込みます。.NETプロセス間で大きなインメモリコレクションを共有することは可能ですか?
私は、アクセスを高速化し、データのライフタイムを制御するために、メモリにデータをキャッシュするWindowsサービスを作成することを考えています(これらの50個のファイルのセットは日によって異なります)。
私は別の考慮事項があるしかし、コンソールアプリケーションが...サービスによって書かれたメモリから
をファイルを読み込みますので、共有メモリマップファイルを実装するつもりです。データは、毎回.NETオブジェクトに変換されます。
私の質問 - は、ファイルではなくの.NETオブジェクト(リスト)を共有する手段がありますか?
P.S.データは手動でシリアル化された一連のバイトです
TomTomの回答を参照してください。この問題を回避するには、要件を満たす場合は、データを管理し、そのデータに対してロジックを実行するサービスを作成することができます。その単純な検索や集計が.....の場合、コンソールアプリケーションは単にサービス内のメソッドを呼び出し、そのメソッドの結果を処理します。 – Polity
3-4 GBのメモリ?本当に?ああ、それは痛い。 – Steve
@Polity - もし私がマップされたファイル等を気にしないだろうなど、ロジック自体は1日100回変更します。データは静的です。これが私が説明した方法でやっている理由です... –