Soquetes assíncronos para múltiplos clientes em c #, práticas recomendadas? [fechadas]

Estou tentando entender melhor os soquetes TCP / IP em c #, pois quero me desafiar para ver se consigo criar uma infraestrutura MMO funcional (mundo do jogo, mapa, jogadores, etc.) apenas para fins educacionais, pois não tenho intenção de ser mais um daqueles "OMGZ iz vai fazer o meu r0x0r MMORPG que será melhor que WoW !!!", você sabe do que estou falando.

Enfim, eu queria saber se alguém pode lançar alguma luz sobre como alguém pode abordar o design desse tipo de sistema e que tipos de coisas são necessárias e o que devo prestar atenção.

Minha idéia inicial foi dividir o sistema em conexões separadas de cliente / servidor, com cada conexão (em sua própria porta) executando uma tarefa específica, como atualizar posições de jogadores / monstros, enviar e receber mensagens de bate-papo, etc. processando os dados com mais facilidade, porque nem sempre é necessário colocar um cabeçalho nos dados para saber quais informações o pacote contém.

Isso faz sentido e é útil ou estou apenas complicando as coisas?

suas respostas são muito apreciadas.