C # Instant messaging
-
21-09-2019 - |
Domanda
Sto lavorando su un programma di messaggistica istantanea in C # (per l'apprendimento solo).
Voglio solo sapere se il mio modo è giusto o sbagliato.
Ho creato una classe Client whice contiene un NetworkStream e Lettura funzioni / scrittura.
Il server crea un nuovo thread per ogni cliente, il filo ascoltare per i nuovi messaggi.
Un modo migliore?
Soluzione
Non è necessariamente bisogno di generare un thread per ogni cliente. Mi piacerebbe indagare il design pattern Observer in quanto affronta il problema di pubblicazione-iscrizione, che è un buon modo per guardare un programma di messaggistica, in particolare se si desidera che più ascoltatori di un oratore. Ecco un buon punto di partenza: http://www.blackwasp.co.uk/Observer.aspx . Questo link discute il pattern Observer e cita la messaggistica istantanea: http://www.oodesign.com/observer -pattern.html.
È possibile che un approccio singolo thread può essere in grado di tenere il passo con un sacco di messaggi. A seconda di come si progetta classi che può essere utile per mettere intere conversazioni nel proprio thread. Si dovrebbe anche pensare di utilizzare le code per gestire i messaggi in entrata e in uscita, con i lettori di coda nella propria discussione pure.
suona come un progetto di divertimento.
Altri suggerimenti
Prova WCF. Qui è un esempio bello.