Я занимаюсь разработкой инфраструктуры приложений, которая будет использоваться Silverlight на стороне клиента и .NET 4 на стороне сервера. Внутри каркас имеет структуры данных словаря и очереди, в которых несколько потоков будут одновременно обращаться к коллекциям.
На стороне сервера я хотел бы использовать классы ConcurrentDictionary и ConcurrentQueue , доступные в пространстве имен System.Collections.Concurrent . Однако эти классы не реализованы в Silverlight 4.
Два подхода, которые я рассматриваю:
- Декомпилировать ConcurrentDictionary
и классы ConcurrentQueue и
реализовать их в Silverlight
библиотека классов. Они будут ограничены областью имен System.Collections.Concurrent .
- Реализовать пользовательский потокобезопасный
классы коллекции мне нужно в общем
библиотека (или найти надежный
Многопоточная коллекция Silverlight
реализации), которая может использоваться как на стороне сервера, так и на стороне клиента.
Первый подход позволил бы мне просто реализовать нужные мне структуры данных Silverlight, но я беспокоюсь о несоответствии между моей реализацией Silverlight и классами одновременной коллекции, реализованными в .NET 4.
Второй подход обеспечил бы согласованную реализацию одновременной коллекции как на стороне клиента, так и на стороне сервера, но мне кажется, что я бы заново изобрел колесо.
Не похоже, что реализация классов ConcurrentDictionary и ConcurrentQueue в Silverlight была бы очень сложной, но есть ли уже хорошо принятая библиотека потоковобезопасных классов коллекции для Silverlight?