クライアント側のSilverlightとサーバー側の.NET4で利用されるアプリケーションフレームワークを開発しています。内部的には、フレームワークにはディクショナリとキューのデータ構造があり、複数のスレッドがコレクションに同時にアクセスします。
サーバー側では、 System.Collections.Concurrent名前空間で使用可能なConcurrentDictionaryクラスとConcurrentQueueクラスを利用したいと思います。ただし、これらのクラスはSilverlight4では実装されていません。
私が検討している2つのアプローチは次のとおりです。
- ConcurrentDictionaryクラスとConcurrentQueueクラスを逆コンパイルし、Silverlightクラスライブラリに実装します。これらは、 System.Collections.Concurrent名前空間を使用してスコープされます。
- サーバー側とクライアント側の両方で使用できる共有ライブラリに必要なカスタムスレッドセーフコレクションクラスを実装します(または信頼性の高いSilverlightスレッドセーフコレクションの実装を見つけます)。
最初のアプローチでは、必要なSilverlightデータ構造を実装するだけで済みますが、Silverlightの実装と.NET4で実装された同時収集クラスの間に不一致が生じるのではないかと心配しています。
2番目のアプローチは、クライアント側とサーバー側の両方で一貫した同時収集の実装を提供しますが、私は車輪の再発明をしているように感じます。
SilverlightでConcurrentDictionaryクラスとConcurrentQueueクラスを実装することは非常に難しいとは思われませんが、Silverlightにスレッドセーフなコレクションクラスのライブラリがすでによく採用されていますか?