我正在开发一个应用程序框架,客户端的 Silverlight 和服务器端的 .NET 4 将使用该框架。在内部,该框架具有字典和队列数据结构,其中多个线程将同时访问集合。
在服务器端,我想利用System.Collections.Concurrent命名空间中可用的ConcurrentDictionary和ConcurrentQueue类。然而,这些类并未在 Silverlight 4 中实现。
我正在考虑的两种方法是:
- 反编译 ConcurrentDictionary 和 ConcurrentQueue 类并在 Silverlight 类库中实现它们。这些将使用System.Collections.Concurrent命名空间限定范围。
- 在服务器端和客户端都可以使用的共享库中实现我需要的自定义线程安全集合类(或找到可靠的 Silverlight 线程安全集合实现)。
第一种方法允许我只实现我需要的 Silverlight 数据结构,但我担心会在我的 Silverlight 实现和 .NET 4 中实现的并发集合类之间引入差异。
第二种方法将在客户端和服务器端提供一致的并发收集实现,但感觉就像我在重新发明轮子一样。
在 Silverlight中实现ConcurrentDictionary和ConcurrentQueue类似乎不是很困难,但是 Silverlight 是否已经有一个很好采用的线程安全集合类库?