2011-05-02 13 views
9

Estoy desarrollando un marco de aplicación que será utilizado por Silverlight en el lado del cliente y .NET 4 en el lado del servidor. Internamente, el marco tiene estructuras de datos de diccionario y de cola en las que varios subprocesos accederán a las colecciones al mismo tiempo.¿Qué clases de colección de subprocesos están disponibles en Silverlight 4?

En el lado del servidor, me gustaría utilizar las clases ConcurrentDictionary y ConcurrentQueue disponibles en el espacio de nombres System.Collections.Concurrent. Estas clases son sin embargo no implementadas en Silverlight 4.

Los dos enfoques que estoy considerando son:

  1. Descompilar las clases ConcurrentDictionary y ConcurrentQueue y a poner en práctica en una biblioteca de clases Silverlight . Estos se definirán utilizando el espacio de nombres System.Collections.Concurrent.
  2. Aplicar las clases de recolección compatibles con el proceso de encargo que necesito en un biblioteca compartida (o encontrar un fiable Silverlight flujos seguros implementación de la colección ) que puede ser utilizado tanto en el lado del servidor y el cliente.

El primer enfoque permitiría que yo simplemente poner en práctica las estructuras de datos de Silverlight que necesito, pero preocuparse por la introducción de las disparidades entre mi aplicación Silverlight y las clases de colección concurrentes implementadas en .NET 4.

La segunda El enfoque proporcionaría una implementación consistente de cobro simultáneo tanto del lado del cliente como del servidor, pero parece que estaría reinventando la rueda.

No parece que implementar las clases ConcurrentDictionary y ConcurrentQueue en Silverlight sería muy difícil, pero ¿ya existe una biblioteca bien adoptada de clases de colección de subprocesos seguros para Silverlight?

+0

Edición de etiquetas, ya que esto todavía se aplica en SL5. –

Respuesta

6

Trate de hacer esto: http://ch.codeplex.com/

+0

Ese proyecto se ve muy bien, pero no parece tener una implementación 'ConcurrentQueue'. Aunque parece un buen código, definitivamente tendré una lectura de la fuente. –

+0

este es un proyecto obsoleto que no incluye ConcurrentQueue. Parece que está abandonado desde el lanzamiento de MS de System.Collections.Concurrent para .net4 Así que la pregunta aún está abierta. ¿Hay alguna buena implementación de ConcurrentQueue para SL5? Opuesto, ¿tuviste éxito con la descomposición? –

+0

Descompilar aunque teóricamente fue más difícil de lo que pensé originalmente (las clases BCL usadas no están disponibles en Silverlight). Puede ser más fácil escribir clases de colección desde cero, pero no he tenido tiempo de intentarlo. – Oppositional

2

La biblioteca de clases para Mono incluye implementaciones de las diversas colecciones concurrentes, y está disponible bajo la licencia MIT muy permisiva.

Cuestiones relacionadas