Sto creando un'applicazione con un servizio NetTcpBinding
e uno BasicHttpBinding
. Tramite questi servizi, i client inviano richieste all'applicazione: queste richieste devono essere inserite in un oggetto Queue
, ovvero la coda della richiesta in entrata.Accesso simultaneo a una coda da più thread
- Entrambi i servizi devono consentire chiamate concorrenti dai client.
- Ciò significa che entrambi i servizi devono accedere contemporaneamente alla coda per aggiungere le richieste ricevute.
- Inoltre, un altro thread deve accedere alla coda per ottenere ed elaborare le richieste.
ho potuto utilizzare ConcurrencyMode.Multiple
e tante chiamate potrebbero essere prese simultaneamente. Tuttavia, questo non garantisce un accesso concorrente alla coda. Devo inserire i due ServiceHost
in due thread diversi? Ad esempio:
- Il primo thread accelera e elabora le richieste in coda.
- Il secondo thread crea il servizio
NetTcpBinding
e accoda le nuove richieste nella coda. Inoltre, invia eventuali risposte tramite callback. - Il terzo thread crea il servizio
BasicHttpBinding
e accoda le nuove richieste nella coda.
Questa è la mia idea. Dato che sono quasi un principiante, sarei grato se potessi darmi qualche consiglio. Forse dovrei iniziare a scrivere tre thread che accedono contemporaneamente alla coda: per il momento i primi due thread possono accodare richieste casuali alla coda, mentre il terzo thread consuma queste richieste.
Sei in coda? Puoi usare ConcurrentQueue o BlockingCollection? Questo è un problema produttore/consumatore piuttosto standard. – Joe
@Joe: Per ora dovrei usare collezioni non thread-safe, come 'Queue',' Dictionary', ect .. – enzom83
Qualsiasi motivo particolare per cui? Probabilmente stai semplicemente reimplementando la ruota. – Joe