Comunicação entre interface (Swing) e servidor de aplicação

Em um projeto, estou fazendo o seguinte:
Uso o pattern repository para acessar meus objetos de negócio. Os repositorios são definidos por interfaces, e eu tenho um factory para instancia-los.
No cliente, configuro o factory para instanciar os repositorios dinamicamente usando proxies. Implemento os proxies de forma a empacotar a chamada (isto é: qual interface está sendo usada, nome do método chamado e argumentos) e enviar tudo para um servlet.
No servidor, o servlet decodifica a chamada, usa o factory para obter uma implementação concreta do repositorio, chama o método via reflexão e empacota o resultado (ou alguma exceção que tenha sido lançada pelo método) e retorna para o cliente. O cliente decodifica isso e retorna a chamada.

Ficou bem simples de usar, e bem transparente.

E com a vantagem de que se o cliente precisar apenas de acesso local, pra uma única estação, eu posso configurar o factory no cliente de forma a instanciar as implementações reais ao invés dos proxies, e o resto do sistema continuaria funcionando da mesma forma…

Mas devido à minha inexperiencia, posso estar esquecendo algum detalhe que irá me causar uma boa dor de cabeça no futuro, ou talvez haja uma forma mais simples de implementar essa comunicação…

Comentarios…?

Onde você trata regras de negócio? No cliente?

No momento em lugar nenhum rsrs
Esse projeto está bem no inicio, eu me dediquei inicialmente a desenvolver essa comunicação apenas.
Mas a idéia é deixar algumas regras nos objetos de negócio, que vão ficar trafegando entre cliente/servidor, e tambem validar nos repositorios do servidor antes de persistir.