Question is: is having a control class in my client application useful, redundant, or wrong at all? How can I improve my classes structure?
É útil. Seu controlador, ctrClientManager, encapsula o sistema de mensagens no soquete; ele é responsável por criar o soquete, os fluxos de mensagens e outros encanamentos relacionados à mensagem. Cada classe de fronteira precisa dessa funcionalidade e levaria à duplicação de código se todas as classes de limite enviassem mensagens diretamente.
Melhora a manutenibilidade , porque se algo precisa ser alterado genericamente na comunicação entre cliente e servidor, você pode fazer isso em um lugar central (o controlador) ao invés de adaptar cada classe de fronteira .
Melhora a confiabilidade , porque a chance de haver um bug em uma parte central do código é menor do que a chance de haver um bug em uma das muitas cópias do mesmo código. / p>
A propósito, é recomendado aplicar o padrão MVC, onde cada visão (classe de fronteira) possui seu próprio controlador, para controlar a interação do usuário. Além disso, você deve ter o controlador de mensagens central, chamado ctrClientManager no seu exemplo.