私の ASP.Net アプリケーションには、生バイト データのやや巨大な配列 (1 MB * 100) があります。それらは、非常に頻繁に複数のユーザーにブロードキャストする必要があります。
スレッドはバックグラウンドでデータを処理し、時々更新します。
それらの間でバッファを共有するための最良のオプションについて提案していただけますか?
私の ASP.Net アプリケーションには、生バイト データのやや巨大な配列 (1 MB * 100) があります。それらは、非常に頻繁に複数のユーザーにブロードキャストする必要があります。
スレッドはバックグラウンドでデータを処理し、時々更新します。
それらの間でバッファを共有するための最良のオプションについて提案していただけますか?
これは、メモリ マップされたファイルの場合に適しているように思えます。
メモリ マップト ファイルには、仮想メモリ内のファイルの内容が含まれます。ファイルとメモリ空間の間のこのマッピングにより、アプリケーション (複数のプロセスを含む) は、メモリを直接読み書きすることによってファイルを変更できます。.NET Framework 4 以降では、ネイティブの Windows 関数がメモリ マップト ファイルにアクセスするのと同じ方法で、マネージ コードを使用してメモリ マップト ファイルにアクセスできます。
http://msdn.microsoft.com/en-us/library/dd997372(v=vs.110).aspx
http://msdn.microsoft.com/en-us/library/vstudio/system.io.memorymappedfiles.memorymappedfile
スレッドはデータを処理します
それは ASP.Net スレッドですか? 私は、IIS のコンテキスト内でそのようなタスクを実行しません (なぜでしょうか)。代わりに、Windows サービスなど、IIS の外部にある別のプロセスで共有メモリを管理することを提案します。
メモリ マップド ファイル メカニズムは、データを更新する Windows サービスと、必要に応じてデータにアクセスする個々の ASP.Net ワーカー スレッドに適しています。