Opmerkingen over je model:
-waarom heb jij een aparte chat protocol? Niet dat ik hier problemen mee heb, maar is deze verantwoordelijk voor de vertaalslag socket->java java->socket?
-waarom heeft jouw chatserver en jouw chatchannel een user list? Ik snap dat er users op jouw server kunnen staan, en users in de chatchannel, maar je hebt nu een stuk redundantie in je systeem. Via de chatchannel kan je ook bij de users komen, en vanaf de chatserver kan je bij de chatchannels komen. Ik zie dus niet in waarom je ook nog eens van de chatserver direct bij de userlist wilt komen
Ik zou verder een beetje oppassen met allerlei collectie structuren zelf te gaan implementeren/extenden. Ik gebruik zelf collectie structuren uit het Collectionsframework zoals de List,Map, Set etc en maak zelf niet vaak aparte subclasses ervan aan.
-jij hebt 1 chat channel op je chatserver?
-Wat doen die servercontroller/serverview daar?? Wat is het nut ervan??
-ik snap het stuk vanaf de chatsession niet.
Verder moet je enorm oppassen met threads dat je geen concurrency problemen gaat krijgen zoals race problemen en deadlocks. Ik zou persoonlijk werken met een berichten systeem. Als sockets thread merkt dat er een bericht binnenkort, dan plaatst hij dat bericht in een verwerkingsqueue. Berichten heb je er in allerlei soorten en maten, zoals GebruikersTekstMessage, BanUserMessage, ShutDownServerMessage,NewUserMessage. Deze berichten plaats je in een queue, waarachter 1 thread op ligt te maffen mbv een semafoor. Het voordeel van deze aanpak is dat je aan de voorkant van je systeem een hele lading bericht genererende threads hebt die berichtjes in de berichtenqueue plaatst. Maar achter deze queue is nog maar 1 thread actief, dus afgezien van de berichtenqueue hoef je hoeft geen rekening meer te houden met concurrency control.
Hoe ben je trouwens van plan gebruikers in te lichten wanneer er een nieuw bericht is binnengekomen? Dat kan ik namelijk niet uit je model afleiden.
[
Voor 36% gewijzigd door
Alarmnummer op 24-04-2004 18:58
]