Estoy creando una aplicación con un servicio NetTcpBinding
y uno BasicHttpBinding
. A través de estos servicios, los clientes envían solicitudes a la aplicación: estas solicitudes se deben poner en un objeto Queue
, que es la cola de la solicitud entrante.Acceso concurrente a una cola por múltiples hilos
- Ambos servicios deben permitir llamadas simultáneas de los clientes.
- Esto significa que ambos servicios deben tener acceso concurrentemente a la cola para agregar las solicitudes recibidas.
- Además, otro hilo debe acceder a la cola para obtener y procesar las solicitudes.
Pude usar ConcurrencyMode.Multiple
y pude hacer tantas llamadas al mismo tiempo. Sin embargo, esto no garantiza un acceso concurrente a la cola. ¿Debo poner los dos ServiceHost
en dos hilos diferentes? Por ejemplo:
- El primer hilo dequeue y procesa las solicitudes en la cola.
- El segundo subproceso crea una instancia del servicio
NetTcpBinding
y encola nuevas solicitudes en la cola. Además, envía respuestas a través de la devolución de llamada. - El tercer hilo crea una instancia del servicio
BasicHttpBinding
y encola nuevas solicitudes en la cola.
Esta es mi idea. Como soy casi un novato, le agradecería que me diera algunos consejos. Tal vez debería comenzar a escribir tres subprocesos que acceden a la cola de forma simultánea: por el momento, los primeros dos subprocesos pueden enrutar solicitudes aleatorias a la cola, mientras que el tercer subproceso consume estas solicitudes.
¿Está obligado a Queue? ¿Puedes usar un ConcurrentQueue o un BlockingCollection? Este es un problema productor/consumidor bastante estándar. – Joe
@Joe: Por ahora debería usar colecciones que no sean seguras para subprocesos, como 'Queue',' Dictionary', ect .. – enzom83
¿Alguna razón en particular por qué? Simplemente estás reimplementando la rueda lo más probable. – Joe